伝説のどいつまの伝説~失敗編~

岩美に永住したい新米エンジニアのあれやこれやな話。

【C#】【Bot】Slack Bot で推したちと会話したい!Part.4

前回までのあらすじ

果て無き荒野への一歩を踏み出したオタク。
Event API を用いれば channel 内の会話を取得できることを知った。
Bot たちと「会話する」という難関ミッションに、一筋の光が見えて――?!

▼前回の内容はこちらから。
d01tsumath.hatenablog.com


Free! とはなんぞや?という方は、Netflix、d アニメストアをはじめとした動画配信サービスにて配信中なので是非ご視聴ください!
いわゆる "異次元系スポーツ" ではないので、安心して視聴できると思います。
iwatobi-sc.com




【Slack Bot シリーズの目標】
  1. Bot を5つ作る
2. 各キャラと、ある程度の会話をできるようにする
  3. Channel の中で会話できるようにする


前回、Event API から登録時のコールバックを処理する実装をしました。

イベントによって処理を変更する

今回は、通常のイベント時(ユーザーがメッセージを発言する)の処理を実装していきます。
ドキュメントより、
登録時 : "type": "url_verification"
channel 内メッセージ : "type": "event_callback"
メンション付き : "type": "app_memtion"
type で判別でき、それぞれ json の構造も変わってくるようです。
url_verification 時のときのみ、その場で challenge を返さなきゃいけないので、それ以外のイベントは一旦 Queue に入れてから処理するという実装を作っていきます。
作ったコードは Github に公開してあります。
github.com
軽くメンターにはコードレビューしてもらったんですが、それ以外でもちょこっとツッコミが入って恥ずかしかったです...w

Slack 側の設定

前回では参考 URL 先にあるし、と思って省略したんですが、Slack 側で行った設定について記載しときます。
Bot の設定開いて、[Event Subscriptions] の「Enable Events」をオンにします。
「Request URL」に作った API の URL を入力します。「Verified ✓」になれば OK !
f:id:d01tsumath:20200205112131p:plain
「Subscribe to bot events」で [Add Bot User Event] から API に投げたいイベントを登録します。
今回は channel 内にメッセージが入ったときとメンションがついたときにしたかったので下記の2つ。
f:id:d01tsumath:20200205112435p:plain


そして、できたのがこちーら。
暫定対応として、 はるちゃん という単語が入ったときのみ反応するようにしました。
f:id:d01tsumath:20200205110825p:plain
これでほぼ、会話できるように土台ができたといっても良いんではないでしょーか!

おまけ。

とりあえず何でもよいから type="event_callback" ならメッセージ発言する、のように実装したら無限ループしましたw草w
f:id:d01tsumath:20200205111359p:plain
これぞ Bot 感あるわって思ったり思わなかったり...w


次回はちゃんとメッセージの中身的に発言する言葉を変えたり、キャラ増やしたりしようと思います。
ここまで来たら、ゴールは近い...はずだよねェェェ。