Ich habe die folgende Ansicht unten angegeben:Echo bietet mit FB Messenger und Django
import json, requests
from pprint import pprint
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import View
from django.views.decorators.csrf import csrf_exempt
def echo(fb_id, received_message):
post_message_url = 'https://graph.facebook.com/v2.6/me/messages?access_token=EAAPZASejNRr4BACmWieSuuFpTcK9ZCZB7sJzdZCnw0WS3lUI6RXIZArgwt8m8Qg9JMm4GZACyIFPCG0CnubFxxfzzRomplntBHhr4ZCKzupGJZCiLjnw9UrUmgQWbCGXi5at9vZBVVmKFYSGfDZCVoY83KIIO62XiFXAr6Ut2OQIS2aAZDZD'
reply = json.dumps({
'recipient': {'id': fb_id},
'message': {'text': received_message},
})
status = requests.post(post_message_url, headers={'Content-Type': 'application/json'}, data=reply)
pprint(status.json())
class FbBotView(View):
@csrf_exempt
def dispatch(self, request, *args, **kwargs):
return View.dispatch(self, self.request, *args, **kwargs)
def get(self, request, *args, **kwargs):
if self.request.GET['hub.verify_token'] == '25461261':
return HttpResponse(request.GET['hub.challenge'])
else:
return HttpResponse('Error: Incorrect verification token')
def post(self, request, *args, **kwargs):
incoming_message = json.loads(self.request.body.decode('utf-8'))
for entry in incoming_message['entry']:
for message in entry['messaging']:
if 'message' in message:
pprint(message)
echo(message['sender']['id'], message['message']['text'])
return HttpResponse()
Das Tutorial gegeben here sagt, dass die Echofunktion innerhalb der FbBotView Klasse sein sollte. Sicher, der Bot schlägt nicht zurück, wenn ich die Echo-Funktion in die Klasse FbBotView setze. Warum ist das der Fall?