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

时间:2017-03-22 07:50:35

标签: javascript node.js facebook-messenger-bot

因此,我使用节点js 构建了一个 messenger bot。我该怎么做:

  1. 每当用户发送随机文本(正确的命令除外)时,Bot将回复"抱歉,我无法识别该命令" ..
  2. 如何让机器人存储来自用户的文本并稍后确认?示例: 用户:您好。 BOT:还有什么? 用户:世界。 BOT:还有什么? 用户:完成。 BOT:我明白了, BOT:1。你好 BOT:2。世界 BOT:这是对的吗?
  3. 这是我当前的脚本no。 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")
    }}
    

    任何帮助都会受到赞赏..

3 个答案:

答案 0 :(得分: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' )
    }

}

No 2的解决方案:

您必须在每次调用webhook之间保存状态。跟着这些步骤。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

对于您的第一个问题,开关/案例陈述将是理想的。如果不满足任何情况,默认操作将是“抱歉,我无法识别该命令”。