所以,我试图使用建议的卡片为WebChat机器人提供一个更好的按钮输入,除非有人有其他的建议?目前已经开始使用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等,但没有返回。
文档中说:“当用户点击其中一个建议的操作时,bot将从包含相应操作的值的用户那里接收一条消息。”
谢谢。
发布于 2017-07-03 01:02:24
这有几样东西。
首先,imBack基本上代表IM返回,或者即时消息返回。它会把回应发送给谈话。您需要postBack,它将隐藏响应,但请记住,对于某些通道,postBack将映射到imBack,因此您必须进行一些调查。对于Bot仿真程序,postBack将隐藏响应。
对于第二件事,如果您在bot运行时监视您的控制台,您将看到bot将尝试在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);
}
]);在上面使用意图对话框的示例中,我可以访问位于第二个matched方法调用的args中的intent.matches数组中的值。
有其他方法可以做到这一点,但这是一个快速和肮脏的例子。
https://stackoverflow.com/questions/44875959
复制相似问题