在Slack中获取DM消息的接收者



我有一个Slack应用程序,监听message事件与适当的用户和bot范围(应用程序具有im:readim:history权限等,代表用户)。事件有效负载看起来像这样:

{"client_msg_id": "...", 
"type": "message", 
"text": "...", 
"user": "<sender id>", 
"ts": "...", 
"team": "...", 
"blocks": [...], 
"channel": "D012345678 <example direct channel id>", 
"event_ts": "...", 
"channel_type": "im"}

是否有一种方法可以识别此消息的收件人id ?

  1. 我已经研究了conversations_membersAPI并使用了事件有效负载提供的channel_id。它抛出一个channel_not_found错误。我尝试使用应用程序用户所在的实际私有通道进行硬编码测试,它返回了预期的用户id列表。所以这个问题似乎与DM频道有关。
  2. 尝试使用用户id而不是通道id。

感谢您的帮助。

附加信息:

pip freeze | grep slack

slack-bolt==1.13.2
slack-sdk==3.16.1

对于任何面临同样问题的人,我请SlackBolt的开发人员参与进来,下面是他们的答案。综上所述,问题中提到的conversation_members是正确的起点。但是,如果您的用户令牌和bot令牌都具有im:read权限,则优先考虑bot令牌。将其替换为用户令牌,应该就没问题了。更详细的答案在讨论链接中。

最新更新