Skip to main content
https://travis-ci.org/shananin/fb_messenger.svg?branch=master https://img.shields.io/pypi/pyversions/fb_messenger.svg https://coveralls.io/repos/github/shananin/fb_messenger/badge.svg https://badge.fury.io/py/fb_messenger.svg https://img.shields.io/github/stars/shananin/fb_messenger.svg

Installation

Minimum Requirements

  • Python 2.7+ or Python 3.3+

Install from pip

pip install fb_messenger

Build from source

git clone https://github.com/shananin/fb_messenger
cd fb_messenger
python setup.py install

How to develop

make install # create virtualenv folder and install requirements
make lint # run pylint
make test # run tests
make clean # remove virtualenv folder

How to Use

Send simple text

from fb_messenger.client import FBMessenger
from fb_messenger import attachments
from fb.messenger.exceptions import MessengerAPIError

client = FBMessenger(ACCESS_TOKEN, logger_level=logging.DEBUG)
text = attachments.Text('hello!')

try:
    response = client.send_attachment(RECIPIENT_ID, text)
except MessengerAPIError as e:
    LOGGER.debug(e)

Send attachment

More examples look into examples folder.

image = attachments.Image('http://example.com/img.jpg')

try:
    response = client.send_attachment(RECIPIENT_ID, text)
except MessengerAPIError as e:
    LOGGER.debug(e)

Send action

from fb_messenger.types import action_types

try:
    response = client.send_action(RECIPIENT_ID, action_types.MARK_SEEN)
except MessengerAPIError as e:
    LOGGER.debug(e)

How to process messages in Flask

from flask import Flask, request
import logging
from fb_messenger.client import FBMessenger
from fb_messenger.types import webhook_types

app = Flask(__name__)

logging.basicConfig()
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)

client = FBMessenger(ACCESS_TOKEN, logger_level=logging.DEBUG)


@app.route('/webhook', methods=['GET'])
def get_webhook():
    if request.args.get('hub.verify_token', '') == VERIFY_TOKEN:
        return request.args.get('hub.challenge', '')

    return 'Error', 400


@app.route('/webhook', methods=['POST'])
def post_webhook():
    try:
        client.process_message(request.get_json())
    except Exception as e:
        LOGGER.debug(e)

    return 'ok'


@client.register_webhook(webhook_types.MESSAGE_RECEIVED)
def message_received(webhook):
    """
    :type webhook: fb_messenger.webhooks.MessageReceived
    """
    LOGGER.debug((webhook_types.MESSAGE_RECEIVED, webhook))


@client.register_webhook(webhook_types.POSTBACK_RECEIVED)
def postback_received(webhook):
    """
    :type webhook: fb_messenger.webhooks.Postback
    """
    LOGGER.debug((webhook_types.POSTBACK_RECEIVED, webhook))


@client.register_webhook(webhook_types.AUTHENTICATION)
def authentication(webhook):
    """
    :type webhook: fb_messenger.webhooks.Authentication
    """
    LOGGER.debug((webhook_types.AUTHENTICATION, webhook))


@client.register_webhook(webhook_types.ACCOUNT_LINKING)
def account_linking(webhook):
    """
    :type webhook: fb_messenger.webhooks.AccountLinking
    """
    LOGGER.debug((webhook_types.ACCOUNT_LINKING, webhook))


@client.register_webhook(webhook_types.MESSAGE_DELIVERED)
def message_delivered(webhook):
    """
    :type webhook: fb_messenger.webhooks.MessageDelivered
    """
    LOGGER.debug((webhook_types.MESSAGE_DELIVERED, webhook))


@client.register_webhook(webhook_types.MESSAGE_READ)
def message_read(webhook):
    """
    :type webhook: fb_messenger.webhooks.MessageRead
    """
    LOGGER.debug((webhook_types.MESSAGE_READ, webhook))


if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

Metadata

Release files for fb_messenger 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fb_messenger 0.3.0
File Size Uploaded Provenance
fb_messenger-0.3.0.tar.gz 8.0 kB Without provenance Details

Release files / fb_messenger-0.3.0.tar.gz

Download URL fb_messenger-0.3.0.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1351ed48f14deb32a5fdfe49af0947073057b2bf8bd0098e35ac9e8aa281b4f0
BLAKE2b-256 checksum
How to use checksums
add3165241b0b0ec2d1c22d010830444983b13134653865bb898eb96c3286166
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for fb_messenger 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page