前回の続きです。
GASの「実行」で発信は出来るようになりました。「LINE公式アカウントに追加してもらったユーザー」に対して発信ができるように、さらに仕掛けを組んでみます。
Botを作るためには、最低限下記の2つが必要です。
- ボット用のチャネル
- ボットをホストするサーバー
チャネルは前回作成済み。GASがホストするサーバーの役割をしてくれます。
ウェブアプリケーションとして導入
ボットをホストするサーバーとして設定する必要があるので「ウェブアプリケーションとして導入」をします。
誰でも使えるようにする必要があるので、Anyone,even anonymousにします。
公開完了です。
Webhook settings
LINE のMessaging API側のWebhookをセットします。公開されているGASのウェブアプリケーションを設定します。
これで準備完了です。
メッセージを送信する
作成したボットは、2種類の送信方法(応答メッセージ、プッシュメッセージ)を利用できます。
https://developers.line.biz/ja/docs/messaging-api/sending-messages/
送信方法
- 応答メッセージ
- プッシュメッセージ
- プッシュメッセージ(1対1)
- マルチキャストメッセージ(1対多:ユーザーID指定)
- ナローキャストメッセージ(1対多:絞り込み配信)
- ブロードキャストメッセージ(1対多:すべての友だち)
メッセージタイプ
- テキストメッセージ
- スタンプメッセージ
- 画像メッセージ
- 動画メッセージ
- 音声メッセージ
- 位置情報メッセージ
- イメージマップメッセージ
- テンプレートメッセージ
- Flex Message
doPost
function doPost(e) {
}
WebアプリにPOSTリクエストが送られた時に関数を実行させたい場合はdoPostを使います。今回はPushのみなので特に使いません。が返信用に一応セットしておきます。
UrlFetchApp.fetch
UrlFetchApp.fetch(URL[, パラメータ])
LINEのAPIでpush用のURLをセットします。
HTTPリクエスト
POST https://api.line.me/v2/bot/message/push
function pushMessage(){
UrlFetchApp.fetch(“https://api.line.me/v2/bot/message/push”, )
}
method 属性
method 属性を postに設定します。
headers
“headers”: に指定された値を設定します。
リクエストヘッダー
Content-Type application/json
Authorization Bearer {channel access token}
function pushMessage(){
UrlFetchApp.fetch(“https://api.line.me/v2/bot/message/push”, {
“method”: “post”,
“headers”: {
“Content-Type”: “application/json”,
“Authorization”: “Bearer ” + Channel_Access_Token,
},
}
リクエストボディ
payload(データ本体)をJSON.stringify() メソッド(JavaScript のオブジェクトや値を JSON 文字列に変換)で変換します。
userId…公式アカウントのUSERIDを指定します。
messages…送信するメッセージタイプと、本文を設定します。
f
“payload”: JSON.stringify({
“to”: userId,
“messages”: [{
“type”: “text”,
“text”: “HELLO”,
}]
})
});
}
Exception: https://api.line.me のリクエストに失敗しました(エラー: 400)
Exception: https://api.line.me のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: {“message”:”The request body has 2 error(s)”,”details”:[{“message”:”May not be empty”,”property”:”messages[0].type”},{“message”:”May not be empty”,…(応答の全文を見るには muteHttpExceptions オプションを使用してください)
at push_message(コード:51:30)
何度試してもエラーが…と数時間苦戦していましたが、ひとつずつ調べてみると・・・よく見ると、まずいところに「,」が入っていたようです。
これでひとまず。実行すれば送信ができる…はずです!
function pushMessage(){
UrlFetchApp.fetch(“https://api.line.me/v2/bot/message/push”, {
“method”: “post”,
“headers”: {
“Content-Type”: “application/json”,
“Authorization”: “Bearer ” + Channel_Access_Token,
},
“payload”: JSON.stringify({
“to”: userId,
“messages”: [{
“type”: “text”,
“text”: “HELLO”,
}]
})
});
}
たったこれだけのコードでBotが作れるとは…!GAS、素晴らしい!!
注意点としては、無限ループなどに陥ってしまうと、無限送信・・・といった恐ろしい事が起こってしまうかもしれず・・・お友だち(?)に多大なる迷惑が掛かってしまうので、コーディングをする際は、慎重に…!
続きはまた^o^)/
Messaging API>メッセージを送信する
https://developers.line.biz/ja/docs/messaging-api/sending-messages/