Template Code for TOC Project 2020
A Line bot based on a finite state machine
More details in the Slides and FAQ
- Python 3.6
- Pipenv
- Facebook Page and App
- HTTPS Server
pip3 install pipenv
pipenv --three
pipenv install
pipenv shell- pygraphviz (For visualizing Finite State Machine)
You should generate a .env file to set Environment Variables refer to our .env.sample.
LINE_CHANNEL_SECRET and LINE_CHANNEL_ACCESS_TOKEN MUST be set to proper values.
Otherwise, you might not be able to run your code.
You can either setup https server or using ngrok as a proxy.
or you can use Homebrew (MAC)
brew cask install ngrokngrok would be used in the following instruction
ngrok http 8000After that, ngrok would generate a https URL.
python3 app.pyOr You can use servo to expose local servers to the internet.
The initial state is set to user.
Every time user state is triggered to advance to another state, it will go_back to user state after the bot replies corresponding message.
- user
-
Input: "go to state1"
- Reply: "I'm entering state1"
-
Input: "go to state2"
- Reply: "I'm entering state2"
-
Setting to deploy webhooks on Heroku.
or you can use Homebrew (MAC)
brew tap heroku/brew && brew install herokuor you can use Snap (Ubuntu 16+)
sudo snap install --classic heroku-
Register Heroku: https://signup.heroku.com
-
Create Heroku project from website
-
CLI Login
heroku login
-
Add local project to Heroku project
heroku git:remote -a {HEROKU_APP_NAME}
-
Upload project
git add . git commit -m "Add code" git push -f heroku master -
Set Environment - Line Messaging API Secret Keys
heroku config:set LINE_CHANNEL_SECRET=your_line_channel_secret heroku config:set LINE_CHANNEL_ACCESS_TOKEN=your_line_channel_access_token -
Your Project is now running on Heroku!
url:
{HEROKU_APP_NAME}.herokuapp.com/callbackdebug command:
heroku logs --tail --app {HEROKU_APP_NAME} -
If fail with
pygraphvizinstall errorsrun commands below can solve the problems
heroku buildpacks:set heroku/python heroku buildpacks:add --index 1 heroku-community/aptrefference: https://hackmd.io/@ccw/B1Xw7E8kN?type=view#Q2-如何在-Heroku-使用-pygraphviz
TOC-Project-2019 ❤️ @winonecheng
Flask Architecture ❤️ @Sirius207
