This is the a Spark Bot for a basic microservice demo application. This provides an interactive chat service for a voting system where users can vote for their favorite movie superhero.
Details on deploying the entire demo to a Mantl cluster can be found at
The application was designed to provide a simple demo for Cisco Mantl. It is written as a simple Python Flask application and deployed as a docker container.
Other services are:
The docker containers are available at
In order to use this service, you will need a Cisco Spark Account to use for the bot. You can leverage your personal Spark Account or create a new one to be used by the service. I recommend creating a new one to make testing easier (i.e. if you use your own it will be hard to chat with yourself).
Creating an account is free and only requires a working email account (each Spark Account needs a unique email address). Visit http://www.ciscospark.com to signup for an account.
Developer access to Spark is also free and information is available at http://developer.ciscospark.com.
In order to access the APIs of Spark, this bot needs the Developer Token for your account. To find it:
Copy to copy your Access Token to your clipboardVagrantfile you create later, be sure not to commit this file. Otherwise your credentials will be availabe to anyone who might look at your code later on GitHub.Required
pip install -r requirements.txt
In order to run, the service needs several pieces of information to be provided:
These details can be provided in one of three ways.
As a command line argument
python myhero_spark/myhero_spark.py --app "http://myhero-app.server.com" --appkey "APP AUTH KEY" --secret "BOT AUTH KEY" --boturl "http://myhero-spark.server.com" --botemail "[email protected]" --token "HAAKJ1231KFSDFKJSDF1232132"As environment variables
export myhero_app_server=http://myhero-app.server.comexport myhero_app_key=APP AUTH KEYexport [email protected]export spark_token=HAAKJ1231KFSDFKJSDF1232132export myhero_spark_bot_url=http://myhero-spark.server.comexport myhero_spark_bot_secret="BOT AUTH KEY"python myhero_spark/myhero_spark.pyAs raw input when the application is run
python myhero_app/myhero_app.pyWhat is the app server address? http://myhero-app.server.comApp Server Key: APP AUTH KEYA command line argument overrides an environment variable, and raw input is only used if neither of the other two options provide needed details.
Upon startup, the service should create a new Spark Room called "MyHero Demo" if one doesn't already exist for the given Spark User. It also registers a webhook with the room to send all new messages to the service address.
Other users can be added to the room in one of the following ways.
python myhero_spark/myhero_spark.py --demoemail [email protected]curl -X PUT -H "key: BOT AUTH KEY" http://localhost:5000/demoroom/members -d '{"email":"[email protected]"}'Add email [email protected]The Spark Bot is a very simple interface that is designed to make it intuitive to use. Once in the room, simply say "hello", "help" (or anything else) to have the bot reply back with some instructions on how to access the features.
The bot is deisgned to look for key words to act on, and provide the basic help message for anything else. The key words are:
An additional keyword of "add email" is also looked for. This will have the bot add new users to the room. Examples are:
add email [email protected]
add emails [email protected], [email protected], [email protected]
The main service API is at the root of the applciation and is what is used for the Spark Webhooks.
There is an API available to view and add users to the Room.
curl -X GET -H "key: BOT AUTH KEY" http://localhost:5000/demoroom/memberscurl -X PUT -H "key: BOT AUTH KEY" http://localhost:5000/demoroom/members -d '{"email":"[email protected]"}'I've included the configuration files needed to do local development with Vagrant in the repo. Vagrant will still use Docker for local development and is configured to spin up a CentOS7 host VM for running the container.
Before running vagrant up you will need to finish the Vagrant file configuration by adding the Spark Account Email and Token to the environment variables used by the container. To do this:
cp Vagrantfile.sample VagrantfileVagrantfile and add your details where indicated
vim Vagrantfilemyherospark_bot_email and spark_token in the docker.env hashTo start local development run:
vagrant up
curl -H "key: DevBot" http://localhost:15003/demoroom/membersEach of the services in the application (i.e. myhero_web, myhero_app, and myhero_data) include Vagrant support to allow working locally on all three simultaneously.
Content type
Unrecognized
Digest
Size
28.6 MB
Last updated
about 10 years ago
docker pull hpreston/myhero_spark