在javascript聊天机器人中实现回发操作代码的位置
Where to implement the postback action code in a javascript chatbot
我的问题是关于在我的聊天机器人中实现这段javascript代码:
smooch.conversations.sendMessage('app_5790dca8cab9a256005c0148', {
text: 'Fabric',
role: 'appMaker',
actions: [
{
type: 'postback',
text: 'fabric instructions',
payload: 'egg_fabric'
}
]
}).then(() => {
// async code
});
这是我的script.json文件,对应于这个特定的回发:
"HOW CAN I REMOVE AN EGG STAIN?": "%[Fabric](postback:egg_fabric) %[Surface](postback:egg_surface)",
我之所以问这个问题,是因为我想在整个聊天过程中有多个"表面"answers"织物"按钮,但我希望机器人吐出的答案与最近问的问题相对应。谢谢你的帮助!
您想要的是script.json无法实现的,您必须在script.js中定义自己的状态函数,以及自己的回发事件处理。
在这个答案中,有一些关于如何使用smoch bot示例项目(estherbot就是从这个项目派生而来的)的建议。
为了给你一些上下文,script.js是实际的机器人逻辑所在的地方。您正在查看的script.json是estherbot引入的一个快捷方式,它可以更容易地定义基于关键字的机器人。当你的机器人运行时,JSON实际上会被编译成状态,就像最初在script.js中定义的一样。您试图构建的内容需要的不仅仅是script.json所限制的静态关键字-->行为映射。
跟进Andrew的回答:
检查smoch-bot示例项目,但可能首先查看回发的webhook实现文件(heroku/index.js),而不是bot逻辑/流定义文件(script.js):
在repo的heroku文件夹中,检查index.js文件。函数handlePostback(req, res)
(应该在第109行附近)应该可以帮助您入门。例如,将其更改为以下内容:
发件人:
function handlePostback(req, res) {
const postback = req.body.postbacks[0];
if (!postback || !postback.action) {
res.end();
}
createBot(req.body.appUser).say(`You said: ${postback.action.text} (payload was: ${postback.action.payload})`)
.then(() => res.end());
}
类似于:
function handlePostback(req, res) {
const postback = req.body.postbacks[0];
if (!postback || !postback.action) {
res.end();
}
const sAction = postback.action.text;
const sPayload = postback.action.payload;
switch (sAction) {
case "egg_fabric":
//something something
break;
case "egg_surface":
//something something
break;
default:
//something something
}
}
希望能有所帮助。
相关文章:
- 如何运行在加载时操作 iframe 内容的代码
- 如何从按钮后面的代码中调用javascript函数,点击并存储其输出,然后继续操作
- 我如何找到“;操作's”;代码中的位置'回调函数不支持此操作'
- 我应该如何在提交操作之前插入jQuery代码
- 编译角度代码以便能够执行内部html操作
- Javascript Analytics代码操作(G.Analytics)
- 如何加载外部HTML内容以由此JS代码操作
- 代码点火器通过单击按钮更改表单操作
- 如何添加将通过执行 JavaScript 代码重定向到另一个页面的动态操作
- DOM 树操作 (document.createElement) 代码重用
- 由代码操作输入时不触发主干视图更改事件
- 将 html 代码转换为操作脚本代码
- 电话间隙代码:2 消息:无法完成操作.(kCLErrorDomain error 0.)
- 点击操作不适用于 Google 地图中的以下代码
- 在 DOM 上以“向上”和“向下”方向操作时如何避免重复代码
- 使用 jQuery 操作 DOM 时,代码不同步
- 如何在没有大量代码的情况下操作单个输入字段值
- 代码重构.对类的所有实例进行操作的方法
- 从另一个操作中获取html代码,并通过javascript操作代码
- 在javascript聊天机器人中实现回发操作代码的位置