Прямая отправка уведомлений Bot Framework C #

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

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

Спасибо.


person Community    schedule 09.07.2018    source источник
comment
Этот вопрос не соответствует рекомендациям по переполнению стека. Но чтобы ответить на ваш вопрос, взгляните на Signalr   -  person johnny 5    schedule 09.07.2018
comment
send and push a notification to all those users if needed Привет, @ saravan13, вы хотите отправлять уведомления / сообщения определенным пользователям через бота? Или просто хотите реализовать функцию веб-уведомлений в реальном времени, чтобы отправлять уведомления определенным подключенным пользователям?   -  person Fei Han    schedule 11.07.2018


Ответы (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);        
    }
person Eric Dahlvang    schedule 13.07.2018