【问题标题】:Facebook messenger bot not sending messages (Python/Django)Facebook Messenger bot 不发送消息(Python/Django)
【发布时间】:2016-05-05 07:53:43
【问题描述】:

我已经关注this tutorial 实现了一个 Facebook Messenger 机器人,它可以简单地回显您输入的内容。它可以与 Facebook 连接,但除此之外我无法让它工作,我找不到问题所在。你能帮我么?这是目前的代码(与教程中的代码相比略有修改)。

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()

【问题讨论】:

    标签: python django facebook facebook-graph-api


    【解决方案1】:

    尝试放置整个函数

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

    在 BotsView 类之外。如果将其保留在类中,则必须将“self”作为其第一个参数,并且必须在类中以

    的形式访问它们
    self.post_facebook_message(.....)
    

    但是,将此函数放在 Django 视图类中可能不是最好的选择。

    p.s - 谢谢你,我将更新教程以明确这一点。

    【讨论】:

      猜你喜欢
      • 2016-09-06
      • 2017-06-04
      • 2017-12-05
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多