会话式 facebook 信使机器人
Conversational facebook messenger bot
您好,我正在为需要询问客户登录 ID 和密码的产品制作新的机器人。
因此对于我的情况,用户将通过键入 hi
发起对话,然后机器人将回复 Hey! How can I help you
,如果客户输入 I want to transfer money
,则机器人将回复 Please enter a login ID
,首先在这里客户将输入登录 ID,机器人将响应 Enter your password
然后它是这样的。
我在 node 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 然后机器人会要求输入密码,将如何保持流程。
提前致谢。
我认为最好的方法是向客户发送 外部 link,或者发送带有客户可以点击的 url 按钮的结构化消息link到外面。所以你的外部 link 应该带来用户的 sender_id
。一旦您的客户在外部登录 link,您的回调函数就会告诉机器人发送 登录成功! 消息,然后您可以继续对话。
我不认为在纯文本消息中要求用户和密码是不安全的实施方式,而且用户体验也很差。
相反,为用户登录过程提供外部link
或看看
帐户链接
https://developers.facebook.com/docs/messenger-platform/account-linking
Account Linking starts a authentication process allowing a Messenger
user to log-in using your own authentication flow, and link his or her
business account.
您好,我正在为需要询问客户登录 ID 和密码的产品制作新的机器人。
因此对于我的情况,用户将通过键入 hi
发起对话,然后机器人将回复 Hey! How can I help you
,如果客户输入 I want to transfer money
,则机器人将回复 Please enter a login ID
,首先在这里客户将输入登录 ID,机器人将响应 Enter your password
然后它是这样的。
我在 node 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 然后机器人会要求输入密码,将如何保持流程。
提前致谢。
我认为最好的方法是向客户发送 外部 link,或者发送带有客户可以点击的 url 按钮的结构化消息link到外面。所以你的外部 link 应该带来用户的 sender_id
。一旦您的客户在外部登录 link,您的回调函数就会告诉机器人发送 登录成功! 消息,然后您可以继续对话。
我不认为在纯文本消息中要求用户和密码是不安全的实施方式,而且用户体验也很差。
相反,为用户登录过程提供外部link
或看看
帐户链接
https://developers.facebook.com/docs/messenger-platform/account-linking
Account Linking starts a authentication process allowing a Messenger user to log-in using your own authentication flow, and link his or her business account.