У меня есть бот, который работает в многопользовательском канале (Slack). Бот реагирует на триггер в канале. Как я могу ответить пользователю, который вызвал бота, в приватном разговоре с пользователем?Как начать приватный разговор в многопользовательском канале (botframework)?
ответ
Если вы просто ищете способ для бот должны отвечать только пользователю, вызов на боте, то вы можете попробовать использовать Слак-х ephemeral message type as documented here.
Из документации:
По умолчанию ответные сообщения, отправленные командам, будут отображаться только пользователю, выдавшему команду (мы называем эти «эфемерные» сообщения ). ... Установка response_type в ephemeral совпадает с , не включая тип ответа, и ответное сообщение будет быть видимым только для пользователя, который выдал команду.
В принципе, в групповом канале эфемерные сообщения отправляются только пользователю, выдающему команду, вместо того, чтобы транслироваться в группу.
В коде вашего бота вам просто нужно использовать 0 # custom channel message capability строителя ботов, чтобы изменить поле channelData
исходящего сообщения.
Например:
{
"type": "message",
"locale": "en-Us",
"channelId":"slack",
"conversation": { "id":"123123123123", "topic":"awesome chat" },
"from": { "id":"12345", "name":"My Bot"},
"recipient": { "id":"67890", "name":"Joe Doe"},
"channelData": {
"response_type": "ephemeral",
"text": "This is some message.",
"attachments": [
{
...
}
]
}
}
Где channelData
следует за Slack Message formatting guidelines.
Если вы ищете возможность для бота разрывать в совершенно новый 1: 1 разговор с пользователем, maybe take a look at the documentation for Starting Conversations и метод CreateDirectConversation()
.