如何在没有Webhook的情况下直接向用户发送松弛消息?

时间:2019-07-09 22:53:52

标签: curl slack slack-api hipchat

我正在将一些代码从hipchat迁移到松弛状态。我曾经使用过一个hipchat curl命令,将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)。如何向该用户发送消息?我要使用的确切卷曲结构是什么?

2 个答案:

答案 0 :(得分:2)

您无法通过单个命令来完成它。

  1. 使用users.lookupByEmail
  2. 获取用户ID
  3. 确保使用dm.open打开了DM(这还将为您提供与该用户的直接消息的频道ID)
  4. 通过chat.postMessage发送消息

答案 1 :(得分:0)

@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