Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Sha committed Feb 12, 2018
0 parents commit c68f5ec
Show file tree
Hide file tree
Showing 28 changed files with 2,986 additions and 0 deletions.
Binary file added .DS_Store
Binary file not shown.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# py-Chatbot
307 changes: 307 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,307 @@
Chatbot
=======

Python chatbot AI that helps in creating a python based chatbot with
minimal coding. This provides both bots AI and chat handler and also
allows easy integration of REST API's and python function calls which
makes it unique and more powerful in functionality. This AI provides
numerous features like learn, memory, conditional switch, topic-based
conversation handling, etc.

Installation
------------

Install from PyPI:

.. code:: sh
pip install chatbotAI
install from github:

.. code:: sh
git clone https://github.com/ahmadfaizalbh/Chatbot.git
cd Chatbot
python setup.py install
Sample Code (with wikipedia search API integration)
---------------------------------------------------

.. code:: python
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 <https://github.com/ahmadfaizalbh/Meetup-Resources/blob/master/Facebook%20Integration.ipynb>`__

For Jupyter notebook Chatbot checkout `Infobot built using
NLTK-Chatbot <https://github.com/ahmadfaizalbh/Meetup-Resources/blob/master/How%20to%20build%20a%20bot.ipynb>`__

Sample Apps
^^^^^^^^^^^

1. A sample facebook messenger bot built using
`messengerbot <https://github.com/geeknam/messengerbot/pulls>`__,
`Django <https://github.com/django/django>`__ and
`NLTK-Chatbot <#chatbot>`__ is available here `Facebook messenger
bot <https://github.com/ahmadfaizalbh/FacebookMessengerBot/>`__
2. A sample microsoft bot built using `Microsoft Bot Connector Rest API
-
v3.0 <https://docs.botframework.com/en-us/restapi/connector/#navtitle>`__,
`Django <https://github.com/django/django>`__ and
`NLTK-Chatbot <#chatbot>`__ is available here `Micosoft
Chatbot <https://github.com/ahmadfaizalbh/Microsoft-chatbot/>`__

List of feature supported in bot template
-----------------------------------------

1. `Memory <#memory>`__
2. `Get matched group <#get-matched-group>`__
3. `Recursion <#recursion>`__
4. `Condition <#condition>`__
5. `Change Topic <#change-topic>`__
6. `Interact with python function <#interact-with-python-function>`__
7. `REST API integration <#rest-api-integration>`__
8. `Topic based group <#topic-based-group>`__
9. `Learn <#learn>`__
10. `To upper case <#to-upper-case>`__
11. `To lower case <#to-lower-case>`__
12. `Capitalize <#capitalize>`__
13. `Previous <#previous>`__

--------------

Memory
------

Set Memory
^^^^^^^^^^

.. code:: sh
{ variable : value }
In think mode
.. code:: sh
{! variable : value }
Get Memory
^^^^^^^^^^
.. code:: sh
{ variable }
Get matched group
-----------------
Get Nth matched group of client pattern
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: sh
%N
Example to get first matched
.. code:: sh
%1
Get Nth matched group of bots pattern
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: sh
%!N
Example to get first matched
.. code:: sh
%!1
Recursion
---------
Get response as if client said this new statement
.. code:: sh
{% 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
------------
.. code:: sh
{% topic TopicName %}
Interact with python function
-----------------------------
.. code:: sh
{% call functionName: value %}
REST API integration
--------------------
In API.json file
^^^^^^^^^^^^^^^^
.. code:: sh
{
"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.The
``data`` and ``params`` 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
^^^^^^^^^^^^^^^^
.. code:: sh
[ 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``, if ``method`` is
``POST`` then it overrides data and if method is ``GET`` then it
overrides ``params``.
Topic based group
-----------------
.. code:: sh
{% group topicName %}
{% block %}
{% client %}client says {% endclient %}
{% response %}response text{% endresponse %}
{% endblock %}
...
{% endgroup %}
Learn
-----
.. code:: sh
{% learn %}
{% group topicName %}
{% block %}
{% client %}client says {% endclient %}
{% response %}response text{% endresponse %}
{% endblock %}
...
{% endgroup %}
...
{% endlearn %}
To upper case
-------------
.. code:: sh
{% up string %}
To lower case
-------------
.. code:: sh
{% low string %}
Capitalize
----------
.. code:: sh
{% cap string %}
Previous
--------
.. code:: sh
{% block %}
{% client %}client's statement pattern{% endclient %}
{% prev %}previous bot's statement pattern{% endprev %}
{% response %}response string{% endresponse %}
{% endblock %}
Binary file added chatbot/.DS_Store
Binary file not shown.
Loading

0 comments on commit c68f5ec

Please sign in to comment.