Skip to main content

This is the vxmessenger project.

Project description

Vumi Messenger Transport

https://img.shields.io/travis/praekeltfoundation/vumi-messenger.svg https://img.shields.io/pypi/v/vxmessenger.svg Code Coverage vxmessenger Docs

All of Vumi’s applications can be surfaced on Messenger with the Messenger Transport. It provides a great experience for interactive mobile conversations at scale.

Getting Started

Install Junebug, the standalone Vumi transport launcher and the Facebook Messenger Transport:

$ apt-get install redis-server rabbitmq-server
$ pip install junebug
$ pip install vxmessenger

Launch the Junebug service with thet Vumi Messenger channel configured:

$ jb -p 8000 \
    --channels facebook:vxmessenger.transport.MessengerTransport \
    --logging-path .

Using the template, below and update your FB_PAGE_ID, FB_ACCESS_TOKEN and save it as a file called config.json:

{
  "type": "facebook",
  "amqp_queue": "messenger_transport",
  "public_http": {
    "enabled": true,
    "web_path": "/api",
    "web_port": 8051
  },
  "config": {
    "web_path": "/api",
    "web_port": 8051,
    "noisy": true,
    "page_id": "YOUR_FB_PAGE_ID",
    "retrieve_profile": true,
    "welcome_message": [{
      "message": {
        "text": "Hi :) Welcome to our Messenger Bot!"
      }
    }],
    "outbound_url": "https://graph.facebook.com/v2.6/me/messages",
    "access_token": "YOUR_FB_ACCESS_TOKEN"
  }
}

Post it to Junebug to start the channel:

$ curl -X POST -d@config.json http://localhost:8000/channels/

You’re now able to communicate with Facebook’s Messenger API and can offer bot access to your Vumi application.

Facebook will want to verify your application, for that to work make sure it’s served over SSL. The API URL is:

http://localhost:8051/api

If you’ve used a different web_port and web_path parameter you’ll need to update the URL accordingly.

Hook up an Application to your Messenger integration

All Vumi applications can be surfaced on Facebook Messenger as bots, how about hooking up a simple game of hangman?:

$ twistd -n vumi_worker \
    --worker-class=vumi.demos.hangman.HangmanWorker \
    --set-option=random_word_url:http://randomword.setgetgo.com/get.php \
    --set-option=transport_name:messenger_transport \
    --set-option=worker_name:hangman

Javascript Sandbox applications are also available. Check out some of the examples below:

Sample FAQ browser

https://github.com/smn/faqbrowser-docker

Sample Service rating application

https://github.com/smn/servicerating-docker

Richer Templates

The Vumi Messenger Transport allows one to use the richer templates available, including texts, images, hyperlinks and buttons.

To make use of these add the relevant helper_metadata to your outbound Vumi message:

A Button Reply

Please be aware of the limitations that Facebook applies to these messages. A call to action may only have a maximum of 3 buttons and character count limits appy.

self.publish_message(
    helper_metadata={
        'messenger': {
            'template_type': 'button'
            'text': 'The accompanying text with the button',
            'buttons': [{ # Up to 3 buttons
                'type': 'postback', # defaults to postback if not specified
                'title': 'Button 1',
                'payload': {
                    'content': 'The content expected when a button is pressed',
                    'in_reply_to': 'The ID of the previous message' # This can be left blank
                }
            }, {
                'type': 'web_url',
                'title': 'Button 2',
                'url': 'http://some.url'
            }]
        }
    })

A Generic Reply

Please be aware of the limitations that Facebook applies to these messages. A call to action may only have a maximum of 3 buttons, 10 elements, and character count limits appy.

self.publish_message(
    helper_metadata={
        'messenger': {
            'template_type': 'generic'
            'elements': [{ # Up to 10 elements
                'title': 'The title',
                'subtitle': 'The subtitle', # This can be left blank
                'image_url': 'The image_url to use', # This can be left blank
                'buttons': [{ # Up to 3 buttons
                    'type': 'postback', # defaults to postback if not specified
                    'title': 'Button 1',
                    'payload': {
                        'content': 'The content expected when a button is pressed',
                        'in_reply_to': 'The ID of the previous message' # This can be left blank
                    }
                }, {
                    'type': 'web_url',
                    'title': 'Button 2',
                    'url': 'http://some.url'
                }]
            }]
        }
    })

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

vxmessenger-1.1.1.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

vxmessenger-1.1.1-py2-none-any.whl (12.1 kB view details)

Uploaded Python 2

File details

Details for the file vxmessenger-1.1.1.tar.gz.

File metadata

  • Download URL: vxmessenger-1.1.1.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for vxmessenger-1.1.1.tar.gz
Algorithm Hash digest
SHA256 8a5b6806ae8366a4f80b260dd103737709c8006c0b4eb485a5c6e3d0e9d5f8f8
MD5 ef9a4ef44df878690f3da0ee6191164d
BLAKE2b-256 37a8ed36ae38c9bdc1f3ef2eb5b1d50c0edb5e768cbccf4e5a640078fe95a8dc

See more details on using hashes here.

Provenance

File details

Details for the file vxmessenger-1.1.1-py2-none-any.whl.

File metadata

File hashes

Hashes for vxmessenger-1.1.1-py2-none-any.whl
Algorithm Hash digest
SHA256 630fa210c01b8239ab1bd396452108ce63d4369072d0e8aa65c6c5df0f964517
MD5 6d17dc56ed9af0b14f0b94c24a3c2d53
BLAKE2b-256 1ba3086192bdc2e535cb1c569819a45fafdcc9efdfb90f314df953c3a4f2836f

See more details on using hashes here.

Provenance

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