python - 使用 Slack Python Webhook API 回复线程
问题描述
我正在创建一个 Python 脚本来将消息发送到松弛通道。消息本身可以很好地传递,但是当我尝试启动一个线程并向该线程发送回复时,我无法让它工作。线程回复显示为新的父消息。
我正在使用https://github.com/satoshi03/slack-python-webhook上的 slack-python-webhook 模块
import slackweb
import json
slack = slackweb.Slack(
url="https://hooks.slack.com/services/XXXX/XXXX/XXXXXX")
attachment = [{"text": "This is TEXT",
"ts": "1564629129"
}]
print(json.dumps(attachment))
slack.notify(attachments=attachment)
attachment = [{"text": "This is Thread REPLY",
"thread_ts": "1564629129",
"thread_ts": "1564629130"
}]
print(json.dumps(attachment))
slack.notify(attachments=attachment)
我想知道上面的代码片段需要更改什么,以便第二条消息将显示为线程回复。
解决方案
您的代码将不起作用,因为 webhook 不支持线程。如果您想回复线程,您需要使用 API 方法来发布消息(例如chat.postMessage
)。
这意味着您可能还需要使用不同的库,因为您的问题中提到的库似乎只支持 webhook。
你的语法也不正确。thread_ts
不是附件的属性,而是 API 方法的参数,例如channel
.
我建议查看slackclient。它是 Slack 的官方 Python 库,完全支持所有 API 方法,包括。线程。
以下是使用 slackclient 回复线程的方法:
import slack
import os
# init slack client with access token
client = slack.WebClient(token=os.environ['SLACK_TOKEN'])
# reply to a thread
response = client.chat_postMessage(
channel="general",
text="This is a reply",
thread_ts="1561764011.015500"
)
assert response["ok"]
print(response)
推荐阅读
- package - Salesforce 包中的个人资料
- node.js - QueryFailedError:ER_NONUNIQ_TABLE:不是唯一的表/别名:'notes'
- android - 当我将图标添加到edittext时,提示从中心转移?怎么可能对齐?
- python - Pandas df.info() 中的“0 to ...”是什么意思?
- jenkins - Jenkins 管理 Google Kubernetes Engine 集群中的节点和云
- reactjs - Heap.push 不是函数
- python - 如何使用 nltk.Text findall() API 来确定客户端逻辑中的成功和失败
- ipaf - 在 PAF 循环标记中使用 break 函数时遇到错误
- c# - 如何通过添加垂直轴和水平轴的输入来进行 2D 精灵移动以进行变换
- python - 在循环中使用 lambda 函数运行 df.apply