代码之家  ›  专栏  ›  技术社区  ›  Koloritnij

如何在应用程序频道中以应用程序的形式向用户发送直接消息

  •  30
  • Koloritnij  · 技术社区  · 7 年前

    如何能够通过用户直接向用户发送消息。id作为应用程序。 enter image description here

    此应用程序的作用域为:bot、channels:write、emoji:read、users:read、users:read。电子邮件

    我发现了如何仅以DM或webhooks的形式发送消息,但这并没有范围。有人知道吗?

    4 回复  |  直到 7 年前
        1
  •  46
  •   knutole    3 年前

    如果我正确理解您的问题,您希望通过应用程序频道而不是标准频道向用户发送直接消息 slackbot 频道

    为了做到这一点,你需要

    1. 你的应用程序需要 bot 范围和机器人用户
    2. 使用打开应用程序中的直接消息频道 conversations.open . 你会得到一个直接消息ID。
    3. 使用发送消息 chat.postMessage 到直接消息通道ID

    确保使用 bot访问令牌 (不是用户访问令牌)。

    这个 机器人程序 scope为您提供从您的bot频道打开DMs并将其发送给用户所需的所有权限。不需要其他作用域。

    您也可以使用新的 conversations 方法,这些方法对所有类型的通道都适用。

    另请参见 this question 在同一个话题上。

        2
  •  27
  •   Ruslan Isay    6 年前

    有另一种方法可以解决这个问题,如果你的应用程序使用机器人来操作Slack API,那么这种方法更合适。

    你需要打电话 chat.postMessage API方法并指定 channel 参数等于用户ID(例如。 U0G9QF9C6 )您想发送消息并 as_user 论点是正确的。 重要细节-确保您正在使用机器人访问令牌(了解 here 如何获得)。

    例子:

    curl -X POST "https://slack.com/api/chat.postMessage" -H  "accept: application/json" -d token=BOT_ACCESS_TOKEN -d channel=U0G9QF3C6 -d text=Hello -d as_user=true
    

    这样,您的消息将始终代表您的机器人(名称和图标)发送,并将像直接消息一样显示在应用程序频道(松弛侧栏中的YourAppChannel)中。

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

        3
  •  2
  •   Dima Bondarenko    3 年前

    对于那些仍在寻找详细答案的人:

    • 首先你需要打电话给这个 endpoint . 您需要使用bot令牌进行调用,并向用户提供要发送消息的用户的param值。 您还需要设置 prevent_creation return_im 为真。 例子:
    Authorization: Bearer {your_bot_token}
    {
      "users": "U12345679",
      "prevent_creation": true,
      "return_im": true
    }
    
    • 之后,您将拥有要向其发送消息的频道id。 响应示例:
    {
        "ok": true,
        "no_op": true,
        "already_open": true,
        "channel": {
            "id": "D123456789", <-- this is your id
            ...
            "unread_count": 0,
            "unread_count_display": 0,
            "is_open": true,
            "priority": 0
        }
    }
    
    • 然后使用相同的机器人令牌和用户id,在 this one

    Blockquote我一直得到{“ok”:false,“error”:“not\u in\u channel”}我需要手动将机器人添加到频道吗?? Abhijeet Bajracharya 20年2月4日8:04

    您需要获得允许发送此类消息的范围

        4
  •  0
  •   Akos    3 年前

    没有必要使用对话。信息,您可以使用用户发布消息(DM)。列出端点并获取用户id,然后您可以在聊天中使用该id。邮件后处理