Bot Framework v4 - разговор с инициатором бота - PullRequest
0 голосов
/ 05 марта 2019

Я разрабатываю бота для команд Microsoft, используя Bot Framework SDK v4 для NodeJS. Есть ли способ, которым бот может автоматически инициировать разговор в канале, а не пользователь, инициирующий разговор? Мой бот работает нормально, когда пользователь начинает разговор. Любые предложения о том, как я могу продолжить это?

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Вы можете начать новый разговор, используя соединитель Client в Botframework V4 и Teams Extensions V4.В nodejs вы найдете решение в одном из комментариев для этого выпуска Github .Для тех, кто ищет решение в C # , , есть подробное сообщение в блоге о том, как выполнить это в C # версии бот-фреймворка.

в nodejs:

var conversationReference = TurnContext.getConversationReference(context.activity)
connectorClient = await createConnectorClient(context)

var conversationParameters = {
isGroup: true,
bot: conversationReference.bot,
channelData: (await teamsCtx.getTeamsChannelData()),
tenantId: teamsCtx.tenant.id,
activity: MessageFactory.text("Queue Summary Placeholder") as Activity
} as ConversationParameters

await connectorClient.conversations.createConversation(conversationParameters)

In C #

ConnectorClient _client = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), await GetMicrosoftAppCredentialsAsync(turnContext), new HttpClient());
            var channelData = turnContext.Activity.GetChannelData<TeamsChannelData>();

            var conversationParameter = new ConversationParameters
            {
                Bot = turnContext.Activity.Recipient,
                IsGroup = true,
                ChannelData = channelData,
                TenantId = channelData.Tenant.Id,
                Activity = MessageFactory.Text(message)
            };
            var response = await _client.Conversations.CreateConversationAsync(conversationParameter);

0 голосов
/ 05 марта 2019

MS Teams называет это «Упреждающее сообщение» (примечание: Bot Framework обычно определяет «упреждающее сообщение» как отправку пользователю сообщения, не связанного с текущим диалогом, на который у вас есть ссылка. Команды смешивают несколько вещей с этим категория). Вы можете прочитать больше о , как использовать проактивные сообщения в официальных документах Команд. Или, более конкретно, создание канала разговора .

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

Примечание. Для команд MS пользователь или команда должны сначала добавить бота:

Боты могут создавать новые разговоры с отдельным пользователем Microsoft Teams, если у вашего бота есть пользовательская информация, полученная в результате предыдущего добавления в личном или групповом режиме. Эта информация позволяет вашему боту заблаговременно уведомлять их. Например, если ваш бот был добавлен в команду, он может запросить состав команды и отправлять пользователям отдельные сообщения в личных чатах, или пользователь может @mention другой пользователь, чтобы заставить бота отправить этому пользователю прямое сообщение.

Некоторые разработчики сталкиваются с ошибками 401: Unauthorized при использовании проактивного обмена сообщениями, особенно если бот по какой-либо причине был перезапущен и бот пытается повторно инициировать проактивное сообщение. Вы можете прочитать больше о предотвращении этого , используя trustServiceUrl из этого образца (это моя ветвь, которая используется для отправки запроса на извлечение для обновления Проактивного образца с информацией trustServiceUrl).

...