bots - 如何从反应添加事件中获取线程回复的内容?
问题描述
我正在构建一个松弛的常见问题解答应用程序,它使用消息反应来收集问题的最佳答案。reaction_added
我的计划是通过使用事件获取 TS 属性,然后使用conversations.history
获取消息内容的方法来保存任何具有积极反应的 Slack 消息。
这适用于父级或非线程消息,但它不适用于线程内的回复消息。由于某种原因,该conversations.history
方法在使用线程回复的 TS 时返回不相关的消息。
我检查了 Slack APIconversations.history
方法文档以查看是否以任何特殊方式处理回复。我查看了conversations.replies
方法以查看它是否有帮助,但由于reaction_added
事件只是为消息提供了一个 TS id,并且没有可以与该conversations.replies
方法一起使用的 thread_ts 值。
我正在使用螺栓框架。这是尝试使用reaction_added
事件 withconversations.history
方法获取消息内容的代码片段:
app.event('reaction_added', async ({ event, context, say }) => {
try {
const result = await app.client.conversations.history({
token: process.env.SLACK_USER_TOKEN,
channel: event.item.channel,
latest: event.item.ts,
limit: 1,
inclusive: true
});
save(`${result.messages[0].text}`);
}
catch (error) {
console.error(error);
}
});
预期结果:发布反应的线程回复的消息内容
实际结果:slack频道最新消息的消息内容
解决方案
我不确定它最近是否更改或我误读了文档,但conversations.replies
API 端点不需要thread_ts
包含父线程时间戳的值来检索线程回复。
event.item.ts
事件提供的值reaction_added
足以检索添加了反应的回复的消息内容。
因此,要获取添加了反应的消息的消息内容,您可以将我原始问题中的代码更新为:
app.event('reaction_added', async ({ event, context, say }) => {
try {
const result = await app.client.conversations.replies({
token: process.env.SLACK_USER_TOKEN,
channel: event.item.channel,
ts: event.item.ts
});
save(`${result.messages[0].text}`);
}
catch (error) {
console.error(error);
}
});
推荐阅读
- javascript - 如何验证输入是否包含javascript中数组项中的一个子字符串?
- php - Foreach 循环只返回第一个结果
- python - 在 OpenGL 中使用纹理数组对球体进行纹理处理
- python - 我很难理解这个数组索引的含义:img[0: lengthList[i], widthList[i]: widthList[i+1]] = outPut
- python - 错误 #15:正在初始化 libiomp5md.dll,但发现 libiomp5md.dll 已经初始化
- powerbi - 如何使用 measure 和 Calculate 编写 if 语句?
- react-native - 通知中未显示 Expo Android 徽章编号
- javascript - 是否可以同时向单个 API 发送两次或多次发布请求?
- android - Android NDK - 如何从本机代码中获取表面
- php - PHP FPM Worker 问题(无响应)