SlackでUnityの共用RSSを流すチャンネルを作った話

ども、ゴコーです。

今回は最近 Slack で導入しているボットに関する話題です。
久しぶりの記事ですが全然 Unity 関係ありません。

スポンサーリンク

愛媛でUnity勉強会の運営をはじめた

ここ2ヶ月「HimeUni(ひめゆに)」というUnity勉強会の運営をしてます。
運営するにあたり、まず最初にしたのは Slack の導入でした。やはりSlackは神。

同時にクソボットもいくつか作成したのですが、その中でもまともな運用をされているボットを紹介します。

RSSリーダーボット

Slack にはデフォルトで RSSリーダー機能を付けられるようになっています。
チャットサービス上で RSS を購読できると、

・購読内容に偏りが起こりにくい
・いつも開くものなので購読忘れが起こりにくい
・他の人経由で穴場なサイトを知れる

など、数多くの利点があると思います。

しかし一方で Slack にデフォルトで用意されている RSS リーダーは、

・可愛げがない
・結構見た目がごちゃごちゃするので投稿形式は自分で弄りたい
・大量に購読すると一覧を参照するときに見にくい
・可愛げがない

という問題点があります。大事なことなので2回書きました。
そこで、可愛げを出すためにも自前で RSS リーダーを実装することにしました。

また、このボットはプライベートグループに対してもメッセージを送れるため、 slackbot と自分だけのグループを作りそこに通知させれば自分専用のRSSリーダーとしても使えます

GoogleAppsScriptでRSSリーダー

購読サイト一覧をスプレッドシートで管理できると、購読している一覧表示が見やすいかと思います。検索もしやすいし。無料で使えて、スプレッドシートと連携も取れるということもあり、今回は GAS で実装しました。

コードは後で全部載せるとして、とりあえずフィードした時のビフォーアフターをどうぞ。

rss1

可愛げがありません。

rss2

カワイイヤッター!

購読対象は大体技術ブログなのでサムネイルの取得にもあまり価値はないかなあと判断し、シンプルな見た目にしてみました。

できること

・スプレッドシートに登録されているブログの記事を監視、最近購読したものを記録
・アイコン、ユーザー名、記事の前に付けられるランダムな言葉の設定
・ブログ名、記事タイトル、記事URLの投稿

できてないこと

・サムネイルの表示
・RSS1.0, RSS2.0, Atom 以外の形式への対応
・時間主導型トリガー以上の頻度でブログが更新された場合への対応
・時々出る謎のエラーのハンドリング

できてないことに対応する予定は今のところありません:p

コードと導入方法

次に上記のボットを動かしているコードの紹介です。
ぼくはこのコードを書くまでは Unity の C# しか触ったことのない JavaScript 超初心者だったのでコードは残念なことになっていると思います。

ちなみに、Githubにアップしてるコードはこちらです。
不具合を直せる方は是非プルリクをお願いします(人任せ)

では、このスクリプトの導入方法についてです。

前提条件は、「Googleアカウントを取得してあること」です。
ない人は作ってください。

1.Webhook 導入

まずは Slack に IncomingWebhook を導入します。

https://slack.com/apps/A0F7XDUAZ-incoming-webhooks

から、自分の所属しているグループに Add してください。
そしてその中にある Webhook URL をコピーしておいてください。

post1

2.スプレッドシートの作成

次に、RSSを書き込むスプレッドシートを作りましょう。
https://drive.google.com から新規でスプレッドシートを作成し、こちらのファイルをインポートしてください。
もちろん、新規で作成しても構いません。

3.スクリプトのコピーとテスト実行

先ほどのスクリプトをコピーし、スプレッドシートのメニューから ツール > スクリプトエディタ を選択して張り付けてください。

slackIncomingUrl には先ほどの Webhook URL をペーストしてください。
post_channel_name はRSSの文章を投稿するチャンネル名(プライベートグループに設定する場合は # 抜き)を、bot_name にはボットの名前を、bot_emoji にはボットのアイコンに設定するカスタム絵文字名を、そして messages にはボットにしゃべらせたい文章パターンを入力してください。

ここまでできたら一度テスト実行します。

スクリプトエディタのメニューから、関数には feed_rss を選択し、再生ボタンを押してください。

rss3

すると、承認が求められると思います。

続行 > 許可 を選んでください

4.トリガーの設定

hubot における cron のポジションをこなす トリガー というものを設定してみましょう。
スクリプトエディタのメニューから リソース > 現在のプロジェクトのトリガー を選択してください。

イベントを追加したら、 実行 feed_rss にしてください。
時間設定は適当で大丈夫ですが、できるだけ細かい粒度で実行することをオススメします(うちでは分タイマー10分に設定してます)。
現在の仕様上、30分と設定している場合、同じサイトで30分以内に2つ以上の記事が更新された場合は最近の記事しか購読されないからです。

まとめ

設定は以上です!
これで好きなキャラに可愛く記事の更新を知らせてもらえますね!

Slack は色々と便利なだけでなく、ボット作りで何かを捗らせるのが楽しいので良い遊び道具学習材料になりそうです。次にボットを作るときはもうちょっと Unity の開発に絡めたものにしようと思います。

では、また。

Comments

comments

スポンサーリンク
336*280px