0

因此,我使用 node js构建了一个Messenger 机器人。我该怎么做:

  1. 每当用户发送随机文本(正确的命令除外)时,Bot 都会回复“对不起,我无法识别该命令”..
  2. 如何让机器人存储用户的文本并稍后确认?示例:用户:您好。BOT:还有什么?用户:世界。BOT:还有什么?用户:完成。BOT:我明白了,BOT:1. 你好 BOT:2. World 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")
}}

任何帮助将不胜感激..

4

3 回答 3

1

解决方案 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 模型/对象来保存状态。使用从 facebook api 获得的用户唯一 psid 作为主键或模型/对象的复合键的一部分

于 2017-03-29T09:08:25.613 回答
1

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

于 2017-04-05T21:54:33.887 回答
0

对于您的第一个问题,switch/case 语句将是理想的。如果不满足任何情况,默认操作将是“对不起,我无法识别该命令”。

于 2017-03-28T08:35:57.003 回答