読者です 読者をやめる 読者になる 読者になる

チャットボット開発のためのライブラリをGoで書いた話

Chatroomといいます。

github.com

これはAizu Advent Calendarの16日目の記事です。(遅れてすみません)

動機

これまでだと、リクエストが来るたびに該当ユーザーのState情報を取り出し、今の文脈で条件分岐して返答、State情報の更新という一連の流れを行っていたと思います。

これはチャットボットのバックエンドとして基本的なものであり、大規模なものにも必ず含まれているロジックです。

しかし、チャットボットブームと言える今の時代、ネタや実験的に軽くチャットボットを作成したいという需要もあります。

そういったときに毎度State管理から実装するのはちょっと面倒...ということで、このライブラリを作成しました。

で、具体的には?

こんな感じでチャットボットのロジック部分が書けます。

今までだとState管理が必要だった対話的なUIが、State的な部分を意識せずに書けていることがおわかりでしょうか。

しかし実際のコードはこれだけではなく、もっとあります。

というのも、Chatroomは以下の面倒を見てくれません。

  • ユーザーごとの情報の保存(State)
  • LINEやFacebookといったチャットサービスAPIとの通信
  • ユーザーID等による処理の分岐

話が違うじゃねぇか!という声が聞こえてきそうですが、Chatroomがやってくれるのは以下だけです。

  • トリガとなるメッセージごとのモジュール(Topic)の呼び出し
  • Topicへのメッセージの配送・受け取り

上記以外のことは自分で実装する必要があります。(もう少し詳しいことがREADMEに書いてあるよ!)

まとめ

このライブラリで中規模程度のチャットボットも書いていますのでちょっと使ってみてくださると嬉しいです。

(はやくAPI Reference書かなきゃ)

2016/12/28追記: 書いたよ。