Skip to content

cdunklau/fbemissary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

image

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