Konnte nichts in Python für FB Messenger Webhook Schnellstart-Seite finden. (https://developers.facebook.com/docs/messenger-platform/quickstart)Gibt es einen Python-Port für den neuen FB Messenger-Webhook?
1
A
Antwort
3
Ich fuhr fort und portierte es selbst. Dargestellt sollte ich die Reichtümer teilen. Diese Code-Schnipsel Antwort auf jede Nachricht mit "Sie":
import json
import requests
from django.views.decorators.csrf import csrf_exempt
FB_MESSENGER_ACCESS_TOKEN = "<Your Access Token>"
def respond_FB(sender_id, text):
json_data = {
"recipient": {"id": sender_id},
"message": {"text": text + " to you!"}
}
params = {
"access_token": FB_MESSENGER_ACCESS_TOKEN
}
r = requests.post('https://graph.facebook.com/v2.6/me/messages', json=json_data, params=params)
print(r, r.status_code, r.text)
#this allows the requst to come in without requiring CSRF token
@csrf_exempt
def fb_webhook(request):
if request.method == "GET":
if (request.GET.get('hub.verify_token') == 'this_is_a_verify_token_created_by_sean'):
return HttpResponse(request.GET.get('hub.challenge'))
return HttpResponse('Error, wrong validation token')
if request.method == "POST":
body = request.body
print("BODY", body)
messaging_events = json.loads(body.decode("utf-8"))
print("JSON BODY", body)
sender_id = messaging_events["entry"][0]["messaging"][0]["sender"]["id"]
message = messaging_events["entry"][0]["messaging"][0]["message"]["text"]
respond_FB(sender_id, message)
return HttpResponse('Received.')
1
Ich habe ein Python-Client für Facebook Messenger-Plattform geschrieben: messengerbot
1
Dies ist die Python-Probe mit fbmq library dass funktioniert für mich:
Echo Beispiel:
from flask import Flask, request
from fbmq import Page
page = fbmq.Page(PAGE_ACCESS_TOKEN)
@app.route('/webhook', methods=['POST'])
def webhook():
page.handle_webhook(request.get_data(as_text=True))
return "ok"
@page.handle_message
def message_handler(event):
page.send(event.sender_id, event.message_text)
Verwandte Themen
- 1. Gibt es einen Standard für den Kontextaustausch?
- 2. Gibt es einen Reflog für den Index?
- 3. Gibt es einen neuen/aktualisierten Twill?
- 4. Gibt es einen neuen Reliktklon für Arm (Raspberry PI)?
- 5. OSGI Anfänger Tutorials sind veraltet. Gibt es einen neuen Standard?
- 6. Gibt es einen neuen Rubin auf Schienen gegen Django-Artikel?
- 7. Gibt es einen App-Maker für den Android?
- 8. Gibt es einen CSS-Pseudo-Selektor für den Überlauf?
- 9. Gibt es einen Abfangpunkt wie prepareForSegue für den TabBarController?
- 10. Gibt es einen Metadaten-Ausschlussfilter für den SVN-DIFF-Befehl?
- 11. Gibt es einen Ersatz für den Webmin-Dateimanager?
- 12. Gibt es einen TFS-Leitfaden für den Bearbeitungsworkflow?
- 13. Gibt es einen maximalen Wert für den Versionscode?
- 14. Decodierung mit NSCoding: Gibt es einen Wert für den Schlüssel?
- 15. Gibt es einen Unterschied zwischen SqlConnection.CreateCommand und neuen SqlCommand?
- 16. Gibt es einen Unterschied zwischen den Randwerten?
- 17. Gibt es einen Vorteil für dieses Makro?
- 18. Gibt es einen Indextyp für Swift String?
- 19. Gibt es einen Debugger für LLVM IR?
- 20. Gibt es einen Base64Stream für .NET? woher?
- 21. Gibt es einen plattformübergreifenden Rahmen für C?
- 22. Gibt es einen Ersatz für Transact-SQL
- 23. Gibt es einen offiziellen Ersatz für CodeDom?
- 24. Gibt es einen log4net-Speicherappender?
- 25. Gibt es einen WMA-Spi für Javasound?
- 26. Gibt es einen Ersatz für MDTPtools?
- 27. Gibt es einen Java-SDK für Cygwin?
- 28. Gibt es einen Omniauth für PHP?
- 29. Gibt es einen Emacs-Modus für Rscript?
- 30. Gibt es einen BNF-Modus für Emacs?
Vielen Dank Sean! Was wäre das 'urllib'-Äquivalent für' r = requests.post ('https://graph.facebook.com/v2.6/me/messages', json = json_data, params = params) '? –
Diese Website http://buddylindsey.com/basic-urllib-get-and-post-with-and-without-data/ bietet einige Informationen zum Thema. Ich vermute, dass der endgültige Code in etwa so aussehen würde: data = urllib.urlencode (json_data); u = urllib.urlopen ("https://graph.facebook.com/v2.6/me/messages? Access_token = [access_token]", Daten); – Sean
Danke! Ich lasse den Code auf GAE laufen, also kann ich 'Anfragen' nicht verwenden. Ich habe den Code benutzt, auf den du gedeutet hast, und es führt irgendwie zu einem 'Bad Request 400'. Irgendeine Idee, was könnte falsch sein? –