Metadata-Version: 1.0
Name: fbmq
Version: 1.5.1
Summary: A Python Library For Using The Facebook Messenger Platform API
Home-page: https://github.com/conbus/fbmq
Author: kimwz
Author-email: kimwz.kr@gmail.com
License: MIT
Description: FBMQ (Facebook Messenger Platform Python Library)
        =================================================
        
        |PyPI| |PyPI|
        
        A Python Library For Using The Facebook Messenger Platform API (Python
        Facebook Chat & Chatbot Library) Facebook messenger platform api full
        features are supported
        
        Install
        =======
        
        ::
        
            pip install fbmq
        
        Handle Webhook
        ==============
        
        Usage (with flask)
        ------------------
        
        ::
        
            from flask import Flask, request
            import fbmq
        
            @app.route('/webhook', methods=['POST'])
            def webhook():
              payload = request.get_data(as_text=True)
              fbmq.handle_webhook(payload,
                                  optin=optin_handler,
                                  message=message_handler,
                                  echo=echo_handler,
                                  delivery=delivery_handler,
                                  postback=postback_handler,
                                  read=read_handler,
                                  account_linking=account_linking_handler)
              return "ok"
        
            def message_handler(event):
              sender_id = event['sender']['id']
              message = event['message']
              
              page = fbmq.Page(PAGE_ACCESS_TOKEN)  
              page.send(sender_id, "thank you! your message is '%s'" % message)
        
        Request
        =======
        
        Setting
        -------
        
        ::
        
            from fbmq import Attachment, Template, QuickReply, Page
        
            page = Page(PAGE_ACCESS_TOKEN)
        
        Basic
        -----
        
        Text
        ^^^^
        
        ::
        
            page.send(recipient_id, "hello world!")
        
        Image (jpg, png, gif support)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        ::
        
            page.send(recipient_id, Attachment.Image(image_url))
        
        Audio
        ^^^^^
        
        ::
        
            page.send(recipient_id, Attachment.Audio(audio_url))
        
        Video
        ^^^^^
        
        ::
        
            page.send(recipient_id, Attachment.Video(video_url))
        
        File
        ^^^^
        
        ::
        
            page.send(recipient_id, Attachment.File(file_url))
        
        quick reply
        ^^^^^^^^^^^
        
        ::
        
            quick_replies = [
              QuickReply(title="Action", payload="PICK_ACTION"),
              QuickReply(title="Comedy", payload="PICK_COMEDY")
            ]
        
            page.send(recipient_id, 
                      "What's your favorite movie genre?",
                      quick_replies=quick_replies,
                      metadata="DEVELOPER_DEFINED_METADATA")
        
        you can use dict instead of QuickReply class
        
        ::
        
            quick_replies = [{'title': 'Action', 'payload': 'PICK_ACTION'},
                            {'title': 'Comedy', 'payload': 'PICK_COMEDY'}}
        
        typing on/off
        ^^^^^^^^^^^^^
        
        ::
        
            page.typing_on(recipient_id)
            page.typing_off(recipient_id)
        
        Templates
        ---------
        
        Template : Button
        ^^^^^^^^^^^^^^^^^
        
        ::
        
            buttons = [
              Attachment.ButtonWeb("Open Web URL", "https://www.oculus.com/en-us/rift/"),
              Attachment.ButtonPostBack("trigger Postback", "DEVELOPED_DEFINED_PAYLOAD"),
              Attachment.ButtonPhoneNumber("Call Phone Number", "+16505551234")
            ]
            page.send(recipient_id, Template.Buttons("hello", buttons))
        
        you can use dict instead of Button class
        
        ::
        
            buttons = [{'type': 'web_url', 'title': 'Open Web URL', 'value': 'https://www.oculus.com/en-us/rift/'},
                      {'type': 'postback', 'title': 'trigger Postback', 'value': 'DEVELOPED_DEFINED_PAYLOAD'},
                      {'type': 'phone_number', 'title': 'Call Phone Number', 'value': '+16505551234'}]
        
        Template : Generic
        ^^^^^^^^^^^^^^^^^^
        
        ::
        
            page.send(recipient_id, Template.Generic([
              Template.GenericElement("rift",
                                      subtitle="Next-generation virtual reality",
                                      item_url="https://www.oculus.com/en-us/rift/",
                                      image_url=CONFIG['SERVER_URL'] + "/assets/rift.png",
                                      buttons=[
                                          Template.ButtonWeb("Open Web URL", "https://www.oculus.com/en-us/rift/"),
                                          Template.ButtonPostBack("tigger Postback", "DEVELOPED_DEFINED_PAYLOAD"),
                                          Template.ButtonPhoneNumber("Call Phone Number", "+16505551234")
                                      ]),
              Template.GenericElement("touch",
                                      subtitle="Your Hands, Now in VR",
                                      item_url="https://www.oculus.com/en-us/touch/",
                                      image_url=CONFIG['SERVER_URL'] + "/assets/touch.png",
                                      buttons=[
                                          Template.ButtonWeb("Open Web URL", "https://www.oculus.com/en-us/rift/"),
                                          Template.ButtonPostBack("tigger Postback", "DEVELOPED_DEFINED_PAYLOAD"),
                                          Template.ButtonPhoneNumber("Call Phone Number", "+16505551234")
                                      ])
            ]))
        
        Template : Receipt
        ^^^^^^^^^^^^^^^^^^
        
        ::
        
                element = Template.ReceiptElement(title="Oculus Rift",
                                                  subtitle="Includes: headset, sensor, remote",
                                                  quantity=1,
                                                  price=599.00,
                                                  currency="USD",
                                                  image_url=CONFIG['SERVER_URL'] + "/assets/riftsq.png"
                                                  )
        
                address = Template.ReceiptAddress(street_1="1 Hacker Way",
                                                  street_2="",
                                                  city="Menlo Park",
                                                  postal_code="94025",
                                                  state="CA",
                                                  country="US")
        
                summary = Template.ReceiptSummary(subtotal=698.99,
                                                  shipping_cost=20.00,
                                                  total_tax=57.67,
                                                  total_cost=626.66)
        
                adjustment = Template.ReceiptAdjustment(name="New Customer Discount", amount=-50)
        
                fbpage.send(recipient_id, Template.Receipt(recipient_name='Peter Chang',
                                                        order_number='1234',
                                                        currency='USD',
                                                        payment_method='Visa 1234',
                                                        timestamp="1428444852",
                                                        elements=[element],
                                                        address=address,
                                                        summary=summary,
                                                        adjustments=[adjustment]))
        
        Example
        =======
        
        1. fill example/config.py
        2. run server
        
           ::
        
               cd example
               virtualenv env
               source env/bin/activate
               pip install -r requirements.txt
               python server.py
        
        |image2| |image3| |image4| |image5| |image6| |image7| |image8| |image9|
        |image10|
        
        .. |PyPI| image:: https://img.shields.io/pypi/v/fbmq.svg?v=1&maxAge=3600
           :target: https://pypi.python.org/pypi/fbmq
        .. |PyPI| image:: https://img.shields.io/pypi/l/fbmq.svg?v=1&maxAge=2592000
           :target: https://pypi.python.org/pypi/fbmq
        .. |image2| image:: ./example/assets/screen2.jpg
        .. |image3| image:: ./example/assets/screen3.jpg
        .. |image4| image:: ./example/assets/screen4.jpg
        .. |image5| image:: ./example/assets/screen5.jpg
        .. |image6| image:: ./example/assets/screen6.jpg
        .. |image7| image:: ./example/assets/screen7.jpg
        .. |image8| image:: ./example/assets/screen8.jpg
        .. |image9| image:: ./example/assets/screen9.jpg
        .. |image10| image:: ./example/assets/screen10.jpg
        
        
Keywords: Facebook Messenger Platform Chatbot
Platform: UNKNOWN
