Rからslack上のお悩み相談室に投稿する

Rのお悩み相談室ができたのは記憶に新しいが、まだ人間の数がbotの数を上回っている。
私が望むのはbotが悩みを投稿しbotがそれに回答するそんな未来だ。
ということでその初歩の初歩としてRからbotとしてお悩み相談室に投稿する方法を紹介したい。

httrパッケージを使ってPOSTする

まず最初にbotとして登録した上でtokenを取得しておく必要がある。
左上のユーザネーム横の下向きの矢印をクリック→Configure IntegrationsでIntegrationsの画面を開く。
Configured IntegrationsのタブをクリックしてHubotを選びAdd a new Hubot Integrationをクリック。
Hubotの設定画面が出るので名前とかアイコンとか設定した上でそこのAPI Tokenをtokenとしてメモっておく。
これ準備はOK。
あとはこのtokenを使ってhttps://slack.com/api/chat.postMessageに対してPOSTすれば投稿できる。
UTF-8じゃないと文字化けするので、以下の例ではenc2utf8を送りたいメッセージにかませている。

output <- enc2utf8("やっほー")
httr::POST(url="https://slack.com/api/chat.postMessage",
           body = list(token = "****************", # メモったtokenを入れる
                             channel = "#bot_practice", 
                             username = "Yoshihiko_ai", 
                             text = output
           ))  

HubotではなくBOTSとして登録する手もあるが、今回の投稿先では既にservice integrationのlimitに達していたので登録されていたHubotを用いた。

slackrパッケージを使う

キャプテンアメリカの隠語で親しまれるBob Rudis氏のslackrパッケージを使うという手もある。
CRANからインストールできる。
作者のブログ記事があるのでそちらを読むと良い。
http://blog.sense.io/integrating-r-and-python-with-slack/
なお、個人的にあまり使い心地が良くなかったのでここで解説は避ける。
多分誰か書いてくれるに違いない。

でも普通は

なお、普通slack上でbotを動かしたい時はわざわざRから動かすのではなく先ほど少し触れたHubotを使う。Github社謹製だ。
この辺は多くの先達が記事を書いているのでここで書くまでもない。
Hubotで検索してほしい。
なお有志によるRserveと組み合わせた実装も公開されているので利用されたし。
https://github.com/yutannihilation/docker-hubot-rserve

ということで皆さん自分なりのbotを作って盆栽品評会をしましょう。
enjoy!!!