Мы разрабатываем бот Slack, и одна из команд sla sh должна - при использовании в прямом канале сообщений - иметь возможность определять Slack-идентификатор целевого пользователя в прямом канале сообщений. Так, например, представьте 3 Slack пользователей User1, User2 и User3. Если Пользователь1 будет делать /someaction
в своем канале прямых сообщений с Пользователем3, сервер Slack будет публиковать следующие атрибуты для нашей реализации команды /someaction
:
token
team_id
team_domain
channel_id
channel_name=directmessage
user_id
user_name=User1
command=%2Fsomeaction
text=
response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2/........
trigger_id=....
user_id/user_name
- те, что из человек дал команду, так что User1 в этом случае.
Чтобы получить user_id
пользователя 3, мы используем conversations.info
API, где мы передаем channel_id
, предоставленный команде /someaction
выше.
Теперь проблема в том, что когда Пользователь1 запускает команду в Slack, она работает, но когда Пользователь2 делает это (в своем прямом канале сообщений с Пользователем3), она не работает. Мы заметили, что предоставленный channel_id отличается между вызовами User1 и User2, что имеет смысл, поскольку оба имеют свой собственный прямой канал сообщений с User3
Ответ от User2
curl https://slack.com/api/conversations.info?token=TOKEN\&channel=D0123456G&pretty=1
{
"ok": false,
"error": "channel_not_found"
}
Вопросы:
Почему это работает для User1, но не для User2? Единственное, что мы можем себе представить, это то, что User1 развернул приложение Slack в рабочей области Slack. Но это не должно влиять на это поведение или оно должно быть?
Есть ли другой способ получить идентификатор пользователя целевого пользователя прямого канала сообщений на основе channel_id этого прямого канала сообщений ?