LoginSignup
12
6

More than 1 year has passed since last update.

【LINE bot】 userId, groupId, roomIdを返してくれるBot【GAS】

Posted at

Botの動作イメージ

Botを招待しメッセージを投げると
個人チャットなら「ユーザーID」を
グループなら「グループID」を
LINEWORKS のトークルームなら「ルームID」を返してくれます。
※ルームIDに関しては、LINEWORKSを使っていないため、検証できていません、、

■個人チャット
userId.jpeg
■グループ
groupId.jpeg

プッシュメッセージ送信用のIDを取得できる

Botのメッセージ送信方法は大きく分けて(応答メッセージプッシュメッセージ)があり、プッシュメッセージを利用する場合、送信先のIDを指定する必要があります。
このBotでプッシュメッセージ送信用のIDを取得することが出来ます。

GASでBotを実装

LINE developersのチャンネル作成など詳細は、いろいろな記事でまとめられているので省きますが
1. 以下のGASのACCESS_TOKENをLINE developers記載のトークンに書き換え
2. GASをWEBアプリとしてデプロイ
3. デプロイしたURLをLINE developersでWebhook URL設定、Webhook利用許可
これで、Botとして動作するはずです。

// LINE developers記載のアクセストークン
var ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

function doPost(e) {
  // ----- 送られてきた値をパース -----
  var event = JSON.parse(e.postData.contents).events[0];

  // 応答用Token
  var replyToken = event.replyToken;

  // typeを取得 
  var type = event.source.type;

  // typeを判定して、idを取得
  if (type == 'user') {
    var id = event.source.userId;
  } else if (type == 'group') {
    var id = event.source.groupId;
  } else if (type == 'room') {
    var id = event.source.roomId;
  }

  // ----- メッセージ送信用パラメータ設定 -----
  var url = 'https://api.line.me/v2/bot/message/reply';

  var payload = {
    'replyToken': replyToken,
    'messages': [
      {
        'type': 'text',
        'text': type + '_id = '+ id
      }
    ]
  };

  var options = {
    'method': 'post',
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + ACCESS_TOKEN,
    },
    'payload' : JSON.stringify(payload)
  };

  // ----- lineメッセージ送信 -----
  UrlFetchApp.fetch(url, options)
}

送信元の判定

var type = event.source.type;

sourceオブジェクト内の'type'を見て判定し、取得するIDを切り替えています。
個人チャット:user
グループ:group
トークルーム: room
の3種類あるようです。

スプレッドシートに書いてもOK

メッセージを送りたくなければ、スプレッドシートに書き出して確認するのもありです。

var spreadsheet = SpreadsheetApp.openById("*********************");
var sheet = spreadsheet.getSheetByName("シート1");
sheet.getRange(1, 1).setValue(id);

参考

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6