在FB Messenger的webhook快速入門頁面找不到python中的任何東西。 (https://developers.facebook.com/docs/messenger-platform/quickstart)是否有新的FB Messenger webhook的Python端口?
1
A
回答
3
我繼續並自己移植它。我想應該分享這些財富。這個片段響應與每封郵件 「給你!」:
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
我寫了一個Python客戶端爲Facebook Messenger平臺:messengerbot
1
這是使用fbmq library蟒蛇樣品是工作對我來說:
回聲例如:
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)
非常感謝肖恩! 'r = requests.post('https://graph.facebook.com/v2.6/me/messages',json = json_data,params = params)''urllib'相當於什麼? –
本網站http://buddylindsey.com/basic-urllib-get-and-post-with-and-without-data/提供有關該主題的一些信息。我懷疑最終的代碼看起來像這樣: data = urllib.urlencode(json_data); u = urllib.urlopen(「https://graph.facebook.com/v2.6/me/messages?access_token = [access_token]」,data); – Sean
謝謝!我在GAE上運行代碼,所以不能使用'requests'。我使用了你指向的代碼,並以某種方式導致了「錯誤的請求400」。任何想法可能是錯的? –