【问题标题】:Handling submit action from Adaptive Card in Waterflow dialog in WebEx在 WebEx 的 Waterflow 对话框中处理来自 Adaptive Card 的提交操作
【发布时间】:2021-09-03 09:05:42
【问题描述】:

我正在使用 Microsoft 的 Bot Framework v4.0 for Webex 频道,几乎一切正常,除了在瀑布对话框中使用自适应卡。

这里有一个类似的 Stackoverflow 问题:How to retrieve Adaptive Card's form submission in subsequent waterfall step

在我的例子中,它不是用于转换为文本的文本提示,而是一个带有项目列表的下拉组合框。用户从列表中选择一个项目并单击“提交”,这是在提示用户选择的瀑布对话框步骤之外完成的。

问题是在用户点击提交后,没有办法回到瀑布步骤,除非用户输入一些东西,这带来了“为什么还要使用自适应卡片,如果你可以使用提示一个数字选项列表?”另外,在自适应卡片显示后添加提示时,感觉只会让用户感到困惑。

有没有办法将控制权返回给瀑布对话框,一旦它向用户展示自适应卡片?我尝试使用 NextAsync 来帮助解决问题,但所做的只是立即进入下一个瀑布步骤,这意味着它没有得到用户的选择。

【问题讨论】:

    标签: c# botframework


    【解决方案1】:

    我的方法有点笨拙(在 nodejs 中也是如此,但我认为您可以转换)但我认为它可以正常工作。本质上,我会显示卡片,然后在其后面显示一个文本提示,即等待选择...。您还需要一个验证器。 Action.Submit 将生成一个对象,您需要确保从卡中获取输入,而不是手动输入。我的卡片只有一个日期字段,但对于任意数量的输入字段应该都一样。

    所以显示卡片和提示是这样的:

            await step.context.sendActivity(CardHelper.datePicker());
            return await step.prompt(DATE_PROMPT, `*waiting for selection...*`);
    

    验证器如下所示:

        async validateDateCard(prompt) {
            prompt.activeDialog = await this.userDialogStateAccessor;
            prompt.context = await prompt.context;
            const input = prompt.recognized.value;
            if (input.match(/{.+/g)) {
                return true;
            } else {
                await prompt.context.sendActivity(`Please use the calendar widget above to enter the date.`);
                return false;
            }
        }
    

    我理解您担心卡后的另一个提示会使用户感到困惑,但我认为以这种方式完成它可以正常工作。下面是一个实际提示的示例:

    如果我尝试手动输入日期,它将重新提示使用小部件。就像我说的,它有点笨拙,但如果你必须为提示使用自适应卡片,这种方法已经足够了。

    我会说,一般来说,我发现只是按顺序提示,使用下拉菜单的选择提示效果更好。但如果您有大量输入、大量下拉选项或想要标准化的数据类型(例如日期选择),卡片有时仍然是最佳选择。

    【讨论】:

    • 谢谢,比尔。看来我暂时只能使用这个序列,直到 bot 框架认识到自适应卡片可以处理提交事件!
    猜你喜欢
    • 2019-10-28
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2012-07-20
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多