2016-04-27 14 views
0

Ich habe die Schritte zum Einrichten der Facebook Messenger-Plattform gefolgt. Die Überprüfung GET Web Hook-Anfrage funktioniert perfekt, wie auch die Subscribe, aber wenn ich den Chat einreiche, bekomme ich die folgenden Entwickler-Warnung:Facebook Messenger-Plattform - Webhook-Abonnement

Hallo Norah, Wir haben festgestellt, dass Ihr Webhooks-Abonnement für Callback-URL https: // {domain}/v1/webhook hat seit mindestens 16 Minuten keine Aktualisierungen mehr akzeptiert. Stellen Sie sicher, dass Ihr Rückrufserver funktioniert, damit Sie weiterhin Updates erhalten können. Wenn Sie Ihre Rückruf-URL aktualisieren müssen, finden Sie weitere Informationen unter https://developers.facebook.com/docs/messenger-platform/webhook-reference#webhook_setup

Wenn Ihre Callback-URL 8 Stunden lang keine Updates akzeptiert, werden wir Ihr Abonnement deaktivieren. Um das Abonnement zu reaktivieren, führen Sie eine POST-Anfrage mit den gleichen Parametern durch und es wird wieder aktiviert.

Meine Postanforderung funktioniert über POSTMAN.

Bitte kann mir jemand helfen! Das macht mich verrückt!

Antwort

1

Haben Sie auf Ihrem Server Protokolle für diese Anfragen?

Facebook erfordert, dass Sie den Statuscode 200 für die Postanforderung zurückgeben, damit sie wissen, dass Sie sie erfolgreich erhalten haben. Wenn sie es nicht haben, versuchen sie es erneut und wenn das immer noch nicht klappt, werden sie dir diese Warnung geben. Möglicherweise verwendet Facebook einen anderen Content-Typ oder Nachrichteninhalt als bei Postman.

Ihre Serverprotokolle sollten Ihnen mehr Einblicke darüber geben.

+0

Wann oder wie erfolgt die Veröffentlichung? Sind das die tatsächlich abonnierten Ereignisse, zB Nachricht erhalten? Oder sind es periodisch geplante Aufgaben, die von Facebook erledigt werden, um zu prüfen, ob mein Callback am Leben ist? –

+0

gibt es nur eine erste get für die Überprüfung, um zu überprüfen, ob Ihr Server lebt. danach ist es ein Rückruf-Ereignis für jede Nachricht, die auf einer abonnierten Seite empfangen wird.Wenn sie nicht erfolgreich sind, wird Facebook alarmiert (und sie werden es ein paar Mal wiederholen) .. aber es gibt keine zusätzliche Überprüfung auf Lebenszeit. –

1

Je nachdem, welche Webhook events Sie für eine Seite abonniert haben, wird es Rückrufe für diese Ereignisse und mehr auf der URL geben, die Sie im Web Hook eingerichtet haben.

Wenn Sie das Ereignis abonniert haben, gibt es jedes Mal, wenn eine Nachricht gesendet wird, ob von einem Benutzer zu Ihrer Seite oder von Ihrer Seite zu einem Benutzer ein Callback mit einem Message Delivered JSON-Objekt. Die Webhook Reference hat ein Beispiel des Message Delivered JSON-Objekts, aber keine Spezifikation oder Erklärung, was die Felder bedeuten.

Gelegentlich finde ich, dass ein undokumentierter Read Rückruf manchmal empfangen wird. Die undokumentierten json Daten hierfür ist, wie:

{"object":"page", 
"entry":[ 
    { 
    "id":"1722858134648129", 
    "time":1465407550812, 
    "messaging":[ 
    { 
     "sender":{"id":"1131485883560113"}, 
     "recipient":{"id":"1722858134642218"}, 
     "timestamp":1465407550868, 
     "read": 
     { 
     "watermark":1465407548057, 
     "seq":428 
     }}]}]} 

Im Wesentlichen Sie Ihren Rückruf-Code muss alle Arten von JSON-Daten zu handhaben anmutig, einschließlich Unbekannten, auch wenn Sie nicht bereit sein, sie weiter zu verarbeiten . Für diejenigen, mit denen Sie nicht fertig sind oder an denen Sie nicht interessiert sind, geben Sie mit dem Http-Statuscode 204 nichts zurück (tatsächlich sollte jeder Callback 204 zurückgeben, da der Typ void ist). Wenn Sie nur solche JSON-Daten verarbeiten, an denen Sie interessiert sind, wird jede unerwartete JSON-Daten höchstwahrscheinlich eine Ausnahme auslösen, unabhängig davon, in welcher Sprache Ihr WebRückrufcode geschrieben ist und zu einem Fehler von 500 Servern an Facebook zurückgegeben wird. Es ist dieser 500 Fehler, der Facebook veranlasst, diese Beschwerde in Ihrer Frage zu machen.