flaskでチャットボットを作った.

Web系のフレームワークを使ってみたかったけど,

djangoはちょっと大きすぎて手に負えないし…って感じでflaskを触ってみた.

題材は友人がReactでチャットボット作ってたのでパクった.

作ったチャットボット

ちょっと前まで, discordのbotをHerokuで動かしていたけど,

最近動かすのをやめてしまい枠が残ってたのでせっかくだから Herokuで公開してみた.

Chatbot

寂しくてたまらないときなどにぜひご活用下さい()

ソースコードは,

flask_chatbot

に載せてあります.

体系的にflaskの説明をしているサイトは五万とあるし, 僕自身も全然使い込んでないのでつまったところとかをざっと書いていきます.

sessionを使う.

最初はなんとなくグローバル変数に会話ログを載せてたんですけど, 複数のユーザーが同時にアクセスすると会話が混在してしまってやばいことになるなって感じで, sessionなるものの存在を知りました.

from flask import Flask, render_template, request, redirect, url_for, session

app = Flask(__name__)
app.secret_key = 'hoigeowooa'  # key for using session

@app.route('/postname', methods=['POST'])
def postname():
    name = request.form['name']
    session['name'] = name
    return "hoge"

というように, session(ディクショナリ型?)に値を渡しておけば値を保存できるし交わることもないとのこと.

参考: PythonのFlaskで学ぶWebアプリケーション制作講座 第6章 〜セッション〜

ページ再読込でのPOST重複を防ぐ

会話中にページを再読込すると, POSTが重複して直前の送信がもう一度行われてしまっていた.

POSTが2回行われていることはわかったので対策方法を調べていると

Post/Redirect/Get (PRG) パターン

なる記事が.

こちらを参考にして, リダイレクトを利用することで再送されないように修正しました.

せっかくなので, 今後もちょくちょくWebアプリでよく使われる機能などを実装したりしながら, 付随して記事にしていこうと思います.

閲覧ありがとうございました.