A package to wrap the Messenger API
Project description
Opensource python wrapper to Messenger API
Features
API
- Verify the webhook
- Send text messages
- Send attachments from a remote file (image, audio, video, file)
- Send attachments from a local file (image, audio, video, file)
- Send templates (generic, buttons, media, receipent)
- Send quick replies
Other functionalities
- Get sender id
- Get type of message received
- Get text of the message received
- Get the url of the attachment received
- Get type of the attachment received
- Download attachments received
Installation
Install Pynani with pip
pip install pynani
Or install with pipenv (requires pipenv installed)
pipenv install pynani
Getting started
Prerequisites
- Python 3.8+ installed
- To get started using this module, you will need page access token which you can get from the Facebook Developer Portal
A simple echo bot
The Messenger class (defined in Messenger.py) encapsulates all API calls in a single class. It provides functions such as send_xyz (send_message, send_attachment etc.) and several ways to listen for incoming messages.
Create a file called echo_bot.py. Then, open the file and create an instance of the Messenger class.
from pynani import Messenger
PAGE_ACCESS_TOKEN = 'EAAxxxxxxx...'
mess = Messenger(PAGE_ACCESS_TOKEN)
[!IMPORTANT] Make sure to actually replace PAGE_ACCESS_TOKEN with your own page access token.
After that declaration, we need to register some message handlers. First, we need to create and verify a webhook with the help of Flask or FastAPI.
from flask import Flask, request, jsonify
app = Flask(__name__)
TOKEN = "abc123"
@app.get("/")
def meta_verify():
return mess.verify_token(request.args, TOKEN)
Now let's define a webhook that handles certain messages
@app.post("/")
def meta_webhook():
data = request.get_json()
sender_id = mess.get_sender_id(data)
message = mess.get_message_text(data)
if message == "Hello":
mess.send_text_message(sender_id, "Hello, World!")
if message == "Bye":
mess.send_text_message(sender_id, "Nice to meet you! 👍🏽")
return jsonify({"status": "success"}), 200
We now have a basic bot which replies a static message to "hello" and "bye" messages. To start the bot, add the following to our source file:
if __name__ =='__main__':
app.run(port=8080, debug=True)
Alright, that's it! Our source file now looks like this:
from flask import Flask, request, jsonify
from pynani import Messenger
PAGE_ACCESS_TOKEN = 'EAAxxxxxxx...'
TOKEN = "abc123"
mess = Messenger(PAGE_ACCESS_TOKEN)
app = Flask(__name__)
@app.get("/")
def meta_verify():
return mess.verify_token(request.args, TOKEN)
@app.post("/")
def meta_webhook():
data = request.get_json()
sender_id = mess.get_sender_id(data)
message = mess.get_message_text(data)
if message == "Hello":
mess.send_text_message(sender_id, "Hello, World!")
if message == "Bye":
mess.send_text_message(sender_id, "Nice to meet you! 👍🏽")
return jsonify({"status": "success"}), 200
if __name__ =='__main__':
app.run(port=8080, debug=True)
To start the bot, simply open up a terminal and enter python echo_bot.py
to run the bot! Test it by sending messages ("hello" and "bye").
Related
Here are some related projects that I was inspired by them.
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
Built Distribution
File details
Details for the file pynani-1.4.0.tar.gz
.
File metadata
- Download URL: pynani-1.4.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64d29206d54053436ca05457f190ffd74927362877960b94bf09ed2ed4ea287e |
|
MD5 | 4ddf48593c5637f613bea62744aee6dd |
|
BLAKE2b-256 | 819fc3ab002c67c160607830058b1b90bf4f99a73e80814159b929a47147f18f |
File details
Details for the file pynani-1.4.0-py3-none-any.whl
.
File metadata
- Download URL: pynani-1.4.0-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 831cbf042cb8647609b19412a53b22b00ee9e385d0058af3e8c080c28872ef93 |
|
MD5 | d5ca7da1b6f095b17dd7a1e63127706e |
|
BLAKE2b-256 | f04dd8c24c37d171b28bc0318a88c4cee81eed244551e997f33f5df2eb4542c8 |