W następującym kodzie obiekt TurnContext jest wymagany do pobierania podstawowego stanu botu z kosmosu i zapisz go z powrotem -

//Get the TurnContext from the Dictionary
TurnContextReferences.TryGetValue(sessionStateChangedEventData.SessionId, out ITurnContext turnContext);
if (turnContext != null)
{
    var conversationData = await BotStateAccessors
                      .ConversationStateAccessor
                      .GetAsync(turnContext, () => new ConversationStateDataModel());
    if (!conversationData.LiveAgentChatClosed)
    {
        conversationData.LiveAgentChatClosed = true;
        await BotStateAccessors.ConversationStateAccessor.SetAsync(turnContext, conversationData);
        await BotConversationState.SaveChangesAsync(turnContext);
    }
}

Czy jest jakiś możliwy sposób, aby osiągnąć to samo bez korzystania z TurnContext?

0
Amit C 27 październik 2020, 10:05

1 odpowiedź

Najlepsza odpowiedź

Wszystkie informacje potrzebne do uzyskania dostępu do stanu BOT i wysyłają wiadomości do użytkownika, jest w odniesieniu do konwersacji. Możesz zbudować kontekst zwrotny z zapisanego odniesienia do rozmowy za pomocą metody ContinueConversationAsync. Możesz zobaczyć, jak to zrobić w Komunikaty proaktywne Próbka:

await ((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, BotCallback, default(CancellationToken));

Kontekst zwrotny nie ma istnieć poza jego związanym obrotem. Powinieneś oszczędzać referencje konwersacji zamiast kontekstów.

0
Kyle Delaney 3 listopad 2020, 00:11