前提
GAS(google appscript)を使用してLINEにFlex Messageを送信したいです。
送信されたメッセージに返信するのではなく、GASのトリガーを利用して、ある時間になったらFlex Messageが送信されるようにしたいです。
実現したいこと
記述されたデータ(JSON)をLINEのサーバーに投げてラインメッセージとして送信されるようにしたい。
発生している問題・エラーメッセージ
Exception: Request failed for https://notify-api.line.me returned code 400. Truncated server response: {"status":400,"message":"message: must not be empty"} (use muteHttpExceptions option to examine full response)
該当のソースコード
JavaScript
1 var channel_access_token = ''; //ここにアクセストークンを書く 2 3 var message = { 4 "messages" : [ 5 { 6 'type':'flex', 7 'altText':'this is a flex message', 8 //↓このcontentsの部分にSimulatorのJSONをコピー 9 'contents': { } 10 } 11 ] 12 }; 13 14 15 //Lineの送信データの作成部分 16 var options = { 17 "headers" : { 18 "Content-Type" : "application/json", 19 "Authorization" : "Bearer " + channel_access_token 20 }, 21 "method" : "post", 22 "payload" : JSON.stringify(message) 23 }; 24 25 var response = UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); 26 Logger.log(response); //レスポンスがほしいときはコメント外す 27}
試したこと
https://notify-api.line.me からの400番のエラーが返ってきているのでURLが違うか、"messege"の内容がおかしいのではと考えた。
URLについてはhttps://developers.line.biz/ja/docs/messaging-api/sending-messages/ のコード中に記載のあるURLをすべて試した。
また、Flex Message であることが問題なのでは、と考え、以下のコードを実行したところうまく送信された。
JavaScript
1var accessToken = ''; //ここにアクセストークンを書く 2 var options = { 3 'method' : 'post', 4 'headers': { 5 'Authorization': 'Bearer ' + accessToken 6 }, 7 'payload' : { 8 'message': message 9 } 10 }; 11 var response = UrlFetchApp.fetch('https://notify-api.line.me/api/notify', options); 12 //Logger.log(response);
補足情報(FW/ツールのバージョンなど)
https://note.com/koshikake0124/n/n5bb2107fad0f を参考にしましたがこちらは送信されたメッセージに対して返答するものなので、少し違うのでは?と考えています。
全くのにわかですので、ここに乗っていない大切な情報があるかもしれません。必要な情報は聞いていただけるとありがたいです。タグが不適切な可能性があります。
回答1件
あなたの回答
tips
プレビュー