如何制作不必要的文本 Messenger bot nodejs

How to make unecesary text Messenger bot nodejs

因此,我使用节点 js 构建了一个 聊天机器人。我怎样才能:

  1. 每当用户发送随机文本(正确的命令除外)时,Bot 将回复 "Sorry I cant recognize that command"..
  2. 如何让机器人存储来自用户的文本并稍后确认?例子 : 用户:你好。 BOT:还有什么? 用户:世界。 BOT:还有什么? 用户:完成。 机器人:我明白了, 机器人: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")
}}

任何帮助将不胜感激..

对于您的第一个问题,switch/case 语句是最理想的。如果不满足任何情况,默认操作将是 "Sorry, I can't recognize that command".

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..")
    }

    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 model/object 来保存状态。使用从 facebook api 获得的用户唯一 psid 作为主键或作为 model/object

的复合键的一部分

您也可以尝试使用 BootBot (https://github.com/Charca/bootbot),这是一个使 Messenger 机器人开发相对容易的 nodejs 框架。它具有轻松检查用户输入和保存对话上下文的功能。