Skip to main content

This package automates the process of bot creation

Project description

ChatBotMaker

This project aims to automate plateform messaging where the plateform support message forwarding.

Description

This module is based around a bot class in which you inject the necessary code / objects:

  • Messenger (An object that sends message or event back)
  • Dispatcher (An object that contains all the logic rule)
  • Database (An object that allows database interaction)

Components

Messenger

You can create your own messenger class that should inherit the chatbotmaker.Messenger class.
It must implement a send(user_id: str, message:str) method and can implement other optional methods.

Dispatcher

The dispatcher recieves your config as a dictionnary in the following format:

{  
  'actions': {  
    'handle\_name': {  
        'pref-func': lambda user: user.send\_message('Hi there'),  
        'func': lambda user, user\_input: user.change\_state('home'),  
        'post-func': lambda user: user.send\_message('You are redirected'),  
    },  
    'home': {  
        'pref-func': lambda user: user.send\_message('Welcome back!'),  
        'func': 'lambda user, user\_input: user.change\_state(user\_input)',  
    },  
    'input': {  
        'func': 'lambda user, user\_input: (  
                    user.store\_argument('input', user\_input),  
                    user.change\_state('home'),  
                )',  
    },  
  }  
}

The user is an ExtendedUser class that has following attributes added:

  • send_message(message: str)
  • change_state(state: str)
  • get_argument(name: str)
  • store_argument(name: str, value: str)
  • self.messenger, self.dispatcher, self.database (the one onjected in the bot)

Database

In the most configurable form you need to define yourself the whole database scheme. def init(self, engine, session, user_class, argument_class) It MUST have a User(users) and Argument(arguments) table with:

  • users:
    • id = Column(Integer, primary_key=True)
    • fb_id = Column(String)
    • state = Column(String)
    • arguments = relationship('Argument', back_populates='user', lazy='dynamic')
  • arguments:
    • id = Column(Integer, primary_key=True)
    • name = Column(String)
    • value = Column(String)
    • user_id = Column(Integer, ForeignKey('users.id'))
    • user = relationship('User', uselist=False, back_populates='arguments')

Usage

Default components

To avoid re-inventing the wheel, some "common" components have already been coded. They are in chatbotmaker.default.

Facebook

  • FacebookMessenger(authentication_token)
  • facebook_route(request, facebook_check_token, bot)
    • this flask routing should be called directly from the routing point

Dev

We have the dev file containing:

  • DevMessenger() # prints everythin in console

SimpleDatabase

We have the simple_database file containing:

  • SimpleDatabase(config) # sqlalchemy config file
    • This created automatically the User and Argument class. In the future, you will be able to inject tables and relationships

Installation

Using PIP since its a pip module repository:

42sh$ : pip install chatbotmaker

Contributing

Do no hesitate to make a pull request or launch a discussion. I am looking foreward to expand the default capabilites.

Authors and acknowledgment

Author:

Dominique MICHEL dominique.michel@epita.fr

Status

The project has reached its first final phase. Now there will be:

  • need to think about the design and facilitate user-database integration
  • need of tests (why not make a CI pipeline)

Once the backend is functional and robust, i aim to make a frontend plateform to allow non-programming people to create bots too.

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

chatbotmaker-0.0.4.tar.gz (12.6 kB view hashes)

Uploaded Source

Built Distribution

chatbotmaker-0.0.4-py3-none-any.whl (10.0 kB view hashes)

Uploaded Python 3

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