[Integromat]LINEでやり取りしたURLをSlackへ転送する


背景

  • 夫婦間のLINEやり取りの中で、お互い調べものをした時のURLをよく共有しあっていた
    • しかし、LINEではメッセージが流れてしまい、後から検索できない
    • あれ、前に調べたあのURLどこにあったっけ?ということがよく起こる
  • 上記の対策として、LINEとは別に夫婦用のslackがある
    • チャンネルごとに調べた情報を整理していけるので、これがまた便利
  • しかし、得てして人間はめんどくさがり、忘れるもの…
    • 気づけばまた、LINEに調べたURLを貼ってしまうのである

実現したこと

  • LINEのメッセージからURL(https://)を検出したら、slackの所定のチャンネルに転記する

使用したツール

  • Integromat
  • LINE Messaging API
  • Slack

Integromatはあまりメジャーではないかもしれませんが、IFTTTやZapierに代表されるNoCodeなプラットフォーム連携サービスです。

個人的な感触としては、IFTTTやZapierに比べて対応サービス数は少ないかもしれませんが、対応できているサービスに対しては、利用できるアクションが豊富なイメージを持っています。[1]また、前述の2つよりもプログラマーフレンドリーなアクションが多い印象があります。[2]

ただ、Integromatの情報をあまり見ないのは、圧倒的に日本語情報が少ないです。そのため、英語マニュアル等の読解が難しいと、ハードルを感じるかもしれません。

結果として、Integromatのおかげで1文字もコードを書くことなく、やりたいことを実現できました!

実現方法

Integromatの使い方を中心に解説していきます。

Integromatアカウントを作成する

特に難しいことはありません。Integromatのページよりアカウントを作成します。

https://www.integromat.com/org/758978

新しいScenarioを作成する

Create a new Scenarioから新しいシナリオを作成します。

すると、どのサービスと連携しますか?と聞かれるので、LINEを選択します。

選択したらContinueを選びます

LINE Messaging APIとの連携

新しいシナリオに?マークが現れたら、そこをクリックし、更にLINEを選択します。

LINEのアクションはお好きなものを選んでいただければ良いのですが、今回の目的では「LINEやり取りを監視して、URLの場合はSlack通知」という目的だったので、Watch Eventsを選択しました。

選択すると、IntegromatとLINE Messaging APIとの連携が必要になります。
ウィンドウ右上の"?"マークから公式マニュアルを見ることができます(下記URLへ飛びます)

https://support.integromat.com/hc/en-us/articles/360016016199-LINE

GIFアニメーション付きで、Messaging APIのアカウント作成から解説してくれているため、特に迷うことなく連携ができるかと思います。

メッセージのフィルタリング

Watch eventsを使うとすべてのメッセージを拾ってしまうので、メッセージのフィルタリングを行います。と言っても簡単でIntegromat上で🔧マークをクリックし、Set up a filterからフィルタを設定します。

様々なフィルタがあるため、Text operators内のContainsを選び、図のように設定します。

UserIDの変換

クライアント(妻)からの要望で「どちらがおくったメッセージなのかわかるようにしてほしい」とありました。2人しかいないし、マスタをいちいち作るのも面倒だったので、Integromat上にUserIDと名前を直接変換するようにしてしまいました。

画面下のToolsText ParserからReplaceを選択することができます。

UserIDは後述のLINEグループ作成後に、LINEでメッセージを送ること(Integromat上でRun onceから実行状態にする必要あり)で、Integromat上から確認できます。

Slackのメッセージ作成

Add another modulesから、新たなアプリとしてSlackを追加します。追加自体はSlackからの画面に従って難なく実行することができました。

今回はSlackにメッセージを送信するためCreate a messageを選択します。

LINE上での操作

LINE botにメッセージを監視してもらうため、いくつかLINE上で操作をします。

  1. Message APIのLINE botを友だち追加(Integromatマニュアル手順の途中に出てくるQRコードから友達追加します)
  2. 監視してほしいトークに上記botを追加
  3. 作成したグループ・トークにメッセージを送信すると、自動的にIntegromatシナリオが起動

作成したIntegromatシナリオを保存し、SCHEDULINGONにすることを忘れずに!

以上で、LINE上のやり取りからURLだけを自動でSlackに転記することができました!

クライアントからのフィードバック

Integromatの無料ライセンスは1000オペレーション/月まで

完成してから気づいたのですが、Integromatの無料ライセンスでは毎月1000オペレーションまでしか実行できません。

この「オペレーション」という単位について、フローが実行される回数ではなく、アクションの数になります。今回の場合ですと以下のように、1回実行すると4カウントになります。

1. LINEメッセージを検知(1オペレーション)
--------------フィルタ----------------
2. UserIDを変換(2オペレーション:2ユーザ分)
3. Slackメッセージを送信(1オペレーション)

とはいえ、250個/月のURLが保存できるので大丈夫だろうと思っていました。しかし、上記解説の通りLINEのメッセージをすべて検知した後に、フィルタリングを行っているため、URLでないメッセージの場合でも1オペレーション消費してしまします…。

月に何件やりとりを行っているのかは把握していないですが、1000件/月は結構心もとない感じがします。

この旨をクライアント(妻)に伝えたところ、案外前向きで「URLだけbotがいるグループに送れば良いのね」という感じでした。

個人的には、それができるなら最初からslackに送ればよいのでは?とも思うのですが、同じLINEで完結するだけで違うみたいです。

URLの内容によって転記するSlackチャンネルを割り振ってほしい

要望としてはよく理解できるものの、労力の割に成果が見合わないので却下しました…![3]

おわりに

以上、完璧に要望にフィットしたわけではないものの、ある程度のところまでコードを一切書かずに実現できました。また、作業時間についても、調査時間含めて1時間未満ですので、NoCodeらしい開発ができた気がします。

今後、NoCodeによるデジタル化を進めていくうえで、「100%を目指さない」というのが重要だなと思えた気がします。

脚注
  1. あくまでイメージで、実際の数を調べたわけではありません ↩︎

  2. NoCode系ツールのよくある点として、ノンプログラマーの使い勝手を重視した結果、プログラマー視点からはわかりにくくなっていることが多い… ↩︎

  3. 仮に実装するとすると、「URLを叩いてタイトルまたは本文を取得して、自然言語解析で類似度が高いチャンネルを選択して、そのチャンネルに投稿する」というふうになりそうなので、ここまでいくとIntegromatでは難しいですね。 ↩︎