作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想显示“欢迎消息”,例如“嗨罗伯特,欢迎来到我的应用程序”。所以我需要发送:
使用第一个请求中的“first_name”,发送“https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN”请求以设置“欢迎消息”。
但是,我需要在第一次请求之前知道 user_id。
我的问题:
我评论了https://developers.facebook.com/docs/messenger-platform文件,我还有疑问。
最佳答案
所以你可以用 "get started" 来做这个按钮。只有当用户第一次向机器人发送消息时,此按钮才会出现。
使用这个命令你可以设置按钮:
curl -X POST -H "Content-Type: application/json" -d '{
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
{
"payload":"USER_DEFINED_PAYLOAD"
}
]
}' "https://graph.facebook.com/v2.6/me/thread_settings?access_token=PAGE_ACCESS_TOKEN"
如您所见,如果按钮被按下,您的 Webhook 会收到“回发”
这是你得到的回调:
{
"sender":{
"id":"USER_ID"
},
"recipient":{
"id":"PAGE_ID"
},
"timestamp":1458692752478,
"postback":{
"payload":"USER_DEFINED_PAYLOAD"
}
}
所以这是从哪里可以得到用户id
现在您可以为此编写一个函数。我的样子是这样的:
function receivedPostback(event) {
var senderID = event.sender.id;
var recipientID = event.recipient.id;
var timeOfPostback = event.timestamp;
// The 'payload' param is a developer-defined field which is set in a postback
// button for Structured Messages.
var payload = event.postback.payload;
console.log("Received postback for user %d and page %d with payload '%s' " +
"at %d", senderID, recipientID, payload, timeOfPostback);
if (payload) {
// When a postback is called, we'll send a message back to the sender to
// let them know it was successful
switch (payload) {
case 'USER_DEFINED_PAYLOAD':
startedConv(senderID);
break;
default:
sendTextMessage(senderID, "Postback called");
}
我的 startedConv() 看起来像这样
function startedConv(recipientId){
var name;
request({
url: 'https://graph.facebook.com/v2.6/'+ recipientId +'?fields=first_name',
qs: {access_token: PAGE_ACCESS_TOKEN},
method: 'GET'
}, function(error, response, body) {
if (error) {
console.log('Error sending message: ', error);
} else if (response.body.error) {
console.log('Error: ', response.body.error);
}else{
name = JSON.parse(body);
sendTextMessage(recipientId, "Hello "+ name.first_name+", how can i help you ? ")
}
});
}
关于facebook - 如何在 facebook messenger 中显示个性化的 'Welcome Message'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37960857/
我是一名优秀的程序员,十分优秀!