javascript 如何使用Action在自适应卡中提交以模拟用户输入

6pp0gazn  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(92)

我的目标是实现MessageFactory。用我的“welcomeCard”自适应卡建议的操作。
例如,在我的自适应卡(欢迎卡)中,我有几个按钮供用户按,每个按钮都是Action.Submit类型

{
      "type": "Action.Submit",
      "title": "Get fundamental",
      "data": {
        "inputValue": "Get fundamental"
      }
    },

点击时,它应该被视为用户的初始输入并传递给CLU以解析意图/实体。
我的机器人是用core-bot作为模板构建的。我能够在我的上下文中解析inputValue,它是在onMessage()处理程序中捕获的。
我的问题是,如何使用inputValue作为初始用户输入?在机器人代码中,我猜我需要绕过introStep(),但我很难做到这一点。
另一种可接受的方法是用inputValue填充用户的输入文本bot,并让用户按回车键。我不确定适配卡是否支持这种行为,以及我如何在Webchat频道中实现这一点。

soat7uwm

soat7uwm1#

回答我自己的问题-
1.作为用户输入:对于该操作,使用简单文本而不是welcomeCard.json中的数据对象。通过这种方式,Bot Framework自动知道将其视为用户输入

{
      "type": "Action.Submit",
      "title": "Display Text",
      "data": "Text sent on behalf of user"
    },

1.作为用户输入处理:诀窍是在mainDialog和intro步骤的run方法中添加直通分支。
www.example. com ()

if (this.isWelcomeCardButtonAction(context)) {
            await dialogContext.beginDialog(this.id);
        } else {
            // handle normally
            const results = await dialogContext.continueDialog();
            if (results.status === DialogTurnStatus.empty) {
                await dialogContext.beginDialog(this.id);
            }
        }

intro()

if (this.isWelcomeCardButtonAction(stepContext.context)) {
            return await stepContext.next(stepContext.context.activity.text);
        }
       // handle normally

getString()

if (this.isWelcomeCardButtonAction(stepContext.context)) {
            return await stepContext.beginDialog(
                Dialog.YOUR_DIALOG,
            );
        }

// handle normally, probably call your LUIS or CLU

相关问题