Microsoft Botframework V4 Virtual Assistant Azure AD Аутентификация - PullRequest
0 голосов
/ 27 января 2019

Я скачал, настроил и развернул проект с открытым исходным кодом Microsoft Virtual Assistant от GitHub здесь: https://github.com/Microsoft/AI

Я хочу начать с навыка календаря и настроить все.Когда я запрашиваю текущие записи календаря, в эмуляторе botframework отображается запрос на аутентификацию, и я могу аутентифицироваться с моей учетной записью Azure AD.

После этого наступает тишина ...

В файле SummaryDialog.cs в CalendarSkill есть определение WaterfallStep, например:

    var showSummary = new WaterfallStep[]
    {
        GetAuthToken,
        AfterGetAuthToken,
        ShowEventsSummary,
        CallReadEventDialog,
        AskForShowOverview,
        AfterAskForShowOverview
    };

Шаг GetAuthToken выполняется, но затем выполнение останавливается.AfterGetAuthToken вообще не вызывается.

Это функция GetAuthToken внутри проекта:

protected async Task<DialogTurnResult> GetAuthToken(WaterfallStepContext sc, CancellationToken cancellationToken)
{
    try
    {
       var skillOptions = (CalendarSkillDialogOptions)sc.Options;

        // If in Skill mode we ask the calling Bot for the token
       if (skillOptions != null && skillOptions.SkillMode)
        {
            // We trigger a Token Request from the Parent Bot by sending a "TokenRequest" event back and then waiting for a "TokenResponse"
            // TODO Error handling - if we get a new activity that isn't an event
            var response = sc.Context.Activity.CreateReply();
            response.Type = ActivityTypes.Event;
            response.Name = "tokens/request";

            // Send the tokens/request Event
            await sc.Context.SendActivityAsync(response);

            // Wait for the tokens/response event
            return await sc.PromptAsync(SkillModeAuth, new PromptOptions());
        }
        else
        {
            return await sc.PromptAsync(nameof(MultiProviderAuthDialog), new PromptOptions());
        }
    }
    catch (SkillException ex)
    {
        await HandleDialogExceptions(sc, ex);
        return new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs);
    }
    catch (Exception ex)
    {
        await HandleDialogExceptions(sc, ex);
        return new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs);
    }
}

Я что-то не так делаю в коде или в моей конфигурации что-то отсутствует?

1 Ответ

0 голосов
/ 02 февраля 2019

Я выяснил, что если ngrok отсутствует на ПК и не настроен, виртуальный помощник не работает.

...