2017年6月12日 (月)がんばれagrobo君
おはようございます。
本日のブログ当番プログラマーのM.Iです。
大阪は梅雨で雨の日が多くなってきました。
傘を持っていないと不安になりますね。
最近知ったのですが、slackというチャットサービスがあります。
skype等と同じようにチャットができるサービスですが、AIを会話に参加させることができます。
よくbotといわれるものです。
ここで動くbotを作ってみました。
いくつかbotを作成するライブラリは公開されているのですが、筆者は.net好きなので.netで動くnoobotを使用します。
https://github.com/noobot/noobot
からgitなりでcloneしてきてください。
https://github.com/noobot/noobot/wiki/Getting-Started-With-Noobot#get-noobot-up-and-running-quickly
を参考に、botをslackに登録して、指示されたapiTokenをconfig.jsonに書き込み、cloneしてきたソースを実行するとbotがslackでオンライン表示になります。
aboutと発言するとbotが作者の情報を返信してくれます。
さてこのままでは味気ないので話しかけると反応してくれるように実装してみましょう。
helloと発言すると現在の時間に合わせて挨拶してくれるようにします。
noobotではMiddleWareBaseを継承したクラスを作るとチャットに反応するようにできるみたいです。
GreetingMiddleWareクラスを作ります。
using System; |
ValidHandlesに入っている文字列(大文字小文字は無視されます)がチャットに発言されると反応します。
この場合hello や hello worldに反応します。
EvaluatorFuncに登録した関数が呼び出されます。
messageに話しかけてきた人や所属しているチャンネル情報、話しかけられたメッセージ全文といった情報がきます。
話しかけられた後今の時間に応じて返信文字列を作ってやれば完成です。
上の例なら
0~8時なら「おはようございます」
9~16 時なら「こんにちは」
17~23時までなら「こんばんは」
と返信してくれるようになります。
クラスを実装しても実行されないと意味がありません。
noobotのライブラリのContainerFactory.csの
private void SetupMiddlewarePipeline(Registry registry)
メソッドの最終行に以下のように追加するとbotの初期化時に実装したクラスのコンストラクタが実行されます。
registry.For |
上の例なら特定の文字が来た場合のみ返事を返す、ということができます。
再度実行してhelloと発言すれば
余談ですが、
myCore.SendMessage( ResponseMessage.DirectUserMessage( message.UserId , "hello" );
という風にすれば能動的に返信できます。
Taskクラスとasync,awaitを利用すれば1秒ごとに実行する処理を記述できます。
private IEnumerable |
メッセージが着た後1秒ごとに1秒が経過したことを返信してくれるbotになります。
これで1秒ごとに情報を持ってこれるようになったので、誕生日に祝うbot等も作れます。
世の中には数式を投げると計算結果を返信してくれるといった仕事の手伝いをするbotもあるようです。
以前このブログでも紹介されましたが
http://www.accessgames-blog.com/blog/2016/12/post-4eff.html
chatopsと呼ばれるそうです。
機械でもできそうな仕事を見つけて、作業を振ってみてもいいかもしれません。
| 固定リンク | コメント (0) | トラックバック (0)
「プログラマー」カテゴリの記事
- 技術交流の業(2019.03.07)
- 福袋争奪戦デビュー(2019.01.31)
- 温泉旅行(2019.01.24)
- ゲーセンの近況(2018.11.29)
- 健康的にプログラミングを続けるためのちょっとした習慣(2018.10.18)
この記事へのコメントは終了しました。
コメント