2016-06-19 9 views
0

Ich habe 2 Probleme bei der Entwicklung eines Facebook Messenger Bot, und ich bin ein Neuling für die Programmierung.Problem mit Facebook Messenger Bot (Willkommen Nachricht und Button Nachricht)

  1. Ich folgte Tutorial des FB den Code hinzufügen - Willkommensnachricht und entfaltet es in Heroku, aber mein bot die die Nachricht nicht auftauchen.

    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 
        if (text === 'Generic') { 
         sendGenericMessage(sender) 
         continue 
        } 
        if (text === 'button') { 
         sendbuttonmessage(sender) 
         continue 
        } 
        welcomemessage(sender) 
        //sendbuttonmessage(sender) 
        } 
        if (event.postback) { 
        let text = JSON.stringify(event.postback) 
        sendTextMessage(sender, "Postback received: "+text.substring(0, 200), token) 
        continue 
        } 
    } 
    res.sendStatus(200) }) 
    
function welcomemessage (sender) { let messageData = { 
    "setting_type":"call_to_actions", "thread_state":"new_thread", "call_to_actions":[ 
    { 
     "message":{ 
     "text":"Welcome to My Company!" 
     } 
    } ] } request({ 
    url: 'https://graph.facebook.com/v2.6/me/messages', 
    qs: {access_token:token}, 
     method: 'POST', 
     json: { 
      recipient: {id:sender}, 
      message: messageData, 
     } }, function(error, response, body) { 
     if (error) { 
      console.log('Error sending messages: ', error) 
     } else if (response.body.error) { 
      console.log('Error: ', response.body.error) 
     } }) } 
  1. Wie Pop-up ich eine andere Taste, wenn ppl sie angeklickt? Zum Beispiel: senden Sie die Funktion sendbuttonmessage(sender), nachdem sie auf die Web-URL der Schaltfläche klicken.
function sendbuttonmessage (sender) { 
    let messageData = { 
     "attachment": { 
      "type":"template", 
      "payload":{ 
      "template_type":"button", 
      "text":"Welcome to Taikoo Place. How can we help?", 
      "buttons":[ 
       { 
       "type":"web_url", 
       "url":"https://peterapparel.parseapp.com", 
       "title":"Show Website" 
       }, 
       { 
       "type":"postback", 
       "title":"Service Lift Booking", 
       "payload":"what" 
       //"payload":"USER_DEFINED_PAYLOAD" 
       }, 
      ] 
      } 
     } 
     } 

Antwort

0

Für die erste Frage, sollten Sie die Begrüßungsnachricht gesetzt eine unabhängige POST-Anfrage als https://developers.facebook.com/docs/messenger-platform/send-api-reference#welcome_message_configuration gezeigt kaufen, weil es verschiedene API verwendet, und es sollte nur einmal ausgeführt werden.

curl -X POST -H "Content-Type: application/json" -d '{ 
    "setting_type":"call_to_actions", 
    "thread_state":"new_thread", 
    "call_to_actions":[ 
    { 
     "message":{ 
     "text":"Welcome to My Company!" 
     } 
    } 
    ] 
}' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_ACCESS_TOKEN>" 

Für die zweite Frage kann man nicht nicht erkennen, wenn Benutzer die Web-URL der Schaltfläche klickt, weil es von außen auf den Link gehen. Sie können jedoch die Nachricht mit den postback Einstellungen zuerst, sie können Sie die Postback beim Empfang der Nachricht verarbeiten, sehen, wie Postback hier behandelt https://developers.facebook.com/docs/messenger-platform/quickstart BTW auch daran denken, die messaging_postbacks unter Subscription Fields.