如何从反应添加事件中获取线程回复的内容?

Posted

技术标签:

【中文标题】如何从反应添加事件中获取线程回复的内容?【英文标题】:How to get a thread reply's content from reaction_added event? 【发布时间】:2020-02-16 06:11:10 【问题描述】:

我正在构建一个松弛的常见问题解答应用程序,它使用消息反应来收集问题的最佳答案。我的计划是通过使用reaction_added 事件获取TS 属性,然后使用conversations.history 方法获取消息内容,来保存任何具有积极反应的Slack 消息。

这适用于父级或非线程消息,但它不适用于线程内的回复消息。由于某种原因,conversations.history 方法在使用线程回复的 TS 时会返回不相关的消息。

我检查了 Slack API conversations.history 方法文档以查看是否以任何特殊方式处理回复。我查看了conversations.replies 方法,看看它是否有帮助,但由于reaction_added 事件只是为消息提供了一个TS id,并且没有可以与conversations.replies 方法一起使用的thread_ts 值。

我正在使用螺栓框架。这是尝试使用reaction_added 事件和conversations.history 方法获取消息内容的代码的sn-p:

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频道最新消息的消息内容

【问题讨论】:

I want to find thread message and delete it with slack-api的可能重复 不同之处在于,当您拥有reaction_added 事件时,此问题专门寻求有关查找线程消息的建议,该事件未提供查找线程消息所需的thread_ts 属性。 你是对的。只需重复您的示例,reaction_added 事件不包括 thread_ts 属性,您需要在线程中识别相关消息。对我来说,这似乎是一个缺失的功能,所以我建议作为支持请求向 Slack 开放。 谢谢,我做到了。我也会继续寻找解决方法,如果我发现了什么,我会在这里发布。 我也就此联系 Slack 支持。我认为添加它对他们来说是微不足道的,所以我希望他们可以。 【参考方案1】:

我不确定它最近是否更改或我误读了文档,但conversations.replies API 端点不需要包含父线程时间戳thread_ts 值来检索线程回复。

reaction_added 事件提供的event.item.ts 值足以检索添加了反应的回复的消息内容。

因此,要获取添加了反应的消息的消息内容,您可以将我原始问题中的代码更新为:

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);
  
);

【讨论】:

以上是关于如何从反应添加事件中获取线程回复的内容?的主要内容,如果未能解决你的问题,请参考以下文章

使用Element的el-carousel轮播图组件添加点击事件获取点击内容

使用Element的el-carousel轮播图组件添加点击事件获取点击内容

a-table里添加不了点击事件

discord.js 如何从 fetchMessage 事件中获取“反应用户”列表?

如何从通过 MKAnnotationView 添加的按钮获取点击事件

如何从 jQuery 中的“滚动”事件中取消绑定所有先前添加的事件? [复制]