Skip to main content

A Python Library For Using The Facebook Messenger Platform API

Project description

# FBMQ (Facebook Messenger Platform Python Library)
[![PyPI](https://img.shields.io/pypi/v/fbmq.svg?v=1&maxAge=3600)](https://pypi.python.org/pypi/fbmq)
[![PyPI](https://img.shields.io/pypi/l/fbmq.svg?v=1&maxAge=2592000)](https://pypi.python.org/pypi/fbmq)

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
```

![](./example/assets/screen2.jpg)
![](./example/assets/screen3.jpg)
![](./example/assets/screen4.jpg)
![](./example/assets/screen5.jpg)
![](./example/assets/screen6.jpg)
![](./example/assets/screen7.jpg)
![](./example/assets/screen8.jpg)
![](./example/assets/screen9.jpg)
![](./example/assets/screen10.jpg)

Project details


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.0.tar.gz (5.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page