Bot Framework v4 - разговор с инициатором бота

Как насчет расширения jquery для этого?

   (function () {
        var ev = new $.Event('remove'),
            orig = $.fn.remove;
        var evap = new $.Event('append'),
           origap = $.fn.append;
        $.fn.remove = function () {
            $(this).trigger(ev);
            return orig.apply(this, arguments);
        }
        $.fn.append = function () {
            $(this).trigger(evap);
            return origap.apply(this, arguments);
        }
    })();
    $(document).on('append', function (e) { /*write your logic here*/ });
    $(document).on('remove', function (e) { /*write your logic here*/ ) });

Jquery 1.9+ построил поддержку для этого (я слышал, что не тестировался).

0
задан Pratik Mathur 5 March 2019 в 16:55
поделиться

2 ответа

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

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

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

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

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

0
ответ дан mdrichardson - MSFT 5 March 2019 в 16:55
поделиться

Вы можете начать новый разговор, используя соединитель 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)

В 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
ответ дан Damien Doumer 5 March 2019 в 16:55
поделиться