最初に申し上げておくと、これは仕事帰りに一人で立ち飲み屋でスマホで飲みながら書いておりますのでご了承ください。
動機
とある自分のイベントでボットサービスを立ち上げることを決めた。要件は以下の通り。
・無料か低価格で立ち上げられる
・運用が楽
・開発が楽
・可能ならばわざわざアプリをインストールしたり登録しなくても利用可能
・色々な反応がつくれる
四番目に関しては妥協しましたが…
ベストプラクティス
いきなりベストプラクティスについて言及します。
Dialogflow + Line@ です。
両者とも無料無制限に利用できます。
Line@のフリープランはpushApiが使えない、つまり投稿に対して応答は出来るけど、プログラムから自発的に投稿はできません。あしからず。
Line@はデフォルトで自動応答の設定ができますが、表記揺れに弱いです。あとフラグ管理とか細かいことはできないです。
そこで登場するのがDialogflow。フラグ管理も出来ますし、選択肢表示とかも自由自在にできます。
詳しくはググって下さい。
以下は検討して試行錯誤した内容です。
・Botkit + webui
Botkit cmsというツールでいい感じに応答を作成できるらしいのですが、アプリ間の連携がうまく行かず。あとデフォルトのwebui が微妙。
・BotPress + webui
応答を作るのはいい感じだったんだけど、たぶんライセンスを購入しないと公開できなさそう。管理者ログインしてないセッションからは401が返ってきた。
・Dialogflow + webui demo
公開するためのURLがトークンを含むためすごいダサいのと、自分の発言が左側に表示されるUIを許せなかったので却下。
・Dialogflow + facebook messenger
構築は簡単だけど、公開するためにはfacebookに内容の申請を出して承認を得ないとだめ。個人的なbotは運用できない。
・azure bot freamwork + QnAmaker
質問と回答を作るのはすごい簡単だし、構築は楽。ただ、全てのインスタンスをフリープランで作るとbotの反応が凄く重い。あとフリープランで運用できる時間がすごい短い。
という訳でLineは誰でも入ってるよね、という言い訳でベストプラクティスに至ります。
以上。