Можем ли мы отправить сообщение другому боту, используя узел js в качестве сервера? - PullRequest
0 голосов
/ 04 июля 2019

Я занимаюсь разработкой проекта, в котором бот должен разговаривать с другим ботом в режиме slack и заставить его выполнить некоторые задачи.Я хотел знать, есть ли API или что-то, с помощью которого я могу отправить сообщение от одного бота другому, используя узел js.Один из них - dmy bot - это сервис виртуального агента.Как сделать так, чтобы виртуальный агент службы теперь слушал моего главного бота, который состоит из диалогового потока.

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете получить все сообщения, опубликованные в рабочем пространстве Slack (в определенных пределах), прослушивая события сообщений через API событий , например, message.channels , чтобы прослушивать все сообщения, опубликованные вобщедоступные каналы.

События сообщений включают полную копию сообщения, поэтому вы можете просто переслать эту копию другому боту, если хотите, например, добавив упоминание @bot и повторно разместив его в том же каналеили отправив прямое сообщение другому боту.

Однако - если другой бот распознает сообщение от вашего бота, во многом зависит от его дизайна.Сообщения от пользователей и ботов обычно выглядят по-разному, и многие боты будут игнорировать сообщения, не принадлежащие пользователю.

Пример сообщения от пользователя:

{
    "team": "T1234567",
    "text": "hi",
    "ts": "1516240585.000208",
    "type": "message",
    "user": "U12345678"
}

Пример сообщения от бота:

{
    "bot_id": "B12345678",        
    "subtype": "bot_message",
    "text": "Hi",
    "ts": "1516582987.000123",
    "type": "message",
    "username": "My Bot"
}

Есть одно исключение.Можно создать пользовательское сообщение с API, которое неотличимо от сообщения, размещенного на клиенте.Они должны быть подхвачены другим ботом, как и любое сообщение.

Вот как:

  • Используйте chat.postMessage для отправки сообщения
  • Используйте пользовательский токен (он же Oauth Access Token) вашего пользователя (не бот-токен) в вызове API
  • Установите для параметра API as_user значение true
...