2016-05-03 15 views
0

私はthis tutorialに続いて、あなたが入力したものだけをエコーするFacebook Messengerボットを実装しました。それはFacebookと大丈夫ですが、私はそれを超えて働かせることはできませんし、私は問題を見つけることができません。手伝ってくれませんか?これはこれまでのコードです(チュートリアルのコードと比べて少し変更が加えられています)。Facebookのメッセンジャーボットはメッセージを送信しません(Python/Django)

class BotsView(generic.View): 
    def get(self, request, *args, **kwargs): 
     if self.request.GET.get('hub.verify_token') == '1111111111': 
      return HttpResponse(self.request.GET.get('hub.challenge')) 
     else: 
      return HttpResponse('Error, invalid token') 

    def post_facebook_message(fbid, recevied_message):   
     post_message_url = 'https://graph.facebook.com/v2.6/me/messages?access_token=<access-token>' 
     response_msg = json.dumps({"recipient":{"id":fbid}, "message":{"text":recevied_message}}) 
     requests.post(post_message_url, headers={"Content-Type": "application/json"},data=response_msg) 
     return HttpResponse() 

    @method_decorator(csrf_exempt) 
    def dispatch(self, request, *args, **kwargs): 
     return generic.View.dispatch(self, request, *args, **kwargs) 

    def post(self, request, *args, **kwargs): 
     # Converts the text payload into a python dictionary 
     incoming_message = json.loads(self.request.body) 
     # Facebook recommends going through every entry since they might send 
     # multiple messages in a single call during high load 
     for entry in incoming_message['entry']: 
      for message in entry['messaging']: 
       # Check to make sure the received call is a message call 
       # This might be delivery, optin, postback for other events 
       if message.has_key('message'): 
        # Print the message to the terminal 
        # pprint(message) 
        # Assuming the sender only sends text. Non-text messages like stickers, audio, pictures 
        # are sent as attachments and must be handled accordingly. 
        post_facebook_message(message['sender']['id'], message['message']['text'])  
     return HttpResponse() 

答えて

1

全体の機能にBotsViewクラスの外

def post_facebook_message(fbid, recevied_message): 
    .... 

を配置してみます。あなたはクラスの中でそれを維持する場合は、その最初のパラメータとして「自己」でなければならないと、彼らは

self.post_facebook_message(.....) 

として、クラス内でアクセスする必要がありますしかし、この機能を置くための最善のことではないかもしれませんDjango Viewクラス。

p.s - ありがとう、この点を明示するためにチュートリアルを更新します。

関連する問題