2016-05-24 1 views
2

Je suis en train de suivre le QuickStart Facebook Messenger Code Bot (trouvé ici: https://developers.facebook.com/docs/messenger-platform/quickstart)erreur avec le code bot messager Facebook

Et j'obtiens cette erreur:

{ "erreur": { » message ":" (# 100) le destinataire de param doit être non vide. "," type ":" OAuthException "," code ": 100," fbtrace_id ":" ALtKsX4nJtX "}}

Des idées? On dirait que je retourne la bonne réponse, mais pour une raison quelconque, Facebook ne l'accepte pas? Merci

code comme suit (python/AppEngine):

import webapp2 
import json 
import urllib 
from google.appengine.api import urlfetch 

class MainHandler(webapp2.RequestHandler): 
    print "hello" 

FB_MESSENGER_ACCESS_TOKEN = "" 

def respond_FB(sender_id, text): 
    json_data = { 
     "recipient": {"id": sender_id}, 
     "message": {"text": text + " to you!"} 
    } 
    url = "https://graph.facebook.com/v2.6/me/messages?access_token="+FB_MESSENGER_ACCESS_TOKEN 
    print("json_data", json_data) 
    data = urllib.urlencode(json_data) 
    response = urlfetch.fetch(url = url, payload = data, method = urlfetch.POST, headers = {"Content-Type": "application/json"}) 
    print(response.content) 

class FacebookMessenger(webapp2.RequestHandler): 
    def get(self): 
     if (self.request.get("hub.verify_token") == 'tomstoken'): 
      return self.response.write(self.request.get("hub.challenge")) 
     return self.response.write('Error, wrong validation token') 


    def post(self): 
     body = self.request.body 
     messaging_events = json.loads(body.decode("utf-8")) 
     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 self.response.write('Received.') 

app = webapp2.WSGIApplication([ 
    ('/', MainHandler), 
    ('/webhook*', FacebookMessenger) 
], debug=True) 
+0

Il semblerait que je devais envelopper sender_id dans str (sender_id) ..... – tomcritchlow

Répondre

1

Je viens de tester avec votre fonction respond_FB(sender_id, text) et que je n'ai pas Google App Engine api donc j'utilisé requests

response = requests.post(url, json=data) 

et tout va bien si data est remplacé par

ne sait pas pourquoi vous devez avoir le json_data encodé, ce n'est pas l'URL