Skip to content

cdunklau/fbemissary

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

fbemissary

A bot framework for the Facebook Messenger platform, built on asyncio and aiohttp.

Still very rough.

Example Usage

import sys
import asyncio
import logging
import collections

import aiohttp.web

import fbemissary


logger = logging.getLogger(__name__)


class EchoConversationalist(fbemissary.SerialConversationalist):
    async def event_received(self, event):
        if (
                isinstance(event, fbemissary.ReceivedMessage)
                and event.text is not None
            ):
            logger.debug(
                'Echoing message back to %r',
                self.counterpart_id)
            await self.replier.send_text_message(event.text)
        else:
            logger.warning('Ignoring event {0}'.format(event))


async def start(loop):
    fbmessenger = fbemissary.FacebookPageMessengerBot(
        app_secret='<APP_SECRET>',
        verify_token='<WEBHOOK_VERIFY_TOKEN>')
    factory = fbemissary.ConversationalistFactory(EchoConversationalist)
    fbmessenger.add_conversationalist_factory(
        page_id='<PAGE_ID>',
        page_access_token='<PAGE_ACCESS_TOKEN>',
        conversationalist_factory=factory)
    webapp = aiohttp.web.Application()
    await fbmessenger.start(
        '/webhooks/facebook-messenger',
        webapp.router,
        loop=loop
    )
    server_port = 8080
    server_interface = 'localhost'
    webhandler = webapp.make_handler(loop=loop)
    webserver = await loop.create_server(
        webhandler,
        server_interface,
        server_port,
    )


def main():
    logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
    loop = asyncio.get_event_loop()
    loop.create_task(start(loop))
    loop.run_forever()

if __name__ == '__main__':
    main()

About

A bot framework for the Facebook Messenger platform, built on asyncio and aiohttp

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages