javascript - 如何制作不必要的文本Messenger bot Nodejs

标签 javascript node.js facebook-messenger-bot

因此,我使用 Node js 构建了一个消息机器人。我该如何制作:

  1. 每当用户发送随机文本(正确的命令除外)时,机器人都会回复“抱歉,我无法识别该命令”。
  2. 如何让机器人存储用户的文本并稍后确认?例子 : 用户:你好。 机器人:还有什么? 用户:世界。 机器人:还有什么? 用户:完成。 机器人:我明白了, 机器人:1.你好 机器人:2.世界 BOT:这是正确的吗?

这是我当前的脚本。 1:

function replyByText(sender, text, payload) {
let kata = text.toLowerCase()
let date = new Date()
let current_hour = date.getHours()
if (S(kata).contains('produk') || S(kata).contains('produknya') || S(kata).contains('product')) {
    sendOpeningProduct(sender, "Wait Sec..")
}

if (S(kata).contains('layanan')|| S(kata).contains('services')|| S(kata).contains('diagnose')){
    // sendOpeningServices(sender, 'Wait sec..' )
    sendPlainMessage(sender, 'Hi, what concern you most about your health? Please describe your symptoms..' )
}

if (S(kata).contains('health symptoms')){
    sendPlainMessage(sender, 'Tell me What You Feel..' )
}

if (S(kata).contains('im feeling sick') || S(kata).contains('im feeling unwell') || S(kata).contains('im feeling dizzy') || S(kata).contains('dizzy') || S(kata).contains('sick')){
    sendPlainMessage(sender, 'How old are you ?' )
}

if (S(kata).contains('3') || S(kata).contains('4') || S(kata).contains('5') || S(kata).contains('6') || S(kata).contains('7') || S(kata).contains('8') || S(kata).contains('9')){
    sendPlainMessage(sender, 'I see...' )
    sendOpeningProductKids(sender, "Just try our products")
}}

任何帮助将不胜感激..

最佳答案

第一个问题的解决方案:

function replyByText(sender, text, payload) {
    let kata = text.toLowerCase()
    let date = new Date()
    let current_hour = date.getHours()

    if (S(kata).contains('produk') || S(kata).contains('produknya') || S(kata).contains('product')) {
        sendOpeningProduct(sender, "Wait Sec..")
    }

    else if (S(kata).contains('layanan')|| S(kata).contains('services')|| S(kata).contains('diagnose')){
        // sendOpeningServices(sender, 'Wait sec..' )
        sendPlainMessage(sender, 'Hi, what concern you most about your health? Please describe your symptoms..' )
    }

    else if (S(kata).contains('health symptoms')){
        sendPlainMessage(sender, 'Tell me What You Feel..' )
    }

    else if (S(kata).contains('im feeling sick') || S(kata).contains('im feeling unwell') || S(kata).contains('im feeling dizzy') || S(kata).contains('dizzy') || S(kata).contains('sick')){
        sendPlainMessage(sender, 'How old are you ?' )
    }

    else if (S(kata).contains('3') || S(kata).contains('4') || S(kata).contains('5') || S(kata).contains('6') || S(kata).contains('7') || S(kata).contains('8') || S(kata).contains('9')){
        sendPlainMessage(sender, 'I see...' )
        sendOpeningProductKids(sender, "Just try our products")
    }
    else{
        sendPlainMessage(sender, 'Sorry I cant recognize that command' )
    }

}

问题 2 的解决方案:

您必须在每次调用 Webhook 之间保存状态。按着这些次序。

有多种方法可以解决这个问题。您可以通过这种方式解决这个问题。通过在每个 webhook 调用上更新 covesation 模型/对象来保存状态。使用从 facebook api 获取的用户唯一 psid 作为主键或作为模型/对象的复合键的一部分

关于javascript - 如何制作不必要的文本Messenger bot Nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42945635/

相关文章:

c# - 如何在 Facebook Channel 中为 Bot Framework 设置不同的语言?

javascript - ReactJS:运行函数以在没有交互的情况下从不同页面生成元素

node.js - Node 未定义(甚至没有 Node -v)Nodejs

javascript - 带有 NodeJS webhook + CasperJS 的 FB Messenger Bot

javascript - 通过 JSON 向 mongoose 发送不区分大小写的正则表达式

javascript - 编译成 CommonJS 不会产生 NodeJS 可用的文件

php - Laravel 机器人 : Can't get Facebook Messenger User

javascript - 从 Sencha Touch 1.1.x 迁移到 Sencha Touch 2

javascript - 是否可以将 node.js View 输出缓存为 html 文件?

javascript - 在 Google Map Api 上显示纬度和经度