I aim to give users a new way to interact with Google Maps through engaging text-based conversational interfaces.
I'm only a baby bot right now, I need you to feed me with logic, data and inspiration.
The primary motivation of the developers of MapBot is to provide a playground to tech enthusiasts, both beginners and advanced to try algorithms, approaches and ideas while contributing to a real-life project.
- I want to help users in the most comprehensive way.
- I want to give 'geeks' a platform to try out all things 'cool'.
Check out all related information here
- MySQL
- Install the community version of mySQL from the official mySQL documentation page.
- Create root user credentials during installation.
- Verify the installation, running the command
mysql -uroot -p -hlocalhost
should open the mySQL monitor. (Enter the root password when prompted)
- StanfordCoreNLP
How to set me up on CLI?
- Clone the repository
- Create the mapbot database in mySQL
mysql -uroot -p -hlocalhost
- Enter root password when prompted
create database mapbot;
- Verify creation of the database
show databases;
- Unzip the StanfordCoreNLP package in the repository and keep the file paths
stanford-corenlp-x.x.x.jar
andstanford-corenlp-x.x.x-models.jar
handy. - Run
git update-index --assume-unchanged ENV/.env
- Fill the existing template in
ENV/.env
with the corresponding values following theKEY=VALUE
format - Install dependencies from
requirements.txt
file. Runpip install -r requirements.txt
- You're all set up, run the
init.py
file.python init.py
- It is recommended that you set this project up in a virtual environment to keep the dependencies separated and for easier debugging. Here's how you can do that -
How to set me up with an UI?
- Clone the repository
- Create the mapbot database in mySQL
mysql -uroot -p -hlocalhost
- Enter root password when prompted
create database mapbot;
- Verify creation of the database
show databases;
- Unzip the StanfordCoreNLP package in the repository and keep the file paths
stanford-corenlp-x.x.x.jar
andstanford-corenlp-x.x.x-models.jar
handy. - Run
git update-index --assume-unchanged ENV/.env
- Fill the existing template in
ENV/.env
with the corresponding values following theKEY=VALUE
format - Install dependencies from
requirements.txt
file. Runpip install -r requirements.txt
- You're all set up. Execute
python webapp.py
to start up the server. - Visit
http://127.0.0.1:5000/
to interact with your MapBot. - It is recommended that you set this project up in a virtual environment to keep the dependencies separated and for easier debugging. Here's how you can do that -
How to deploy on Docker?
- Docker
- Take a look at this for detailed installation instructions for Docker on Windows, Linux and Mac systems.
- Verify the installations by
docker --version
anddocker-compose --version
- Clone the repository
- Fill up the
GCLOUD_API_KEY
inENV/docker.env
- Run
docker-compose up
- Visit
localhost:5000
to interact with the deployment
How to set me up on Telegram?
- Clone the repository
- Create the mapbot database in mySQL
mysql -uroot -p -hlocalhost
- Enter root password when prompted
create database mapbot;
- Verify creation of the database
show databases;
- Unzip the StanfordCoreNLP package in the repository and keep the file paths
stanford-corenlp-x.x.x.jar
andstanford-corenlp-x.x.x-models.jar
handy. - Run
git update-index --assume-unchanged ENV/.env
- Fill the existing template in
ENV/.env
with the corresponding values following theKEY=VALUE
format - For
TELEGRAM_BOT_TOKEN=<YOUR_API_KEY_HERE>
, open your Telegram app and follow this tutorial on how to create a new bot on Telegram and get your own bot token. Once your token is generated, update the.env
file in/ENV
with it. - Find your bot on Telegram using
@bot_username
that you chose, and send the first text to your new bot. Nothing is supposed to happen for now. No worries. - Install dependencies from
requirements.txt
file. Runpip install -r requirements.txt
- You're all set up, run the
telegram.py
file.python telegram.py
and converse with your bot in real time.
How to set me up on Slack?
- Clone the repository
- Create the mapbot database in mySQL
mysql -uroot -p -hlocalhost
- Enter root password when prompted
create database mapbot;
- Verify creation of the database
show databases;
- Unzip the StanfordCoreNLP package in the repository and keep the file paths
stanford-corenlp-x.x.x.jar
andstanford-corenlp-x.x.x-models.jar
handy. - Run
git update-index --assume-unchanged ENV/.env
- Fill the existing template in
ENV/.env
with the corresponding values following theKEY=VALUE
format - Follow the steps prompted here to create a classic slack app. Navigate to Basic Information section of the slack app. Under the Add features and functionality subheading click on Bots. Click on Add Legacy Bot User and enter the display name and default username of your bot. Navigate to Basic Information section of the slack app on the sidebar and copy the Client ID and Client Secret and then paste these to the
ENV/.env
file as:SLACK_CLIENT_ID=<Your Client ID>
andSLACK_CLIENT_SECRET=<Your Client Secret>
. Navigate to the OAuth & Permissions section. Under the Redirect URLs subheading addhttp://localhost:5000/post_auth
. - Install dependencies from
requirements.txt
file. Runpip install -r requirements.txt
- Run
python app.py
. The server will start at your localhost. Navigate tohttp://localhost:5000/begin_auth
. ClickAdd to Slack
button. Select the workspace from the top right and hitAllow
. Successfully completing this step would automate the creation ofSLACK_BOT_TOKEN
in theENV/.env
file. - In another terminal, run
python slackbot.py
. - Open the workspace in Slack and invite the bot to the channel:
@YOUR_BOT_DEFAULT_USERNAME
message in the channel. Click on Invite to Channel.
How to set me up on Facebook Messenger?
- Clone the repository
- Create the mapbot database in mySQL
mysql -uroot -p -hlocalhost
- Enter root password when prompted
create database mapbot;
- Verify creation of the database
show databases;
- Unzip the StanfordCoreNLP package in the repository and keep the file paths
stanford-corenlp-x.x.x.jar
andstanford-corenlp-x.x.x-models.jar
handy. - Run
git update-index --assume-unchanged ENV/.env
- Fill the existing template in
ENV/.env
with the corresponding values following theKEY=VALUE
format - Create Facebook app from here. Fill out basic information.
- Set Up Messenger option under Add a Product.
- Generate the Access Token by creating a facebook page for your bot by clicking on Create New Page button.
- Click on Add or Remove Pages and add your facebook page just created.
- Click on Generate Token and copy the token to the
ENV/.env
file asACCESS_TOKEN=<YOUR_ACCESS_TOKEN>
. - Install ngrok.
- Open a terminal window, type
ngrok http 5000
. Once you do this, a screen will appear with a link after the “Forwarding” section — make sure to copy the link that begins with “https”. - Click on Add Callback URL under Webhooks section. Paste the above link in the Callback URL. Add Verify Token of your choice. Copy Verify Token you added in the
ENV/.env
file asVERIFY_TOKEN=YOUR_VERIFY_TOKEN
. Hit Verify and Save - Click on Add Subscriptions. Check messages, messaging_postbacks, message_deliveries, messaging_pre_checkouts boxes.
- Run
python app.py
- You can interact with bot on Facebook Messenger.
The /analysis
folder contains data files for the project. The sentences.csv
contains the base training dataset which is used to classify the user's input into three classes - Statement, Question, and Chat. Going through some examples would clarify the difference between statement and chat. The featuresDump.csv
is the result of text pre-processing done using the code in features.py
and featuresDump.py
.
Here's a Medium article with the some superficial explanations, there are some video links too!