Bot Framework отправляет сообщение другому пользователю - PullRequest
0 голосов
/ 14 июля 2020

У меня есть бот, который передает работу оператору-человеку. Когда оператор присоединяется, я получаю событие в событии OnEventActivityAsyn c. В этот момент я хочу отправить клиенту сообщение о том, что он подключен к оператору. Как изменить TurnContext / Activity для отправки сообщения клиенту?

Не совсем уверен, какую часть кода разместить. (невозможно опубликовать весь проект из-за политики компании)

protected override async Task OnEventActivityAsync(ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
{
    if (turnContext.Activity.Name == "webchat/agentJoin")
    {
        _logger.LogInformation("webchat/agentJoin");        
        //Database stuff here 
        await turnContext.SendActivityAsync(MessageFactory.Text("Connected to customer"), cancellationToken);
        
        //How do I send a message to the client here? turnContext sends the message to the agent, not client

    }
}

Ответы [ 2 ]

0 голосов
/ 17 июля 2020

Благодаря предложению Мика я еще раз взглянул на проактивные сообщения. Я смотрел на это раньше, но так и не смог заставить его работать из-за «Несанкционированных» ошибок. Теперь я заметил, что есть исправление для этой конкретной проблемы c.

Код основан на документации MS для отправки упреждающих уведомлений: Отправлять упреждающие уведомления

И что Я делаю это:

turnContext.Adapter.ContinueConversationAsync(_appId, conversationReference, BotCallback, default(CancellationToken));

private async Task BotCallback(ITurnContext turnContext, CancellationToken cancellationToken)
{
    // If you encounter permission-related errors when sending this message, see
    // https://aka.ms/BotTrustServiceUrl
    await turnContext.SendActivityAsync("You're now connected to: Ted");
}
0 голосов
/ 14 июля 2020

См. Определение протокола в экспериментах по ссылке ниже на GitHub:

https://github.com/microsoft/BotBuilder-Samples/tree/master/experimental/handoff-library

Заводские методы

SDK будет включать следующий заводской метод для помощи в создании указанных событий:

C#:

namespace Microsoft.Bot.Builder 

{ 

    public static class EventFactory 

    { 

        public static IEventActivity CreateHandoffInitiation( 

            ITurnContext turnContext, 

            object handoffContext, 

            Transcript transcript); 

 

        public static IEventActivity CreateHandoffResponse( 

            ConversationAccount Conversation, 

            string code); 

 

        public static IEventActivity CreateHandoffCompleted( 

            ConversationAccount Conversation, 

            string code, 

            Transcript transcript); 

    } 

} 

Коды протокола определяются следующим образом:

namespace Microsoft.Bot.Schema 

{ 

    public static class HandoffCodes 

    { 

        public const string Accepted = "accepted"; 

        public const string Failed = "failed"; 

        public const string TimedOut = "timedOut"; 

        public const string EndOfConversation = "endOfConversation"; 

        public const string TransferBack = "transferBack"; 

    } 

} 
...