秘書BOTのキャラを変えてみた
完成物
初回の中間的要件にある
「ヨハネ,召喚」って言ったら,秘書がヨハネ様に切り替わる
という機能がついに実現しました・・・!
前回の投稿からだいぶ時間がかかってしまったのは
- ところどころバグってたので,その不具合修正してた(今回は割愛)
- 実現する方法に結構悩んでた(なんやかんやでデータベースを新規追加)
- プログラムにべた書きしてたセリフをデータベースに移行した
というのが主な理由です.
今実装されているセリフがランダムに何か返答してくれるランダム返答が↓になります.
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">最初は曜ちゃんで、「ヨハネ、召喚」と言うとヨハネ様に切り替わります
「曜ちゃん戻って」で曜ちゃんに切り替わります
画像が変わらないのはLINEの仕様なので多分どうしようも無いです… <a href="https://t.co/U1QcqOtgvB">pic.twitter.com/U1QcqOtgvB</a></p>— ルナ・チェバリー (@Luna_Chevalier) <a href="https://twitter.com/Luna_Chevalier/status/992470448620425221?ref_src=twsrc^tfw">2018年5月4日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
実際にスケジュールを取得するセリフも変えてみました.
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ヨハネ様が予定を教えてくれる様にしました <a href="https://t.co/fGha75AXqF">pic.twitter.com/fGha75AXqF</a></p>— ルナ・チェバリー (@Luna_Chevalier) <a href="https://twitter.com/Luna_Chevalier/status/995802670467174400?ref_src=twsrc^tfw">2018年5月13日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
開発環境
- Ruby(2.4.1)
- google-api-client(0.13.6)
- line-bot-api(1.2.0)
- Sinatra(2.0.0)
- Apache(2.4.6)
- passenger(5.1.8)
- MariaDB(5.5.56)←new!
主なお話
データベースの環境構築と簡単なセリフ変化のやり方です
現在の実装完了機能
- 文字を送信したら,ランダムで何か返事してくれる
- 「スケジュール」と送信したら,今日から1週間のスケジュールを教えてくれる
- ベースはGoogleカレンダー
- 当日にイベントがあったら朝に通知してくれる
- 「ヨハネ,召喚」って言ったら,秘書がヨハネ様に切り替わる(キャラが変わる)←new!
今回の作業
データベースの環境構築
今回までデータベースを導入してなかったので,まずはここから.
今回から新たにMariaDB(5.5.56)を使うことにします.
CentOS7系の標準DBがMariaDBになっているので採用しています.
とは言っても,mysqlをフォークしたDBになるので,基本的な使い方はmysqlと同じです.
以下のサイトを参考にして,リモートからMariaDBにログインできるようにしました.
構成の変更
DBを使ってセリフを管理するようになったので,全体的な構成も変更です.
今回の追加機能分だけ抽出すると下のような図になります(実際はGASが入ってきますが,今回は触ってないので割愛).
緑色が今回入って来たものになります.
以前まではLINEBOTのソースにセリフを直書きしましたが,今回からLINEBOTからDBにアクセスして,そこにあるセリフを取得してお話するようにしました.
ユーザーごとにキャラが設定されていて,それを使ってセリフを拾ってきます.
図のような特定の文字列を送信すると,ユーザーごとに設定されたキャラが更新され,取得するセリフが変化するようにしました.
Discussion