slackのbotを作る 入門編
slackのbot作成入門のメモ。
slackbotのカスタマイズによる発言と、botを使った外部からの発言をやってみました。
slackとはエンジニア御用達のコミュニケーションサービス。以下略。
slack.com
slackbotを使う
slackbotは特別なことをしなくても最初からグループにいる。slackbotに何かしゃべらせるには、
https://slack.com/customize/slackbot
から自分のチームにログインして、こんな感じで入力して「Save response」すると
「てすと」と打つとslackbotが「てすとだよーーー!」と返してくれる。
slackはウェブページのリンクをつぶやくと自動で中身を表示してくれるため、特定のワードに反応して何かのリンクを発言させ、その中身を表示してくれるようにするとかの使い道がある。
でも実際はTwitterとかFacebookとかのSNSサービスでは、アカウント情報が無いと見れない情報が多かったり、それ以外のサイトでも上手い具合に内容が表示されなかったりしてあまり使えないかも。
サーバ上でプログラム組んで特定の時間になったらslackにつぶやくとか、TwitterのAPI使って情報を取ってきてslackに流すとかしたい場合はslackbotではなくて次に紹介するbotを使うといい。
botを使う
botはslackbotと違って完全に外部から発言することが出来るし、アイコン変えたり発言のたびにbot名を変えたりとか幅が広がる。
botを作る
botを作るには以下のページにアクセスして、「Make a Custom Integration」を選択し、
slack.com
次のページで「Bots」を選ぶ。
入力すべき各情報(botの名前とか)は説明するまでもないとして、「API Token」というのを後ほど使うのでメモっておく。
これは外部に知られたらいけないので保管は注意する。
発言する
発言するにはこのAPI Tokenとともにhttps://slack.com/api/chat.postMessage
宛てにPOSTリクエストを送ればいい。
POSTリクエストだけで発言できるということは、JavaScriptのXMLHttpRequestなりシェルのcurlなりからslackに発言することが出来る。たとえば次のようなシェルスクリプトを書けばよい。
bot_test.sh
#!/bin/sh curl -X POST https://slack.com/api/chat.postMessage \ -d "token=YOUR_API_TOKEN" \ -d "channel=#CHANNEL_NAME" \ -d "text=$1" \
作成されたbotが居るチャンネルを指定し、API Tokenを書き換えた上でこのシェルスクリプトを保存し、実行権限を付加する。
実行権限については適当にsudo chmod +x bot_test.sh
とかしとけばいい。
そんで、シェルで
$ ./bot_test.sh テストでっせ〜
とすると、
と発言できる。
なお、アイコンが指定したものにならない場合は"as_user=true"
オプションを付け足す。as_user
オプションはAPI Tokenの持ち主(この場合は作成したbot)として発言するのできちんとbotに設定したアイコンになる。
これをサーバ上でcron登録したりすると特定の時刻になったら発言できるし、POSTリクエストの内容を以下のリンク参照にしていろいろ変えると、発言時のアイコン変えたりユーザ名変えたりいろいろできる。
https://api.slack.com/methods/chat.postMessageapi.slack.com
今回は入門編ということで外部から発言するための第一歩をやってみたが、実際にインタラクティブにユーザの発言に反応するにはReal Time Messaging APIというのを使ってチャンネル上の発言状況を取得する必要があるらしい。
これはまだやってないのでまた今度。
2016/07/20追記
だいぶ前だけど、単語を飛ばすとflickrで検索して見つかった画像を返してくれるbot作った。GoogleのAPIの方が精度良いらしいのでいつか手直ししたい。
github.com