如何在没有 webhook 的情况下向用户发送直接松弛消息?
How to send direct slack messages to users without a webhook?
我正在将一些代码从 hipchat 迁移到 slack。我曾经使用一个 hipchat curl 命令向我想转换为 slack 的用户发送 dm:
msg='hello world'
curl --fail -d "$(jq -c -n --arg msg "${msg}" '{"message_format": "text", "message": $msg}')" \
-H "Content-Type: application/json" \
-X POST "https://my.hipchat.server.com/v2/user/$USERS_EMAIL/message?auth_token=$HIPCHAT_TOKEN"
假设我只有一个 bot token 和我要向其发送消息的用户帐户的电子邮件(没有设置 webhook)。我如何向该用户发送消息?我将使用的确切卷曲结构是什么?
你不能在一个命令中完成。
- 使用
users.lookupByEmail
获取用户 ID
- 确保使用
dm.open
打开 DM(这也会为您提供与该用户直接消息的频道 ID)
- 发送消息
chat.postMessage
@Savageman 基本上是正确的。唯一的区别是您需要使用 im.open
。这是我的工作代码:
msg='the text yall want to send'
user_id="$(curl -X GET -H "Authorization: Bearer $SLACK_TOKEN" \
-H 'Content-type: application/x-www-form-urlencoded' \
"https://slack.com/api/users.lookupByEmail?email=$EMAIL" | jq -r .user.id)"
channel_id="$(curl -X POST -H "Authorization: Bearer $SLACK_TOKEN" \
-H 'Content-type: application/x-www-form-urlencoded' \
"https://slack.com/api/im.open?user=$user_id" | jq -r .channel.id)"
curl -X POST -H "Authorization: Bearer $SLACK_TOKEN" \
-H 'Content-type: application/json' \
--data "$(jq -c -n --arg msg "${msg}" --arg channel "${channel_id}" '{"channel":$channel,"text": $msg}')" \
https://slack.com/api/chat.postMessage
我正在将一些代码从 hipchat 迁移到 slack。我曾经使用一个 hipchat curl 命令向我想转换为 slack 的用户发送 dm:
msg='hello world'
curl --fail -d "$(jq -c -n --arg msg "${msg}" '{"message_format": "text", "message": $msg}')" \
-H "Content-Type: application/json" \
-X POST "https://my.hipchat.server.com/v2/user/$USERS_EMAIL/message?auth_token=$HIPCHAT_TOKEN"
假设我只有一个 bot token 和我要向其发送消息的用户帐户的电子邮件(没有设置 webhook)。我如何向该用户发送消息?我将使用的确切卷曲结构是什么?
你不能在一个命令中完成。
- 使用
users.lookupByEmail
获取用户 ID
- 确保使用
dm.open
打开 DM(这也会为您提供与该用户直接消息的频道 ID) - 发送消息
chat.postMessage
@Savageman 基本上是正确的。唯一的区别是您需要使用 im.open
。这是我的工作代码:
msg='the text yall want to send'
user_id="$(curl -X GET -H "Authorization: Bearer $SLACK_TOKEN" \
-H 'Content-type: application/x-www-form-urlencoded' \
"https://slack.com/api/users.lookupByEmail?email=$EMAIL" | jq -r .user.id)"
channel_id="$(curl -X POST -H "Authorization: Bearer $SLACK_TOKEN" \
-H 'Content-type: application/x-www-form-urlencoded' \
"https://slack.com/api/im.open?user=$user_id" | jq -r .channel.id)"
curl -X POST -H "Authorization: Bearer $SLACK_TOKEN" \
-H 'Content-type: application/json' \
--data "$(jq -c -n --arg msg "${msg}" --arg channel "${channel_id}" '{"channel":$channel,"text": $msg}')" \
https://slack.com/api/chat.postMessage