Slack API chat.postMessage介绍

2024-03-26 11:40

本文主要是介绍Slack API chat.postMessage介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Slack API chat.postMessage介绍

    • 一、方法功能介绍
    • 二、用前注意事项
    • 三、使用介绍
        • 3.1.请求参数介绍
        • 3.2.返回参数介绍
    • 四、场景示例
        • 4.1.消息设置为粗体、斜体,加表情
        • 4.2.消息增加附件链接,给附件添加颜色
        • 4.3.对消息添加回复功能,并且在其中@某个用户

官方文档链接: chat.postMessage

一、方法功能介绍

官方原译为:该方法将消息发布到公共通道、私有通道或直接消息/IM通道。
个人理解总结:
1.1.可以向指定的channel、用户等发送消息,消息中可以包含高亮标题、表情、图像、url连接、@等。
1.2.可以对某条已经发送过的消息进行回复、评论。
1.3.可以对发送块、附件,并且对块颜色进行设置。

二、用前注意事项

唯一标识:每条已发送的消息,都有它的唯一标识:ts。
消息大小:每条消息的字数限制在4000字。总字符在40000字符。超过则发送失败。
发送频率:允许一个应用程序每秒钟发布一条消息到一个特定的频道。超过这个频率则发送失败。
消息格式:可以设置粗体和斜体,但不能对文本设置颜色。

三、使用介绍

Slack API提供了四种调用该方法的使用方式。官方文档中声明了代码示例

TYPE请求方式请求头请求必填参数
HTTPPOSTapplication/x-www-form-urlencoded、application/jsontoken、channel
JavaScriptXapplication/x-www-form-urlencoded、application/jsontoken、channel
PythonXapplication/x-www-form-urlencoded、application/jsontoken、channel
JavaXapplication/x-www-form-urlencoded、application/jsontoken、channel
3.1.请求参数介绍
请求参数名含义示例
token(必填)token令牌xxxx-xxxxxxxxx-xxxx
channel(必填)通道的ID或者名称C1234567890
attachments附件[{“pretext”: “pre-hello”, “text”: “text-world”}]
blocks[{“type”: “section”, “text”: {“type”: “plain_text”, “text”: “Hello world”}}]
text格式化文本Hello world
as_usertrue:以用户形式发送;false:以BOT形式发送。默认为falsefalse
icon_emoji表情符号。(as_user设置为false时一起使用)📈
icon_url图像url。(as_user设置为false时一起使用)http://lorempixel.com/48/48
link_names查找并链接用户组true
metadatafalsefalse
mrkdwn是否禁用Slack标记解析,默认为启用false
parse更改处理消息的方式full
reply_broadcast与thread_ts一起使用,指示回复是否应该对通道或对话中的所有人可见。默认为false。true
thread_ts另一条消息的唯一标识ts值166993.133
unfurl_links是否展开文本的内容true
unfurl_media是否禁用媒体内容的展开false
username设置机器人的用户名。必须与as_user设置为false一起使用,否则将被忽略。My Bot
3.2.返回参数介绍

一般情况下只需关注"ok"、"ts"即可。“ts”=请求参数中的thread_ts

#成功示例
{"ok": true,"channel": "C123456","ts": "1503435956.000247","message": {"text": "Here's a message for you","username": "ecto1","bot_id": "B123456","attachments": [{"text": "This is an attachment","id": 1,"fallback": "This is an attachment's fallback"}],"type": "message","subtype": "bot_message","ts": "1503435956.000247"}
}
#失败示例,在error中有明确的错误提示,可以在官方文档中查找到对应的详细原因
{"ok": false,"error": "too_many_attachments"
}

四、场景示例

4.1.消息设置为粗体、斜体,加表情

目标:将部分文本消息设置为粗体,部分设置为斜体,且在最末尾加上微笑表情。
效果:在这里插入图片描述
实现方式:通过pycharm使用http方式实现效果。

import json
import requestsdef sendMessage2Slack(token,channel):#加粗用* *   斜体用_ _  表情用: :blocks = [{"type": "section","text": {"type": "mrkdwn","text": "将部分文本消息设置为 *粗体* ,部分设置为 _斜体_ ,且在最末尾加上微笑表情 :smile:"},"block_id": "text1"}]payload = {"blocks": blocks,"channel": channel}data = json.dumps(payload).encode("utf8")url = 'https://slack.com/api/chat.postMessage'header = {"Content-Type": "application/json; charset=utf-8", "Authorization": "Bearer " + token}response = requests.post(url, data=data, headers=header)print(response.text)if __name__ == "__main__":token ="****-*********-*********-*********" #Bot的Tokenchannel = 'C0*********' #频道IDsendMessage2Slack(token, channel)
4.2.消息增加附件链接,给附件添加颜色

目标:消息增加附件链接,并且为附件设置左侧垂直颜色条为绿色

效果:
实现方式:通过pycharm使用http方式实现效果。

import json
import requestsdef sendMessage2Slack(token,channel):attachments =[{"title": "附件的链接",   #给url设置一个名字,对应蓝色字体"title_link": "https://img0.baidu.com/it/u=3278409307,2082501724&fm=253&fmt=auto?w=130&h=170","text": "附件说明:我是一个图片",  #对附件进行解释,对应黑色字体"color": "#7CD197"      #给整个附件左侧垂直条添加为绿色}]payload = {"attachments": attachments,"channel": channel}data = json.dumps(payload).encode("utf8")url = 'https://slack.com/api/chat.postMessage'header = {"Content-Type": "application/json; charset=utf-8", "Authorization": "Bearer " + token}response = requests.post(url, data=data, headers=header)print(response.text)if __name__ == "__main__":token ="****-*********-*********-*********" #Bot的Tokenchannel = 'C0*********' #频道IDsendMessage2Slack(token, channel)

此时在slack中点击蓝色字体即可跳转到对应的url地址。

4.3.对消息添加回复功能,并且在其中@某个用户

目标:在消息中添加回复消息"我已经阅读了这条消息,请@test001 您仔细查看",在回复的消息中@某个用户

效果:在这里插入图片描述

前提条件:
4.3.1.需要拿到某条消息的thread_ts也就是ts也就是这条消息的唯一标识,例如我们在4.2步骤中成功发送消息后,slack会返回我们一串消息:
在这里插入图片描述
其中"ts":"1675388766.695329"就是代表已发送这条消息的唯一标识
4.3.2.需要拿到所要@用户的ID,slack api 暂时不支持@用户名。两种方式获取用户的ID,一种直接通过slack页面个人信息获取: slack 查看各种信息;另外一种是通过slack api中的users.list方法获取:链接: Slack API users.list介绍
实现方式:通过pycharm使用http方式实现效果。

import json
import requestsdef replyMsg(channel, slackToken, thread_ts, text):attachments = [{"text": text}]payload = {"channel": channel, "thread_ts": thread_ts, "attachments": attachments}data = json.dumps(payload).encode("utf8")url = 'https://slack.com/api/chat.postMessage'header = {"Content-Type": "application/json; charset=utf-8", "Authorization": "Bearer " + slackToken}response = requests.post(url, data=data, headers=header)ApplyReposen = json.loads(response.text)print("Slack API ApplyReposen ={}".format(ApplyReposen))if ApplyReposen["ok"]:print("[info]  Slack API Reply Message 成功!")else:print("[info]  Slack API Reply Message 失败!  detailMessage:{}".format(ApplyReposen))if __name__ == "__main__":token ="****-******-******-******" #Bot的Tokenchannel = 'C******' #频道IDthread_ts = "1675388766.695329"  #4.2步骤发送消息,slack返回后ts text = "我已经阅读了这条消息,请<@U04H******> 您仔细查看" #回复的消息  其中的”<@U04H******>“为@用户的格式,U04H******为用户的IDreplyMsg(channel, token, thread_ts , text )

这篇关于Slack API chat.postMessage介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848389

相关文章

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h