[LINE]グループトークにLINE公式アカウントを招待しよう

LINEグループトークGAS

どうも。つじけ(tsujikenzo)です。このシリーズでは、「LINE公式アカウントをグループトークに招待しよう」をお送りします。今日は単発です。

はじめに

これまで、LINE公式アカウントを作成して、Messaging APIをGASで操作することで、業務効率化してきました。

LINE公式アカウントは、Messaging APIを使用して、グループトークでユーザーと対話できます。

今回は、LINE公式アカウントをグループトークに招待して、業務効率化していきたいと思います。

事前準備

以下の項目について、下記ブログを参考に、理解された上で読んでいただけるとスムーズです。

  • LINE公式アカウントを作成する
  • チャネルアクセストークンを取得する
  • GASでdoPost()関数を作成し、ウェブアプリとしてデプロイする
  • デプロイURLをWebhook URLに設定する

また、LINEでグループを作成・管理できるようになっておきましょう。

グループを作成・管理する|LINEみんなの使い方ガイド
複数の友だちと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 グループトークと複数人トーク

このシリーズの目次

タイトルとURLをコピーしました