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

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

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