如何在对话框中调用瀑布对话框-Azure Bot构建器

布拉津·布拉佐

在我的azure机器人中,我具有默认机器人“ DialogBot.cs”。我想在其OnMessageActivityAsync()方法中基于用户输入调用特定的瀑布。

但是,一旦我解析了输入,就不知道如何触发特定的瀑布。可以说瀑布称为“ SpecificDialog”。我尝试了这个:

await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>(nameof(SpecificDialog)), cancellationToken);

但这不起作用。我将如何完成?

里奇森

我假设您正在使用其中一个示例。我将基于CoreBot给出答案

您应该将称为的对话框称为Dialog.RunAsync()“根”对话框或“父”对话框,所有其他对话框都从该对话框中分支出来。要更改由此调用的对话框,请Startup.cs查找类似以下的行

// Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
services.AddTransient<IBot, DialogAndWelcomeBot<MainDialog>>();

要将其更改为除之外的其他对话框MainDialog,只需将其替换为适当的对话框即可。

进入根对话框或父对话框后,您可以使用调用另一个对话框BeginDialogAsync()

stepContext.BeginDialogAsync(nameof(BookingDialog), new BookingDetails(), cancellationToken);

仅供参考:

在Node中,这有点不同。在CoreBot中,MainDialog通过以下方式传递给机器人index.js

const dialog = new MainDialog(luisRecognizer, bookingDialog);
const bot = new DialogAndWelcomeBot(conversationState, userState, dialog);

[...]

// Listen for incoming activities and route them to your bot main dialog.
server.post('/api/messages', (req, res) => {
    // Route received a request to adapter for processing
    adapter.processActivity(req, res, async (turnContext) => {
        // route to bot activity handler.
        await bot.run(turnContext);

您会看到它调用DialogAndWelcomeBot,扩展了DialogBot它对MainDialog每条消息都进行了调用

this.onMessage(async (context, next) => {
    console.log('Running dialog with Message Activity.');

    // Run the Dialog with the new message Activity.
    await this.dialog.run(context, this.dialogState);

    // By calling next() you ensure that the next BotHandler is run.
    await next();
    });

你不具备设置你的机器人了这种方式,但它是目前推荐的设计,你就会有实现我们的文档和样本,如果你按照这个更简单的时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Android的日期选择器对话框中设置最大日期?

如何在“日期选择器”对话框中设置日期限制

如何在jquery的sweetalert对话框中为html按钮添加事件侦听器

Bot Framework卡在对话框循环中

如何在Microsoft Bot Framework中的对话框之间传递对象?

如何在vscode中打开文件夹选择器对话框?

如何在Bot Framework MessagesController中解析当前对话框堆栈?

在对话框中处理加速器

Bot Framework v4中无法在对话框之间切换

如何从Bot Framework对话框中的Prompt获取结果

如何在对话框中使用内联编辑器获取外部api数据

在对话框中使用Bot状态访问器

Bot Framework-等待用户在瀑布对话框中单击Hero Card操作

Bot框架v4。如何在瀑布步骤对话框中获取值(如果不是)并将其传递到下一步?

[BotFramework]:如何在瀑布对话框中捕获/提取通过C#Web聊天bot中呈现的自适应卡提交的值?

如何在使用C#BOT Framework SDK V4构建的瀑布对话框中调用AZURE DEVOPS rest API?

通过在bot框架v4中跳过第一个对话框的第一步,将第一个对话框的瀑布步骤调用到其他对话框中

如何从Bot框架v4中的ActivityHandler.OnMessageActivityAsync启动瀑布对话框

Bot Framework在对话框之间再次调用对象的构造函数

如何在网页浏览器中定向网页以建立呼叫对话框?

如何在对话框中使用数字选择器

如何在对话框的文件和目录选择器中导航?

在对话框中设置按钮侦听器

如何在Bot框架中添加其他对话框

在对话框中打开Eclipse编辑器

对话框中的微调器:NullPointerException

如何在日期选择器对话框中设置最大日期和最小日期

Azure Bot NodeJS 等待其他对话框完成

Bot 框架 v4 如何在对话框中等待用户响应提示