我的使用 Slack 的 BotFramework 机器人如何忽略除直接通道之外的所有通道上的消息?

How can my Slack-using BotFramework bot ignore messages on all channels except direct?

我知道这似乎以前有人问过 - 但我知道你可以通过检查 activity.Conversation.IsGroup 找出有人在 Slack 频道上聊天 - 我成功地使用了这个。

只要频道有两个以上成员就没问题!但是有一个恼人的边缘情况,例如,新创建的频道或仅包含两个成员的频道必须经历机器人尝试响应那里的所有消息,直到至少 3 个成员被添加到频道。

有没有人想出一个方便的方法来检测这个?我检查了 Activity JSON 直接发送给 app/bot 用户的消息和发送给频道的消息,但是没有明显的方法可以区分频道消息和直接-给机器人用户的消息。

如果我没记错的话,在 Slack 中频道和直接消息的命名是有区别的:这种区别可以在 Conversation.Id 字段中看到:

示例:

  • 对于频道:il 看起来像 Bxxxxxxxx:Tyyyyyyyy:Czzzzzzzz
  • 用于您和 A 人之间的直接消息传递:Bxxxxxxxx:Tyyyyyyyy:Daaaaaaaa
  • 与多人直接发送消息:Bxxxxxxxx:Tyyyyyyyy:Gbbbbbbbb

其中:

  • Bxxxxxxxx 是您的机器人 Slack 的 ID
  • Tyyyyyyyy 是您的 Slack 工作区 ID
  • Czzzzzzzz为当前频道Slack的ID(使用网页版Slack时在url可见)

您将能够通过检查对话 ID 来检测您的案例