techiumスマートフォン用の表示で見るtechiumこのブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。いただけますと気が向いたら調査するかもしれません。この広告は、90日以上更新していないブログに表示しています。Node.jsSlackやその他のチャットでBotを作る場合はよくHubotを使われますが、Hubotを使わなくても(ベースはNode.jsですが...)Node.jsで実現可能です。そこで非常に簡単にSlackの操作がすることができるライブラリとしてBotkitがあります。今回はそのBotkitを使ってSlackに入力される文字列から判断して会話するBotを作ってみましょう。Slackからトークンを取得するまずはSlackのBot用のTokenを取得しましょう。ここで得られるTokenはBotkitでのアクセスに利用されます。Tokenの取得はこちらのページに飛ぶと下図のような画面に遷移します。ここでBotのユーザ名を設定します。このユーザ名はダイレクトメッセージを送るときに使われる名前になります。integrationをクリックすると次のような画面に遷移します。上図のオレンジで伏せられている場所に書かれているものがTokenとなります。これをTokenをBotkitで利用します。この画面に遷移したタイミングでBotを作成を実施したチームに指定したBotのユーザ名が未ログイン状態で表示されていると思います。BotkitでSlackと接続してみるBotkitのインストールは次のようにします。initでpackage.jsonを作るための情報を入力することになりますが、それは作りたいアプリの名前と作成者、ライセンスの種類を指定してください。これでNPMでBotkitのインストールができました。それでは簡単にBotに対してダイレクトメッセージが送られてきた時に返答を返すようにしてみましょう。それは次のように実装を行います。Botkitを使ってSlackの応答を返すindex.jsの3行目でBotkitoでSlackをコントロールできるコントローラを作成する。この時にdebugフラグをfalseにしているがtrueにするとBotkitoがバックグラウンドでどのような動作しているかのログが表示されるようになる。Botの生存確認のために定期的にPing/Pongで生存確認を行ったり、Slack上での状態の変化があった時の通知を届いているかなどが確認できる。最初に登録したtokenを8行目に設定する。今回は環境変数のtoken設定しましょう。わからない場合はサンプルコードのREADMEを見てください。9行目のstartRTMを実行するとSlackと接続が行われ、双方向に通信が始まる。startRTM以降にSlack上でメッセージの書き込みや呼び出しなどが行われるとBotkitにメッセージが送付される。次に12行目のhearsでメッセージの送付されてきた時の動作を記述する。第1引数はどのようなメッセージがSlack上に書き込まれたかを判断する文字列になります。第2引数はどのイベントのメッセージを拾うかを設定します。イベントの種類は下記の通りになります。第3引数にSlack上のメッセージに第1引数の文字列と合致したときに呼び出されるコールバック関数を設定します。ここで注意が必要なことはSlack上で入力された文字列が第1引数と完全一致したら呼び出されるわけではないことに注意しましょう。第1引数にhiという文字列の場合にSlack上で「high」や「tahichi」などでも引っかかります。Slack側で入力された文字列を取得するには第3引数のコールバッ関数の第2引数にJSONオブジェクトが渡され、その内容に入力された文字列の詳細を取得することができます。上記のソースコードを実行した時にSlack上で下記の文字列を入力します。techiumそうするとindex.jsの12行目のhearsが呼び出されます。そのコールバック関数の第2引数は下記のような構成になっています。}textという部分に実際に入力された文字列が入ります。matchで一致した位置を取得することができます。これらで求めている文字列かどうかの判断をすることができます。Botと会話をしてみる最後にBotと会話する方法についてです。Botと会話をするにはConversationのaskという機能を使います。今回の例は「weather」という文字列が入力された時に明日の天気が雨なことと車で出かけられるかどうかBotが尋ねるようなコードになっています。Botkitを使ってSlackユーザーに要件を尋ねる11行目のhearで特定の文字列「weather」という入力を待ち、入力された時に36行目で会話をスタートさせています。15行目のaskの第1引数をSlackのユーザに問いかけます。何かしらレスポンスを貰えると第2引数のコールバック関数に応答が返ってきます。このコールバック関数の第1引数のtextという変数に実際の応答された文字列が入ってきます。18行目のところでtextを確認して動作を切り替えています。引き続きユーザへ問いかけたい場合は19行目のように26行目のaskをもう一度呼び出すことで会話の続きを実施することができます。最後に22行目や33行目でnextというのを実施していますがこれは必ず必要となります。これをしないとConversationに処理が返らず、ハングするそうです。next以外にもrepeatもあり、これはもう一度同じaskを実行することになります。これを実行した時の動きは下図のようになります。Ideaプラグインでセットアップウィザードを作るAndroidの開発やJavaアプリの開発など様々な場面で利用されるin...2016-07-11ワークフローエンジンDigDagのSlackプラグイン公開しましたDigDag用のSlackプラグインの作成記事を下記で行いました。(1)はてなブログをはじめよう!kobashin__Gさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。