Bot Framework 4.0 Эквивалент - PullRequest
0 голосов
/ 18 июня 2019

Я строю бота, но у меня проблемы с Bot Framework 4.0. Какой код эквивалентен приведенному ниже фрагменту в Bot Framework 4.0?

У меня проблемы с поиском подходящих фрагментов кода для моей проблемы. Я пытаюсь вызвать диалог из моего класса ботов, но я могу найти только подходящий код из Bot Framework 3.0. Фрагмент кода ниже:

if (entry)
            {
                JToken commandToken = JToken.Parse(turnContext.Activity.Value.ToString());
                string temp = turnContext.Activity.Value.ToString();
                Logger.LogInformation(temp);
                string command = commandToken["action"].Value<string>();

                if (command.ToLowerInvariant() == "purchaseorder")
                {
                    //call PurchaseOrderDialog
                }
                else if (command.ToLowerInvariant() == "sku")
                {
                    //call SKUNumberDialog
                }

            }

Я в основном ищу способ вызвать конкретный диалог, используя Bot Framework 4.0, чтобы определить, какой параметр запрашивает пользователь. Я просмотрел документацию Microsoft для Bot Builder 4.0 и не смог найти ничего подходящего. Я очень плохо знаком с этой средой, поэтому, возможно, я обошел проблему. Я нашел способ сделать это, позвонив по телефону:

await Conversation.SendAsync (activity, () => new RootDialog ());

Но это был синтаксис Bot Framework 3.0. Если у кого-то есть какие-либо предложения, мы будем очень признательны.

1 Ответ

0 голосов
/ 19 июня 2019

То, что вы ищете, это

await <TYPE>Context.BeginDialogAsync(nameof(<YOURDIALOGNAME>), <OPTIONAL_PARAMETERS>, cancellation token

Выше <TYPE> означает, что вы можете использовать водопады, в этом случае это будет stepContext или простой диалог, который будет dialogContext.

поэтому для вашего бота выше вы должны создать PurchaseOrderDialog.cs и SKUNumberDialog.cs, а затем использовать их следующим образом:

if (entry)
            {
                JToken commandToken = JToken.Parse(turnContext.Activity.Value.ToString());
                string temp = turnContext.Activity.Value.ToString();
                Logger.LogInformation(temp);
                string command = commandToken["action"].Value<string>();

                if (command.ToLowerInvariant() == "purchaseorder")
                {
                   return await context.BeginDialogAysnc(nameof(PurchaseOrderDialog), cancellationToken)
                }
                else if (command.ToLowerInvariant() == "sku")
                {
                    return await context.BeginDialogAysnc(nameof(SKUNumberDialog), cancellationToken)
                }

            }

CoreBot в примерах Bot Framework Github Repo здесь является хорошим примером того, как работают сложные диалоги, и есть официальные инструкции здесь по работе с компонентом и диалоги водопада, уникальные для v4.

...