Integromatで遊ぼう[ISL Advent Calendar 2020/12/01]

画像8

便利なサービスを作ってくれた社員のみなさん

あらすじ

IFTTTの無料プランで作成できるアプレット上限が3つになってしまった。 友人間で使用しているDiscordサーバに何かしらの通知を送る使い方しかしていないので、有料プランに移行するほど困っているわけでもない。

画像1

何か解決策はないかと調べてみると、どうやらIFTTT以外にも無料で使える類似サービスがいくつか存在しているようだ。今回は類似サービスの中で自分が何度か名前を聞く機会があったIntegromatを使用し、Discordに通知を送るパターンを複数作成してみる。

Integromatとは

IFFFTと同様にさまざまなWebサービス同士を連携するWebサービス。Slackに投稿された文章を定期的にTwitterでツイートさせたり、Discordで特定の発言をしたらGoogle Calendarに予定が登録されたりみたいなことをIntegromatで設定すればできる。

サービスの性質上、便利かどうかは道具を使う人間次第という側面が通常のWebサービスより大きい。ありそうでなかったような便利機能も実現できるし、逆に無意味な通知がたくさん飛ぶような無駄機能も作れる。

Integromatにアクセスすると、大量のWebサービスがずらっと並んでおり、自分の知らないサービスがこんなにあったのかと驚かされる。 

実際に作ってみよう

Integromatでサービスを組み合わせて、個人的に需要がある3機能を作ってみた。

[機能1]Spotifyでお気に入りに登録した曲をDiscordに通知する

友人間で利用するサーバには音楽のリンクを貼るチャンネルがあるが、曲のリンクを毎回手動で貼るのは手間なので自動化したい。

画像2

「サインアップ→シナリオを作成→連携アプリの選択」という過程をすっ飛ばした結果、画像のような状況になった。Integromatでサービスを組み合わせるときはいつもこの作業画面にお世話になる。

Spotifyの情報を取得してDiscordに通知を送ることになるので、連携させるサービスはもちろんSpotifyとDiscordになる。まずはSpotifyに対する操作を設定してみよう。

画像3

Integromatで設定できるSpotifyの機能一覧が上の画像である。TRIGGERSがイベント発生のきっかけとなるものであり、ACTIONSがSpotifyに対して行うアクションを選択するものである。曲を保存したり、プレイリストを作ったりといろんな操作ができる。

今回は「Watch saved tracks」が曲をお気に入りにしたときに発生する、まさに求めていたイベントトリガーなのでこれを利用する。

次にこのイベントトリガーが発生しているか確認する周期を設定する。

画像4

実はIntegromatは無料プランだと1か月の問い合わせ上限が1000回までなので、なるべく問い合わせ周期はケチる。とりあえず24時間に1回に設定した。

画像7

次にDiscord側の機能を選択する。お気に入り曲のリンクを送りたいので「Post a Message」を選択。

画像25

「Post a Message」の中身の設定メニューが上の画像だ。Contentの部分で送信するメッセージ内容を選択できる。Spotifyの曲情報が引数として用意されているので、欲しい情報だけ取り出そう。お気に入りに追加した日時もついでに入れておいた。

結果は!?

画像7

シナリオを実行するとこのようにDiscordのチャンネルにボットがお気に入りに入れた曲を通知してくれた。成功だ。見ての通り執筆は11月中に間に合わなかったが、締め切りが来たので一旦記事を公開する。カレンダーをめくり、本格的な冬の訪れを感じながら記事の続きを書いていこうと思う。

[機能2]redditの投稿をDiscordに通知する

海外のネット文化に疎いので、この機会に海外の文化について何か1つ定期的に取り入れていきたい。

興味のあるテーマを探そう

海外の掲示板的なものといえば4chanredditの2つがまず思い浮かぶ。今回は新しいものを知るという方針のもと、本当に全く知らないredditの方を対象にした。

画像9

redditはsubredditと呼ばれる特定のテーマについてのページが設けられており、subredditに参加するユーザがテーマに関する内容を投稿していくという仕組みになっている。

上の画像は11/30(海外時刻)に人気だったsubredditトップ10だ。スポーツのスーパープレイや役立つ知識をまとめた画像集など、人気なだけあって全部面白い。たくさんのsubredditから特に気になったsubredditの投稿内容について定期的にDiscordに通知していこうと思う。

眺めていった結果、StupidFoodがインパクトがあって気に入ったので連携することにした。その名の通り愚かな食べ物の画像が集まるsubredditだ。

連携させよう

画像10

IntegromatでredditとDiscordを連携させる。定期的にStupidFoodのリンクを参照し、投稿があった場合はリンクと本文を貼るというシンプルな構造だ。

せっかくだから本文を日本語に翻訳したらより便利になるのでは?

画像11

間にGoogle Translateを挟んで翻訳した内容をDiscordに送ればサービス使いこなしてます感も増す。早速連携させてみよう。

画像12

どうやらAPI keyが必要らしい。API keyをもらうためにGoogleのAPIライブラリにアクセスしてみる。

画像13

APIライブラリの中からCloud Translation APIを選択し、有効化をクリックしたら課金が必要と言われてしまった。料金表を見ると50万文字は無料になりそうだ。50万文字とはどれくらいなのか?先達の調査を見ると、境界線上のホライゾン1冊分くらいの文字量が送られても大丈夫ということが分かったので思い切って利用してみる。

結果は!?

画像14

無事リンクと翻訳された本文がDiscordに投稿された。これで今まで知らなかったコンテンツの情報が定期的に届く仕組みが作れた。redditは未知の文化の宝庫なのでほかにもいろいろ探してみたい。

[機能3]DiscordのチャンネルにNGワードが書かれたら自動で削除する

友人間で利用するサーバなのでNGワードを設定する必要は全くないのだが、魔が差した友人、もしくは自分が暴れたときにIntegromatがサーバの秩序を守る防波堤となるようなシナリオを一応作っておきたい。

画像15

今回はDiscord内のイベントしか見ないのでDiscordの処理をひたすらつなげることになる。チャンネルのメッセージを監視し、NGワードを含む内容が投稿されたら警告のメッセージを送り、該当メッセージの削除を行う処理を実行する。

NGワードといえば放送禁止用語。実装段階ではこちらのサイトを参考にさせていただき動作テストを行っていたが、さすがにnoteに公開できないような言葉のオンパレードなので記事上では当たり障りのないワードで動作例を示していく。

画像16

話が少しそれるが、子供向けの難易度ではないと有名なYahoo!きっずゲーム「くまのプーさんのホームランダービー!」が12月16日で終了するらしい。送別の意を込めて今回はNGワードをくまのプーさんに設定する。Text Parserでは正規表現で特定ワードが存在するかどうかの判定を行うことができる。

画像17

適当にチャンネルを作り、NGワードを投稿してシナリオを実行する。

結果は!?

画像18

想定した処理通り、警告メッセージが送られてNGワードを含むメッセージが削除された。正規表現の設定が大変ではあるが、大量のNGワードを設定すれば万が一の時もチャンネルの秩序を保つことができるようになった。

おまけ

画像19

せっかくなのでもう一つ処理を追加してみる。NGワードを言ったユーザに対して特定のロールを付与する処理を最後につけた。

画像20

NGワードを発言したユーザには"罪人"のロールが付与されるようになる。

画像25

画像21

先ほどと同じことを繰り返してみる。何もロールがついてない状態でNGワードを投稿してシナリオを実行する。

結果は!?

画像26

画像24

"罪人"のロールが発言者に付与された。ロールに何らかのペナルティを付与できればより使い勝手もよくなりそうだ。

おわりに

作成した3つの機能を紹介したがいかがだっただろうか。IntegromatのようなWebサービスを連携させるサービスを使うと、プログラムを書く手間を省いて知育パズルのような感覚で目標の機能へ近道できる。他にどんな連携ができるかあれこれ考えるのも楽しいので、利用したことのない方は是非試してほしい。それではおやすみなさい。





この記事が気に入ったらサポートをしてみませんか?