如何在应用程序频道中将直接消息作为应用程序发送给用户

时间:2017-12-11 13:16:30

标签: slack slack-api

如何通过user.id作为应用程序将松弛的消息直接发送给用户。 enter image description here

此应用程序具有范围:bot,channels:write,emoji:read,users:read,users:read.email

我发现如何仅以DM或webhooks的形式发送消息,但没有范围。有人有想法吗?

2 个答案:

答案 0 :(得分:15)

如果我理解您的问题,您希望在应用渠道中向用户发送直接消息,而不是标准的slackbot渠道。

为了做到这一点,你需要

  1. 您的应用需要bot范围和僵尸用户
  2. 使用im.open的用户从您的应用中打开直接消息频道。您将获得直接消息ID。
  3. 使用chat.postMessage向直接消息通道ID
  4. 发送消息

    确保使用Slack应用中的机器人访问令牌(而不是用户访问令牌)。

    bot范围为您提​​供了从机器人频道向用户打开和发送DM所需的所有权限。不需要其他范围。

    您还可以使用适用于所有类型的渠道类型的新conversations方法。

    另请参阅this question同一主题。

答案 1 :(得分:5)

有另一种方法可以解决此问题,如果您的应用程序使用机器人与Slack API配合使用,则该方法更合适。

您需要调用chat.postMessage API方法,并指定等于要发送消息的用户ID的channel参数,例如U0G9QF9C6为true。 重要细节-确保您正在使用漫游器访问令牌(了解here的获取方式)。

示例:

as_user

通过这种方式,您的消息将始终以机器人的名义(名称和图标)发送,并在应用程序通道(Slack侧栏中的YourAppChannel)中像直接消息一样显示。

与@ErikKalkoken的方法相比,您无需提前创建频道,因此,请跟踪其ID(根据您的需要而定是好是坏)。