【问题标题】:Slack: how to get directmessage channel nameSlack:如何获取直接消息频道名称
【发布时间】:2016-08-21 00:28:11
【问题描述】:

我正在创建一个斜杠命令,我想知道我正在执行命令的频道的用户名。

比如我有个同事叫@steve,我直接和steve聊天,我执行命令:

/mycommand

当我再次查看我的应用程序时,我发现 POST 请求只获得了这些值

[
    (u'user_id', u'U03NKXXXX'), 
    (u'channel_id', u'D03QBXXXX'), 
    (u'text', u''), (u'response_url', u'https://hooks.slack.com/commands/T03ARXXXX/3804397XXXX/nGUTg4zpQrMrRR07scI6XXXX'), 
    (u'team_id', u'T03ARXXXX'), 
    (u'channel_name', u'directmessage'), 
    (u'token', u'XXXXXXXXXXXXXXXXXXX'), 
    (u'command', u'/mycommand'), 
    (u'team_domain', u'myteam'), 
    (u'user_name', u'myusername')
]

我希望directmessage 是用户名(在我的示例中为steve),那么我怎样才能获得目标频道用户名?

【问题讨论】:

  • 感谢@smarx。另外请编辑您的评论,它指向 Dropbox 的松弛支持。应该是这个support link

标签: post request slack


【解决方案1】:

理论上,您可以从斜杠请求中获取频道 ID,并使用 conversations.info 获取当前频道的完整信息,其中包括直接消息对话的频道所有者。

但是,由于 Slack 的安全架构,您的令牌需要能够访问该直接通道。只有当它属于该直接消息通道的两个参与者之一时,它才能访问。

因此,除非您的应用拥有来自每个用户的令牌,否则您能做的最好的事情就是从 Slash 命令中获取用户 ID,该用户 ID 必须来自直接消息的两个参与者之一。

【讨论】:

  • 我不想识别发件人,而是直接消息频道名称。
  • 如我所说,私信频道的名称与用户的名称相同。因此,如果您与 John Doe 交谈,频道的名称是“John Doe”。虽然它与群聊不同,然后频道名称是参加群聊的所有用户的列表,并且他们也显示为群组下的官方私人频道(通常的直接消息聊天不会),所以我认为松弛 API 会也给你他们的渠道。所以我想我回答了你的问题,或者我在这里错过了什么?
  • 根据我的经验@ErikKalkoken 这不是真的。如果“Jane Doe”正在与“John Doe”通话,则“channel_name”始终保持“directmessage”。但是,“user_name”确实会根据发送消息的人而改变。因此,您将始终知道谁发送了消息,但很难找出收件人是谁。这将需要解码“channel_id”,这是 OP 所要求的。
  • @ScottCate 你是对的。我相应地更新了我的答案。
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 2018-07-14
  • 2021-04-06
  • 2017-10-16
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多