A Python Library For Using The Facebook Messenger Platform API
Project 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
=================================================
|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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fbmq-1.5.1.tar.gz
(5.6 kB
view hashes)