javascript - 用户提交后,BotFramework V4 nodejs中的自适应卡片(用户输入表单)被重新提示
问题描述
async feed_first(stepContext)
{
let company_card = MessageFactory.attachment(
CardFactory.adaptiveCard(testfeedback)
);
return await stepContext.prompt("textPrompt", {
prompt: company_card
});
}
async feed_second(stepContext) {
console.log("enter feedback second");
console.log(stepContext.context.activity.value);
}
{
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "Container",
"items": [
{
"type": "Input.ChoiceSet",
"placeholder": "Placeholder text",
"choices": [
{
"title": " 1",
"value": " 1"
},
{
"title": " 2",
"value": " 2"
}
],
"style": "expanded",
"id": "cho"
},
{
"type": "ActionSet",
"actions": [
{
"type": "Action.Submit",
"title": "Submit"
}
]
}
]
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
}
所以对于这段代码,卡会显示出来,但是在机器人模拟器上,当点击提交按钮时,什么也没有发生。控制台显示“正在运行带有消息活动的对话框”并再次提示同一张卡。机器人不会流到瀑布对话框的第二步(feed_second)。我想要代码做的是在控制台上显示“第二个输入反馈”,然后在控制台上显示带有 ID“cho”的 stepContext.context.activity.value agiain 的选定选项。旁注 - 我在声明 WaterfallDialog 时添加了“feed_first”和“feed_second”,所以这不是问题
解决方案
如果您想使用带有文本提示的自适应卡片的输入,您将需要访问活动的值并以某种方式将其序列化为活动的文本,如本例所示。此信息位于我的 Adaptive Cards 博客文章的对话框部分,您应该阅读。
在 JavaScript 中,您可以将值序列化为如下文本:
/**
*
* @param {TurnContext} turnContext
*/
async sendValueToDialogAsync(turnContext)
{
// Serialize value
var json = JSON.stringify(turnContext.activity.value);
// Assign the serialized value to the turn context's activity
turnContext.activity.text = json;
// Create a dialog context
var dc = await this.dialogs.createContext(turnContext);
// Continue the dialog with the modified activity
await dc.continueDialog();
}
在您的情况下,如果您只需要一个输入的结果,那么您可以只使用该属性而不是序列化任何内容:
turnContext.activity.text = turnContext.activity.value.cho;
推荐阅读
- mongodb - 使用spring boot在mongodb中“更新复杂文档”的正确方法是什么?
- python - 如何让 CMake 编译包含 Boost Local Functions 的源文件
- java - Hibernate - 根据语言从数据库中获取
- java - 当传递一个 id 时,我的视图显示一个奇怪的结果
- .net - 使用 StoreContext 时发布模式下的 .NET Native 序列化异常
- nlp - 我们可以在 Rasa Core Stories 中使用通配符作为插槽值吗?
- java - maven jar 不包括清单中的 main
- vue.js - Vue.Js,我的函数无缘无故被调用了很多次
- amazon-ec2 - 如何使用联合身份验证 AWS 以启动 ec2 实例
- c# - 来自具有不同方法和属性的一个接口的不同对象