Как отправлять прямые сообщения пользователям без веб-перехватчика?

Я переношу некоторый код из хипчата в слабину. Есть одна команда hipchat curl, которую я использовал для отправки dm пользователям, которых я хочу преобразовать в slack:

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"

Допустим, все, что у меня есть, это токен бота и адрес электронной почты учетной записи пользователя. Я хочу отправить сообщение (без настройки веб-перехватчика). Как я могу отправить сообщение этому пользователю? Какую точную структуру завитка я бы использовал?


person Alex Cohen    schedule 09.07.2019    source источник
comment
Похоже, вы просите нас сделать всю работу за вас. Поэтому я голосую за закрытие. Но для начала: вы хотите использовать конечную точку API chat.postMessage для отправки личных сообщений. Идентификатор пользователя как канал. Вот документ: api.slack.com/methods/chat.postMessage   -  person Erik Kalkoken    schedule 10.07.2019


Ответы (2)


@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
person Alex Cohen    schedule 10.07.2019

Вы не можете сделать это в одной команде.

  1. Получите идентификатор пользователя, используя users.lookupByEmail
  2. Убедитесь, что DM открыт с помощью dm.open (это также даст вам идентификатор канала для прямого сообщения с этим пользователем)
  3. Отправьте сообщение с помощью chat.postMessage
person Savageman    schedule 10.07.2019