javascript-Microsoft BotFramework-建议的卡片
作者:互联网
因此,除非有人有其他建议,否则我将尝试使用建议的卡片为WebChat bot提供更好的按钮输入.目前已使builder.prompts工作.
但我的问题是,使用以下示例:
var msg = new builder.Message(session)
.text("Thank you for expressing interest in our premium golf shirt! What color of shirt would you like?")
.suggestedActions(
builder.SuggestedActions.create(
session, [
builder.CardAction.imBack(session, "productId=1&color=green", "Green"),
builder.CardAction.imBack(session, "productId=1&color=blue", "Blue"),
builder.CardAction.imBack(session, "productId=1&color=red", "Red")
]
));
session.send(msg);
我实际上如何得到答复?它会自动将用户值写入聊天记录中(我试图避免这种情况).尝试使用response.entity等,但没有任何返回.
该文档说:“当用户点击建议的操作之一时,该漫游器将从用户处收到一条消息,其中包含相应操作的值.”
谢谢.
解决方法:
一些事情.
首先,imBack基本上代表IM返回或即时消息返回.它将响应发送给对话.您需要postBack,它将隐藏响应,但是请记住,对于某些渠道,postBack将映射到imBack,因此您必须进行一些调查.对于Bot模拟器,postBack将隐藏响应.
第二件事,如果您在漫游器运行时观察控制台,则会看到该漫游器将尝试通过imBack方法路由到该值.您将要通过对话框或意图来捕获它.这是一个小例子,可能效率不高:
intents.matches(/^suggest/i, [(session) => {
var msg = new builder.Message(session)
.text("Thank you for expressing interest in our premium golf shirt! What color of shirt would you like?")
.suggestedActions(
builder.SuggestedActions.create(
session, [
builder.CardAction.postBack(session, "productId=1&color=green", "Green"),
builder.CardAction.postBack(session, "productId=1&color=blue", "Blue"),
builder.CardAction.postBack(session, "productId=1&color=red", "Red")
]
));
session.send(msg);
}]);
intents.matches(/^productId/i, [
(session, args, next) => {
console.log(args);
}
]);
在上面使用意图对话框的示例中,我可以从第二个intent.matches方法调用的args中的匹配数组访问值.
还有其他方法可以执行此操作,但这是一个简单的示例.
标签:botframework,node-js,javascript 来源: https://codeday.me/bug/20191025/1932085.html