2017-03-24 1 views
1

Wir möchten das Facebook Messenger Check-in-Plugin am Ende eines Anfrageformulars hinzufügen, so dass Benutzer für Benachrichtigungen per Messenger aktivieren können.Messenger-Bot mit Checkbox-Plugin, wie man die Konversation mit Benutzer Ref und Benutzer-ID verfolgen

Wenn der Benutzer sich entscheidet, erhält unser Webhook einen Rückruf mit der user_ref, die wir im Formular festgelegt haben.

Wir senden eine Bestätigung von Opt-in zu diesem user_ref

Aber auch anderen Botschaften, die wir wie Lieferung erhalten, Lesebestätigung oder tatsächliche Nachrichten vom Benutzer nicht mehr den Benutzer ref enthalten, aber die Benutzer-ID.

Dies ist die offizielle Dokumentation von Facebook:

Nachdem Sie die Callback-Ereignis erhalten, können Sie die Send-API aufrufen, den Benutzer mit den user_ref Identifikator in Empfänger starten Messaging wie unten gezeigt. Beachten Sie, dass dieses Feld mit dem eindeutigen user_ref-Parameter identisch ist, der vor dem Rendern des Plugins verwendet wurde, und um das Opt-In zu bestätigen.

Wenn der Aufruf der Sende-API erfolgreich ist, enthält die Antwort den Parameter recipient_id, eine stabile Benutzer-ID, die Sie jetzt für zukünftige API-Aufrufe verwenden können.

Daher ist es unmöglich, den Überblick zwischen der ersten Nachricht und neuen zu behalten. Hat jemand eine Lösung dafür gefunden?

Vielen Dank im Voraus.

Antwort

0

Sie können z. B. zusätzliche Informationen senden, wenn der Benutzer den optionalen Parameter ref verwendet. Sie können den Benutzernamen der auf meiner Website angemeldeten Benutzer senden:

function confirmOptIn() { 
     FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, { 
     'app_id':'APP_ID', 
     'page_id':'PAGE_ID', 
     'ref': '[email protected]', 
     'user_ref':'UNIQUE_REF_PARAM' 
     }); 

Sie den Benutzernamen in optin in Ihrem Webhook Veranstaltung erhalten:

{ 
    "recipient":{ 
    "id":"PAGE_ID" 
    }, 
    "timestamp":1234567890, 
    "optin":{ 
    "ref":"[email protected]", 
    "user_ref":"UNIQUE_REF_PARAM" 
    } 
} 

Dann können Sie mit der API-Aufruf-Messaging zu starten der Benutzer mit der user_ref.

Wenn der Aufruf der Sende-API erfolgreich ist, enthält die Antwort den Parameter recipient_id. Dies ist eine stabile Benutzer-ID, die Sie jetzt für zukünftige API-Aufrufe verwenden können.

... so erhalten Sie die Messenger ID, die Sie dem Benutzernamen Ihrer Website zuordnen können, den Sie bereits haben. Hier modifizierte ich ein wenig das Beispiel von der offiziellen Entwickler-Website die Sende API mit user_ref anrufen und ordnen Sie die Benutzer-ID I in der Antwort auf den Benutzernamen meiner Website zu erhalten:

function callSendAPICheckbox(messageData, userApplicationId) { 
((userApplicationId) => { 
    request({ 
      uri: 'https://graph.facebook.com/v2.6/me/messages', 
      qs: { 
       access_token: PAGE_ACCESS_TOKEN 
      }, 
      method: 'POST', 
      json: messageData 

     }, 
     function(error, response, body) { 
      if (!error && response.statusCode == 200) { 
       var recipientId = body.recipient_id; 
       var messageId = body.message_id; 

       if (messageId) { 
        console.log("Map messenger user ID %s with the username of my website %s", recipientId, userApplicationId); 
       } else { 
        console.log("Successfully called Send API for recipient %s", 
         recipientId); 
       } 
      } else { 
       console.error("Failed calling Send API for userId " + 
        recipientId, response.statusCode, response.statusMessage, body.error); 
      } 
     }); 

})(userApplicationId) 
} 
0

Warum gehst du nicht machen Verwendung des Metadatenfeldes sendTextMessage. Jede Nachricht, die Sie an Ihren Benutzer senden, senden Sie auch die Metadaten, und wenn Sie die Antwort der Nachricht erhalten, die geliefert wird, finden Sie das Metadatenfeld darin. Hier

ist, was ich tue:

Wenn der Benutzer das Kontrollkästchen Plugin auswählen und Ereignis wird ausgelöst, ich den Anruf auf meinem Server empfangen, überprüfen, ob es user_ref enthält.Wenn dies der Fall ist, sende ich eine Textnachricht mit benutzerdefinierten Metadaten an den Benutzer unter Verwendung von user_ref. Wenn der Benutzer die Nachricht erhält, senden Sie mir eine webhookjson Daten wie in der Dokumentation erwähnt. Um festzustellen, für welche user_ref ich diese Antwort erhalten habe, legte ich benutzerdefinierte Metadaten, die eine Kombination aus einigen string + user_ref vor dem Senden der Nachricht an den Benutzer mit user_ref. Unter Verwendung dieser benutzerdefinierten Metadaten identifiziere ich den sender.id des Benutzers, für den ich zuvor eine Nachricht gesendet habe, unter Verwendung von user_ref. Die sender.id ist meine pageid und recipient.id die Benutzer-ID, die Sie versuchen zu bekommen und mit denen wir in der Regel Nachricht an den Benutzer senden und ist auch bekannt als psid.

Oben ist nur der logische Teil erwähnt, den ich normalerweise mache. Für Detail-Lösung zusammen mit Code, ich habe es bereits geschrieben here:

Verwandte Themen