Chatbot
Python chatbot
Installation
Install from PyPI:
pip install chatbotAI
install from github:
git clone https://github.com/ahmadfaizalbh/Chatbot.git
cd Chatbot
python setup.py install
Sample Code (with wikipedia search API integration)
from chatbot import Chat,reflections,multiFunctionCall
import wikipedia
def whoIs(query,sessionID="general"):
try:
return wikipedia.summary(query)
except:
for newquery in wikipedia.search(query):
try:
return wikipedia.summary(newquery)
except:
pass
return "I don't know about "+query
call = multiFunctionCall({"whoIs":whoIs})
firstQuestion="Hi, how are you?"
Chat("examples/Example.template", reflections,call=call).converse(firstQuestion)
For Detail on how to build Facebook messenger bot checkout Facebook Integration.ipynb
For Jupyter notebook Chatbot checkout Infobot built using NLTK-Chatbot
Sample Apps
- A sample facebook messenger bot built using messengerbot, Django and NLTK-Chatbot is available here Facebook messenger bot
- A sample microsoft bot built using Microsoft Bot Connector Rest API - v3.0, Django and NLTK-Chatbot is available here Micosoft Chatbot
List of feature supported in bot template
- Memory
- Get matched group
- Recursion
- Condition
- Change Topic
- Interact with python function
- REST API integration
- Topic based group
- Learn
- To upper case
- To lower case
- Capitalize
- Previous
Memory
Set Memory
{ variable : value }
In think mode
{! variable : value }
Get Memory
{ variable }
Get matched group
Get Nth matched group of client pattern
%N
Example to get first matched
%1
Get Nth matched group of bots pattern
%!N
Example to get first matched
%!1
Recursion
Get response as if client said this new statement
{% chat statement %}
It will do a pattern match for statement
Condition
{% if condition %} do this first {% elif condition %} do this next {% else %} do otherwise {% endif %}
Change Topic
{% topic TopicName %}
Interact with python function
{% call functionName: value %}
REST API integration
In API.json file
{ "APIName":{ "auth" : { "url":"https://your_rest_api_url/login.json", "method":"POST", "data":{ "user":"Your_Username", "password":"Your_Password" } }, "MethodName" : { "url":"https://your_rest_api_url/GET_method_Example.json", "method":"GET", "params":{ "key1":"value1", "key2":"value2", ... }, "value_getter":[order in which data has to be picked from json response] }, "MethodName1" : { "url":"https://your_rest_api_url/GET_method_Example.json", "method":"POST", "data":{ "key1":"value1", "key2":"value2", ... }, "value_getter":[order in which data has to be picked from json response] }, "MethodName2" : { ... }, ... }, "APIName2":{ ... }, ... }
If authentication is required only then
auth
method is needed.Thedata
andparams
defined in pi.json file acts as defult values and all key value pair defined in template file overrides the default value.value_getter
consistes of list of keys in order using which info from json will be collected.In Template file
[ APIName:MethodName,Key1:value1 (,Key*:value*) ]
you can have any number of key value pair and all key value pair will override data or params depending on
method
, ifmethod
isPOST
then it overrides data and if method isGET
then it overridesparams
.
Topic based group
{% group topicName %} {% block %} {% client %}client says {% endclient %} {% response %}response test% endresponse %} {% endblock %} ... {% endgroup %}
Learn
{% learn %} {% group topicName %} {% block %} {% client %}client says {% endclient %} {% response %}response test% endresponse %} {% endblock %} ... {% endgroup %} ... {% endlearn %}
To upper case
{% up string %}
To lower case
{% low string %}
Capitalize
{% cap string %}
Previous
{% block %} {% client %}client's statement pattern{% endclient %} {% prev %}previous bot's statement pattern{% endprev %} {% response %}response string{% endresponse %} {% endblock %}