如何在应用程序频道中将直接消息作为应用程序发送给用户
How to send direct messages to a user as app in app channel
如何通过 user.id 作为应用程序直接向用户发送消息。
此应用程序具有范围:bot,channels:write,emoji:read,users:read,users:read.email
我找到了如何仅作为 DM 或通过 webhook 发送消息,但没有适用范围。有人有想法吗?
如果我对你的问题的理解正确,你想在应用程序渠道而不是标准 slackbot
渠道中向用户发送直接消息。
为此你需要
- 您的应用需要
bot
范围和机器人用户
- 从您的应用程序与
conversations.open
的用户建立直接消息渠道。您会得到一个直接消息 ID。
- 发送带有
chat.postMessage
的消息到直接消息频道 ID
确保使用您的 Slack 应用中的 bot 访问令牌(而不是用户访问令牌)。
bot
范围为您提供从机器人频道打开和发送 DM 给用户所需的所有权限。不需要其他范围。
您还可以使用新的 conversations
方法,该方法适用于所有类型的渠道以执行相同的操作。
另请参阅有关同一主题的 。
有另一种方法可以解决这个问题,如果您的应用程序使用机器人与 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
通过这种方式,您的消息将始终代表您的机器人(名称和图标)发送,并且会像直接消息一样显示在应用程序频道(Slack 侧边栏中的 YourAppChannel)中。
与@ErikKalkoken 的方法相比,您无需提前创建频道,因此可以跟踪其 ID(可能好也可能坏,具体取决于您的需要)。
对于那些仍在寻找详细答案的人:
- 首先你需要调用这个endpoint。
您需要使用机器人令牌进行调用,并向用户提供您要发送消息的用户的参数值。
您还需要将
prevent_creation
和 return_im
设置为 true。
示例:
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 I keep getting {"ok":false,"error":"not_in_channel"} do i need to manually add the bot to a channel?? –
Abhijeet Bajracharya
Feb 4 '20 at 8:04
您需要获得允许发送这样的消息的范围
无需使用 conversation.info,您可以 post 消息 (DM),通过使用 users.list 端点并获取用户 ID,然后您可以使用在 chat.postMessage
如何通过 user.id 作为应用程序直接向用户发送消息。
此应用程序具有范围:bot,channels:write,emoji:read,users:read,users:read.email
我找到了如何仅作为 DM 或通过 webhook 发送消息,但没有适用范围。有人有想法吗?
如果我对你的问题的理解正确,你想在应用程序渠道而不是标准 slackbot
渠道中向用户发送直接消息。
为此你需要
- 您的应用需要
bot
范围和机器人用户 - 从您的应用程序与
conversations.open
的用户建立直接消息渠道。您会得到一个直接消息 ID。 - 发送带有
chat.postMessage
的消息到直接消息频道 ID
确保使用您的 Slack 应用中的 bot 访问令牌(而不是用户访问令牌)。
bot
范围为您提供从机器人频道打开和发送 DM 给用户所需的所有权限。不需要其他范围。
您还可以使用新的 conversations
方法,该方法适用于所有类型的渠道以执行相同的操作。
另请参阅有关同一主题的
有另一种方法可以解决这个问题,如果您的应用程序使用机器人与 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
通过这种方式,您的消息将始终代表您的机器人(名称和图标)发送,并且会像直接消息一样显示在应用程序频道(Slack 侧边栏中的 YourAppChannel)中。
与@ErikKalkoken 的方法相比,您无需提前创建频道,因此可以跟踪其 ID(可能好也可能坏,具体取决于您的需要)。
对于那些仍在寻找详细答案的人:
- 首先你需要调用这个endpoint。
您需要使用机器人令牌进行调用,并向用户提供您要发送消息的用户的参数值。
您还需要将
prevent_creation
和return_im
设置为 true。 示例:
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 I keep getting {"ok":false,"error":"not_in_channel"} do i need to manually add the bot to a channel?? – Abhijeet Bajracharya Feb 4 '20 at 8:04
您需要获得允许发送这样的消息的范围
无需使用 conversation.info,您可以 post 消息 (DM),通过使用 users.list 端点并获取用户 ID,然后您可以使用在 chat.postMessage