どうも。つじけ(tsujikenzo)です。このシリーズでは、「LINE公式アカウントをグループトークに招待しよう」をお送りします。今日は単発です。
はじめに
これまで、LINE公式アカウントを作成して、Messaging APIをGASで操作することで、業務効率化してきました。
LINE公式アカウントは、Messaging APIを使用して、グループトークでユーザーと対話できます。
今回は、LINE公式アカウントをグループトークに招待して、業務効率化していきたいと思います。
事前準備
以下の項目について、下記ブログを参考に、理解された上で読んでいただけるとスムーズです。
- LINE公式アカウントを作成する
- チャネルアクセストークンを取得する
- GASでdoPost()関数を作成し、ウェブアプリとしてデプロイする
- デプロイURLをWebhook URLに設定する
また、LINEでグループを作成・管理できるようになっておきましょう。
アジェンダ
- グループトークに参加を許可
- Webhookイベントの取得
- グループトーク情報の取得
- メッセージ送信
グループトークに参加を許可
LINE公式アカウントの初期設定は、グループトークに参加できない設定になっています。
LINE Developersを開いて、Messaging API設定を開きます。
LINE公式アカウント機能から、「編集」をクリックします。
機能の利用から、「グループ・複数人トークへの参加を許可する」をクリックします。
LINE公式アカウントの設定は、以上です。
グループトークを作成して、LINE公式アカウントを招待しましょう。(手順は割愛します。)
複数のLINE公式アカウントの招待
グループトークには、複数のLINE公式アカウントを招待できません。
どんなLINE公式アカウントを作成して、グループトークを運用するのか、事前に計画を立てておきましょう。
Webhook URLとなるウェブアプリの確認
スクリプトエディタを用意します。
今回は、以下のように、受け取ったWebhookイベントオブジェクトの結果を、Gmailに送信します。(前回は、Line Notifyに送信しましたね)
/** メッセージが送付された際に、実行される関数 */
function doPost(e) {
//1つのWebhookに1件のイベントオブジェクトと仮定して・・・
const event = JSON.parse(e.postData.contents).events[0];
const eventObject = JSON.stringify(event);
GmailApp.sendEmail("メールアドレス", "eventsの中身です", eventObject);
}
ウェブアプリとして、デプロイを更新しましょう。(はじめてデプロイするひとは、新しいデプロイからデプロイしましょう。手順は割愛します)
グループトークに、自分のスマホから、「テストです」などのメッセージを送信します。
Gmailを受信していれば、OKです。
Webhookイベントオブジェクトの取得
先ほど受信したメールには、Webhookイベントオブジェクトが含まれています。
復習ですが、Webhookイベントには、さまざまな情報が格納されています。
グループIDの取得
とくに、sourceプロパティには、グループIDやユーザーID(お友だち検索するLINE IDではありません)などのデータが格納されています。
Gmailの本文をみて、グループIDをメモしておきましょう。
グループIDの値は、正規表現で以下のように取得できます。
C[0-9a-f]{32}
グループトークの情報取得
グループトーク情報を取得するURLは、こちらです。
以下のように、新規関数を作成します。グループトークIDには、Gmailで確認した値を入力しましょう。
/** グループトーク情報を確認する関数 */
function getGroupTalkInfo() {
const ACCESS_TOKEN = 'アクセストークン';
const groupId = "グループID";
const url = `https://api.line.me/v2/bot/group/${groupId}/summary`;
const options = {
"method": "get",
"headers": {
"contentType": "application/json",
"Authorization": "Bearer " + ACCESS_TOKEN
}
};
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
console.log(data);
}
実行ログに、このような情報が表示されます。
スプレッドシートなどで、グループトークを管理できそうですね。
メッセージ送信
グループトークに、LINE公式アカウントからメッセージを送信できます。
そのさい、グループトークIDを指定することで、特定のグループトークにメッセージを送信できます。(一斉配信や、ユーザーへの個別メッセージではない、という意味です)
以下のようなGASを書いて、関数を実行してみましょう。
/** グループトークにメッセージを送信する関数 */
function sendGroupTalkMessage() {
const ACCESS_TOKEN = 'アクセストークン';
const to = 'グループトークID';
const message = {
type: "text",
text: "グループへのオススメ情報です🍩"
};
const options = {
"method": "get",
"contentType": "application/json",
"headers": { "Authorization": "Bearer " + ACCESS_TOKEN },
"payload":JSON.stringify({
to,
messages: [message]
})
};
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', options);
}
チャンネルから通知が届いていれば、成功です。
まとめ
以上で、「グループトークにLINE公式アカウントを招待しよう」をお届けしました。
とくに、むずかしい内容は無かったと思います。
しかしながら、「グループには2つのLINE公式アカウントを追加できない」などの、設計に関わるボトルネックを考察しております。
引き続き、お楽しみいただければと思います。
参考資料
LINE Developers グループトークと複数人トーク