Bot Framework Directline Отправить уведомление C#

Я собрал бота, используя бот-фреймворк, и интегрировал его в мой сайт по прямой линии Я также начал с создания портала администратора, где администратор может взглянуть на аналитику ботов.

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

Благодарю.

1 ответ

Упреждающие сообщения - это термины для "push-уведомлений" в пространстве Bot Framework. Некоторая документация может быть найдена здесь: https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-proactive-messages?view=azure-bot-service-3.0

Концептуально, разработчик бота где-то сохраняет ConversationReference, который позже используется для отправки Проактивного сообщения.

Сохраните куда-нибудь разговор (ссылка на кэш, базу данных и т. Д.):

var conversationReference = message.ToConversationReference();

Используйте эту ссылку на разговор, чтобы отправить пользователю Проактивное сообщение:

var message = JsonConvert.DeserializeObject<ConversationReference>(conversationReference).GetPostToBotMessage(); 
    var client = new ConnectorClient(new Uri(message.ServiceUrl));

    // Create a scope that can be used to work with state from bot framework.
    using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
    {
        var botData = scope.Resolve<IBotData>();
        await botData.LoadAsync(CancellationToken.None);

        // This is our dialog stack.
        var task = scope.Resolve<IDialogTask>();

        // Create the new dialog and add it to the stack.
        var dialog = new WhateverDialog();
        // interrupt the stack. This means that we're stopping whatever conversation that is currently happening with the user
        // Then adding this stack to run and once it's finished, we will be back to the original conversation
        task.Call(dialog.Void<object, IMessageActivity>(), null);

        await task.PollAsync(CancellationToken.None);

        // Flush the dialog stack back to its state store.
        await botData.FlushAsync(CancellationToken.None);        
    }
Другие вопросы по тегам