Botの動作イメージ
Botを招待しメッセージを投げると
個人チャットなら「ユーザーID」を
グループなら「グループID」を
LINEWORKS のトークルームなら「ルームID」を返してくれます。
※ルームIDに関しては、LINEWORKSを使っていないため、検証できていません、、
#プッシュメッセージ送信用のIDを取得できる
Botのメッセージ送信方法は大きく分けて(応答メッセージ、プッシュメッセージ)があり、プッシュメッセージを利用する場合、送信先のIDを指定する必要があります。
このBotでプッシュメッセージ送信用のIDを取得することが出来ます。
#GASでBotを実装
LINE developersのチャンネル作成など詳細は、いろいろな記事でまとめられているので省きますが
- 以下のGASのACCESS_TOKENをLINE developers記載のトークンに書き換え
- GASをWEBアプリとしてデプロイ
- デプロイした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);
#参考
https://developers.line.biz/ja/docs/messaging-api/sending-messages/