SlackとLINEを連携する(1) 概要と準備
Slack中心でコミュニケーションをしていますが、LINEでしか見られない人のためにSlackとLINEを連携してみます。
Google Apps Script、SlackのWebhook系のアプリ、LINE Messaging APIあたりを使います。
長くなったので数回に分けます。
実現したいこと
以下2項目を実現します。
- LINEにメッセージを投稿すると、Slackのgeneralチャンネルに通知される。
- Slackのgeneralチャンネルにメッセージを投稿すると、LINEに通知される。
機能概要
LINEからSlackへの通知
LINE BOTをフォローしてもらい、LINE BOTへメッセージを送ることでSlackにメッセージを通知できるようにします。
メインの処理はGoogle Apps Scriptで実現します。
概要図を示します。
Google Apps ScriptのdoPost関数では、(2)PostリクエストはLINEで行ったアクション種別が含まれており、それにより場合分けをします。
- LINE BOTがフォローされたら、LINE IDリストにIDを追加する。(3)(4)
- LINE BOTにメッセージが投稿されたら、Slack Outgoing WebhookへPostリクエストを送る。(5)
- LINE BOTがブロックされたら、LINE IDリストからIDを削除する。(3)(4)
ここでLINEユーザIDリストファイルが登場しますが、このファイルはSlackからLINEに通知する際に必要になります。
LINEへの通知はユーザ単位に送る必要があるため、どこかにID一覧を保存しておかなければなりません。
SlackからLINEへの通知
Slackのgeneralチャンネルに投稿したメッセージをSlack Outgoing WebhookでGoogle Apps Scriptに連携し、LINE IDリストにあるユーザに向けてPostリクエストを送信します。
メッセージを受けるLINEユーザは、あらかじめLINE BOTをフォローしておく必要があります。
メインの処理は先程と同じくGoogle Apps Scriptで実現します。
概要図を示します。
準備
以下のアカウントを取得します。また、必要情報を控えます。
各種アカウントの作り方はマニュアルや解説サイトがありますので省略します。
Googleアカウント
通知処理するためにGoogle Apps Script、設定ファイルとログの保存のためにGoogle Driveを使います。
プログラム・設定ファイルを格納するために、Google Driveに1つフォルダを作成してフォルダIDを控えてください。
フォルダIDはGoogle Driveで対象フォルダを開くとURLに表示されます。
https://drive.google.com/drive/u/0/folders/(ここにフォルダID)?ths=true
LINEアカウント
当然必要になります。
LINE Developers
LINEへの通知のためにLINE DevelopersのMessaging API(LINE BOTを作るための機能)を使用します。
https://developers.line.biz/ja/
LINEアカウントでログインできます。
プロバイダ、およびチャネルを作成してください。チャネルを作る際は「Messaging API」を選択してください。
「チャネル基本設定」タブで以下の設定をします。
- メッセージ送受信設定/Webhook送信
「利用する」を設定します。 - メッセージ送受信設定/Webhook URL
Google Apps Scriptをウェブアプリケーションとして公開した際に発行されるURLを指定します。あとで設定します。 - LINE@機能の利用/自動応答メッセージ
「利用しない」を設定します。 - LINE@機能の利用/友だち追加時あいさつ
「利用しない」を設定します。
LINEのアクセストークンを控えてください。長いです。
「アクセストークン(ロングターム)」と表示されています。
また、「Bot情報/LINEアプリへのQRコード」に表示されているQRコードをどこかに保存しておいてください。 後ほどLINEアプリでスキャンし、LINE BOTを友達に追加します。(今はまだ追加しない)
Slackアカウント
当然必要になります。
generalチャンネルにアプリ(カスタムインテグレーション)「Slack Outgoing Webhook」と「Slack Incoming Webhook」をインストールします。
Slack Outgoing Webhook
以下の項目を設定します。
- チャンネル
LINEに通知するSlackのチャンネルを選びます。ここでは「#general」としておきます。 - URL
Google Apps Scriptをウェブアプリケーションとして公開した際に発行されるURLを指定します。 あとで設定します。
以下の項目を控えておきます。
- トークン
アプリのIDです。不正な投稿を区別するためにこのIDとメッセージ内のIDが一致するか検証します。
Slack Incoming Webhook
以下の項目を設定します。
- チャンネルへの投稿
LINEメッセージを通知するチャンネルを選びます。ここでは#general
としておきます。
以下の項目を控えておきます。
- Webhook URL 長いです。
続く