【问题标题】:Conversational facebook messenger bot对话式 Facebook 信使机器人
【发布时间】:2016-11-11 03:29:06
【问题描述】:

您好,我正在为需要询问客户登录 ID 和密码的产品制作新机器人。

所以对于我来说,用户将通过输入hi 发起对话,然后机器人将回复Hey! How can I help you,如果客户输入I want to transfer money,那么机器人将回复Please enter a login ID,首先这里客户将输入登录ID 和机器人会回复Enter your password 然后是这样的。

我在节点 js 中做了如下操作,这对我来说似乎不是正确的方法。

app.post('/webhook/', function (req, res) {

    let messaging_events = req.body.entry[0].messaging
    for (let i = 0; i < messaging_events.length; i++) {
        let event = req.body.entry[0].messaging[i]
        let sender = event.sender.id
        if (event.message && event.message.text) {
            let text = event.message.text.toLowerCase();
            var greets = ['hi', 'hey', 'hello', 'good morning', 'good evening']
            if(greets.indexOf(text) > -1) {
                sendTextMessage(sender, 'Hey! How can I help you ?')
            }
            else if((text.indexOf('money transfer') > -1) || (text.indexOf('transfer money') > -1)) {
                sendTextMessage(sender, 'OK. Please enter your login details.')
                lastMessage = 'Please enter your login ID.'
            } else if(text.indexOf('restart') > -1) {
                lastMessage = ''
                sendTextMessage(sender, 'Thanks, Give a seconds to me :)')
            }
            else {
                sendTextMessage(sender, 'Huh! Uhhh broke me :(')
            }
        } else if (event.postback) {
            var payload = event.postback.payload;
            if(payload) {
                // When a postback is called, we'll send a message back to the sender to 
                // let them know it was successful.
                // do nothing
                switch (payload) {
                    case 'USER_DEFINED_PAYLOAD':
                        sendTextMessage(sender, 'Welcome to XXX, What are you looking for today ?')
                        break;
                }
            }
            console.log("Postback received: " + JSON.stringify(event.postback));
        }
    }
    res.sendStatus(200)
})

实现我的案例的最佳方法是什么,如果用户输入登录 ID 然后机器人会要求输入密码,将如何保持流程。

提前致谢。

【问题讨论】:

    标签: node.js facebook bots facebook-messenger


    【解决方案1】:

    我不认为在纯文本消息中询问用户和密码是不安全的实施方式,也是糟糕的用户体验。

    相反,提供用户登录过程的外部链接

    或者看看

    帐户关联
    https://developers.facebook.com/docs/messenger-platform/account-linking

    帐户链接启动身份验证过程,允许 Messenger 用户使用您自己的身份验证流程登录,并链接他或她 企业帐户。

    【讨论】:

    【解决方案2】:

    我认为最好的方法是向客户发送外部链接,或者发送带有 url 按钮的结构化消息,客户可以点击该按钮并链接到外部。所以你的外部链接应该带上用户的sender_id。一旦您的客户通过外部链接登录,您的回调函数就会告诉 bot 发送 登录成功! 消息,然后您可以继续对话。

    【讨论】:

    • 有没有办法做到这一点而不重定向到信使机器人之外?
    猜你喜欢
    • 2016-09-30
    • 2017-01-17
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2016-09-27
    • 2019-09-13
    相关资源
    最近更新 更多