HubotでTwitterの検索結果をSlackに送りつつけるボットが、最近になって動かなくなってしましました。悲しい。直そうと思ってコードを見てみると最新のHubotだと非推奨の機能とかを使っていて面倒くさくなってしまったので、自分でScalaで作ってみました。
コンソール上での見え方 |
Slack上での見え方 |
こんな感じです。 Akka Actorで作っていて、SlackやTwitterとの通信エラーなどが起こった際にも比較的安定して動作をしてくれます。
ソースコード
https://github.com/sifue/twisearch_slackbot
こちらになります。自分でビルドしたりもできます。コードサイズも小さいのでScalaがわかる方は随時自分でいじって利用して下さい。
動かし方
とりあえず動かしたいという方は、
Java8 をインストールしてあることを確認して、
https://github.com/sifue/twisearch_slackbot のルートディレクトリにある twisearch_slackbot-assembly-X.X.jar
をダウンロードしてください。
その後、application.conf
というテキストファイルを用意して
app {
slackWebHookUrls = ["https://hooks.slack.com/services/hoge/fuga/hege"]
intervalSec = 60
keyword = "\"test\"OR\"テスト\"OR\"hoge\"OR\"fuga\""
ignoreScreenNames = ["sifue_4466"]
isSendRetweet = false
messageFormat = "https://twitter.com/%1$s/status/%2$s"
consumerKey = "consumerKey"
consumerSecret = "consumerSecret"
accessToken = "accessToken"
accessTokenSecret = "accessTokenSecret"
hubotWebHookUrl = ""
hubotWebHookRoom = ""
}
以上を設定します。
各種設定項目について
slackWebHookUrl
は、https://api.slack.com/slack-apps にてTwisearch SlackbotのアプリをAppとして作成して、WebHook Incomeを許可し、そこでWebHook URLを特定のチャンネルに対して作成してそれを利用して下さい。
Slackのアプリ作成画面 |
各種トークンは、 https://dev.twitter.com/ より Twitter のアプリケーションを作成して、consumerKey
、consumerSecret
を取得、accessToken
、accessTokenSecret
は生成してから取得してください。 これらを設定します。
twitterのアプリ作成画面 |
intervalSec
は実行間隔、 isSendRetweet
はツイートを無視するかのフラグ、 keyword
は、検索キーワードなので 適宜 OR
NOT
AND
を使って設定して下さい。
SlackはTwitterのURLを展開してくれるので、そのままツイートURLをメッセージフォーマットとしています。
無事application.conf
が書けたら、 twisearch_slackbot-assembly-X.X.jar
と同じフォルダに置いて、
java -jar twisearch_slackbot-assembly-X.X.jar
で実行すればOKです。
目的のチャンネルに検索結果が投稿されるようになるかと思います。 検索キーワードは test
にしておくと、すごくひっかかるのでそれで確認すると良いでしょう。確認できたら、自分で運用しているサーバーがあればバックグラウンド実行、 tmuxやscreenコマンドを利用した実行をして下さい。
Herokuにデプロイする際には、 Java用のProcfile
とpom.xml
を置いてjavaとして実行してあげれば良いですが、自分は無料のインスタンスでは動作を安定することができませんでした。 Dokkuでも同様に動作させることができると思います。ただ、運用しているサーバーがあればそこで動かすのが便利そうです。
では皆さん、ハッピーなSlackライフを!