Альтернатива для OnEventActivityAsyn c () в новом шаблоне Virtual Assistant - PullRequest
1 голос
/ 14 февраля 2020

Я использую версию шаблона Virtual Assistant на основе SDK версии 4.6, в которой реализована обработка событий с использованием OnEventActivityAsyn c (). Я использую это для реализации упреждающих уведомлений. Однако после последнего обновления шаблона Virtual Assistant Solution структура MainDialog изменилась, и я больше не вижу операций с событиями, которые обрабатываются. Есть ли альтернатива в новом шаблоне, которая позволяет мне обрабатывать события, аналогичные методу OnEventActivityAsyn c () в старом шаблоне? Моя текущая настройка выглядит следующим образом:

protected override async Task OnEventActivityAsync(DialogContext innerDc, CancellationToken cancellationToken = default)
    {
        var ev = innerDc.Context.Activity.AsEventActivity();
        var value = ev.Value?.ToString();

        switch (ev.Name)
        {
            ....
            case Events.Broadcast:
                {
                    var eventData = JsonConvert.DeserializeObject<EventData>(innerDc.Context.Activity.Value.ToString());

                    var proactiveModel = await _proactiveStateAccessor.GetAsync(innerDc.Context, () => new ProactiveModel());

                    var hashedUserId = MD5Util.ComputeHash(eventData.UserId);

                    var conversationReference = proactiveModel[hashedUserId].Conversation;

                    await innerDc.Context.Adapter.ContinueConversationAsync(_appCredentials.MicrosoftAppId, conversationReference, ContinueConversationCallback(innerDc.Context, eventData.Message), cancellationToken);
                    break;
                }
        }
    }

Весь этот метод отсутствует в новой версии шаблона, поэтому есть ли другой способ реализовать это с новым шаблоном VA?

1 Ответ

1 голос
/ 19 февраля 2020

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

Вы можете обрабатывать свои события, которые не должны обрабатываться стеком диалога, в DefaultActivityHandler. Метод OnEventActivityAsyn c () .

Если ваше событие должно обрабатываться стеком диалогов, например, событием TokenResponse, вы можете обработать его в MainDialog.RouteStepAsyn c () метод.

Документация будет вскоре обновлена ​​с учетом вышеуказанных изменений.

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