2016-06-22 3 views
3

Я хотел бы показать «приветственное сообщение», например «Привет, Роберт, добро пожаловать в мое приложение». Поэтому мне нужно отправить:Как показать персонализированное «Приветственное сообщение» в facebook messenger?

  1. "https://graph.facebook.com/v2.6/USER_ID?fields=first_name,last_name,profile_pic,locale,timezone,gender&access_token=PAGE_ACCESS_TOKEN"

  2. используя 'first_name' с 1-го запроса, отправить "https://graph.facebook.com/v2.6/PAGE_ID/thread_settings?access_token=PAGE_ACCESS_TOKEN" запрос, чтобы установить 'приветствие'.

Однако перед первым запросом мне необходимо знать user_id.

Мои вопросы:

  1. Какие шаги для создания 'приветственное сообщение'?
  2. Как показать «Приветственное сообщение», когда пользователь открыл окно для facebook Messenger?

Я рассмотрел документ https://developers.facebook.com/docs/messenger-platform, и у меня есть вопросы.

ответ

2

Это не нужно. Просто выполните следующие шаги:

1- Перейдите на свою страницу, которая касалась вашего посыльного api.

2- Настройки (FB Настройка страницы)

3- Из вкладок выберите Сообщения

4 В закладке сообщений в нижней части вы увидите «Покажите поздравительный Связной» изменить его от «Нет» "Да". Чем вы можете его настроить;)

Примечание: Чтобы увидеть свое приветственное сообщение, вы должны удалить предыдущий разговор со страницы, на которую вы установили приветственное сообщение. Затем запустите новый разговор со страницей, на которой должно появиться приветственное сообщение.

+0

Спасибо за ответ, я попробовали и этот вариант. Но это не сработало для меня. Я положил свое сообщение и установил «Да», чтобы показать, и нажмите «Сохранить кнопку». К сожалению, это не сработало (может быть, я пропустил некоторые настройки?) –

+0

Утверждено ли ваше приложение? Если на данный момент нет ни одного администратора, тестеров и разработчиков, и вы можете это проверить, добавьте друга в свой тест группа в настройках приложения для мессенджера Сообщение должно появиться после того, как он откроет окно конверсии. – Omera

+0

@BlueCity Я создал страницу, хотя я не получаю опцию «Начать». –

5

Таким образом, вы можете сделать это с помощью кнопки "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 recieves «обратной передачи»

это обратный вызов вы получите:

{ 
    "sender":{ 
    "id":"USER_ID" 
    }, 
    "recipient":{ 
    "id":"PAGE_ID" 
    }, 
    "timestamp":1458692752478, 
    "postback":{ 
    "payload":"USER_DEFINED_PAYLOAD" 
    } 
} 

Так что это от того, где вы можете получить идентификатор пользователя

Теперь вы можете закодировать Функция для этого. Мои выглядит следующим образом:

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 ? ") 
      } 
     }); 
} 
0

На 9/12 вы можете задать текст приветствия, который показывает вверх, прежде чем ваш пользователь нажмет НАЧАТЬ и она включает в себя эти маркеры, которые будут заменены, когда текст рендеринга:

  • {{}} user_first_name
  • {{user_last_name}}
  • {{USER_FULL_NAME}}

Посмотрите на этой странице Документов Коммуникатор Платформа: https://developers.facebook.com/docs/messenger-platform/thread-settings/greeting-text

0

Так я угадываю в мессенджере это происходит на самом первом сообщение. Если вы удалите сообщение и начнете, это НЕ запускается. В сообщениях Facebook вы видите, что он работает.

1

Создание приветственного текста в данный момент не является затруднительным. Я провел некоторое время, узнав, как это сделать, и получилось довольно просто. Я реорганизовал один из методов запроса POST, который я нашел в образцах, и я использую NodeJS кстати.

function createGreetingApi(data) { 
request({ 
uri: 'https://graph.facebook.com/v2.6/me/thread_settings', 
qs: { access_token: PAGE_ACCESS_TOKEN }, 
method: 'POST', 
json: data 

}, function (error, response, body) { 
if (!error && response.statusCode == 200) { 
    console.log("Greeting set successfully!"); 
} else { 
    console.error("Failed calling Thread Reference API", response.statusCode,  response.statusMessage, body.error); 
} 
}); 
} 

Тогда у меня есть еще один способ, чтобы убедиться, что я держу код читаемым:

function setGreetingText() { 
var greetingData = { 
setting_type: "greeting", 
greeting:{ 
text:"Hi {{user_first_name}}, welcome!" 
} 
}; 
createGreetingApi(greetingData); 
} 

Затем вы используете этот метод в app.listen так:

app.listen(app.get('port'), function() { 
console.log('Node app is running on port', app.get('port')); 
setGreetingText(); 
});