質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

732閲覧

LINEbotから唐突に返信が来なくなる botを新しく作成すると改善する?

AGLAAGLA

総合スコア54

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/08/08 16:39

現在、あるゲームの進行役として、google app scriptを使用しLINEbotを作成しています。
ゲームの特徴として、ゲームを開始すると、gasが動き、新しいスプレットシートが作成され、スコアが刻まれます。

そこでそのbotを使用してゲームをしているといきなり返信が無くなりました。

以前にも全く返信がなくなったことがあり、コードが問題かと思って見直しましたが、問題なく、新しくbotを作り直してコードを動かすと正常に動きました。通常は既読は絶対つくのですが、その際は既読すらつかなくなっていました。

今回の2回目は既読がつきますが、返信がない状態です。

自分が考える問題点?
・メッセージの送りすぎ?→200~300ほどしか送信していない
・コードが問題?→コードを全く一緒で、botを作り直したら動作したためコードは問題ない
・webhookは正しく通っている?→成功メッセージが通っている。

このような状態で、全く原因がわからない状態です。
本日、夕方ごろに使用しており、いきなり返信が無くなりました。

その夜に、グループIDを変え、もう一度試してみると、メッセージが一通だけきました。
しかし、メッセージが二通連続でくるはずが、一通のみ送信され、二通目は全く来ず、その後、全く返信が無くなるようになりました。ちなみに、夕方使用していた場所とは違うメッセージで返信が来なくなりました。

しかし、スプレッドシートの処理は正しく動いていたことから、原因はLINEであることが推測されます。

何度も何度も、同じプログラムで動作してゲームを進行させており、いきなり途中で返信が無くなるということが理解できず、困っています。まだ、一度の返信が無くなるだけならいいのですが、その後、一回も返信することがなくなる現象も意味が理解できませんし、時間を空けると一通だけ返信が来るのも理解できません。

一応、送信部分のソースコードだけ載せておきます。

javascript

1//LINE Developersで取得したアクセストークンを入れる 2var CHANNEL_ACCESS_TOKEN = ''; 3var url = 'https://api.line.me/v2/bot/message/push'; 4var groupID = ''; 5const OutputFolder = DriveApp.getFolderById(''); //保存するフォルダ指定 6 7 8 9 10//ポストで送られてくるので、送られてきたJSONをパース 11function doPost(e) { 12 var json = JSON.parse(e.postData.contents); 13 14 //返信するためのトークン取得 15 var reply_token= json.events[0].replyToken; 16 if (typeof reply_token === 'undefined') { 17 return; 18 } 19 20 21 let message=json.events[0].message.text; //送られたメッセージ内容を取得 22 23 if (message=='ゲーム開始'){ 24 var date = new Date();//現在時刻取得 25 date = Utilities.formatDate(date, "Asia/Tokyo", "ゲームを開始しました yyyy/MM/dd hh時mm分"); 26 send_message(date)//ゲームを開始した旨を送信 27 create_spreadsheet()//新しくスプレッドシートを作成 28 send_message('1チーム目の名前を入力してください。') 29 } 30 31function send_message(message){ 32UrlFetchApp.fetch(url, { 33 'headers': { 34 'Content-Type': 'application/json; charset=UTF-8', 35 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, 36 }, 37 'method': 'POST', 38 'payload': JSON.stringify({ 39 'to': groupID, 40 'messages':[{ 41 'type': 'text', 42 "text" : message, 43 }] 44 }) 45 }) 46}

その夜に返信が一通だけ返ってきました、と言っていたのは、

send_message(date)//ゲームを開始した旨を送信

のことです。
しかし、その下の

create_spreadsheet()//新しくスプレッドシートを作成

は完全に作成されており、

send_message('1チーム目の名前を入力してください。')

が送信されませんでした。

ちなみに普段は当たり前のように送信されており、この後、一切のメッセージが送信されなくなっています。

返信に制限があると考えるのが一番筋が通っていそうなのですが、どなたか解消方法ご存知の方いらっしゃいませんか?

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AGLAAGLA

2022/08/09 06:04

早々にありがとうございます。 HTTPレスポンスはどこに表示されるのでしょうか? 一通りの動作をして、レスポンスコードが見当たらなかったのですが、、
AGLAAGLA

2022/08/09 16:10

https://ryjkmr.com/google-apps-script-console-log/ こちらのサイトを参考にして、エラーの内容を見ることができました。 ちなみに、CHERRYさんのおっしゃる通り、 ``` function send_message(message){ var response = UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, }, 'method': 'POST', 'payload': JSON.stringify({ 'to': groupID, 'messages':[{ 'type': 'text', "text" : message, }] }) }) Logger.log(response.getResponseCode()); } ``` というふうにして、gcp上でログが見れるかと思いきや表示できませんでした。 それとは別にLINEをbotに送信し、ログを見てみると、二種類のクエリ結果が得られました。 1つ目 ``` IAM serviceusage.googleapis.com …v1.ServiceUsage.BatchEnableServices projects/1082135446155/services apps-macros@system.gservi… Permission denied to enable service [drive] Help Token: AfeSHlLbt... ``` 2つ目 ``` Exception: サーバー エラーが発生しました。しばらくしてからもう一度試してください。 at [unknown function](コード:6:31) ``` 二つとも同時刻ですので、返事が返ってこないエラーの原因だと思います。
AGLAAGLA

2022/08/09 16:23

上記エラーを調べてみると、google drive apiの有効が効果的らしくしてみると、エラー内容が変わりました。 ``` {"message":"You have reached your monthly limit."} ``` となりました。 やはり、送信できる回数に上限が来たようですね、、
guest

回答2

0

ゲームの特徴として、ゲームを開始すると、gasが動き、

ゲーム開始という文字列をLINE BOTに対して送信するとGASが動作するという意味ですか?

新しくbotを作り直して

「新しくBOTを作り直す」とは具体的にどのような動作をしたのですか?
情報不足です。

コードを動かすと正常に動きました。

「コードを動かす」とは具体的にどのような動作をしたのですか?
情報不足です。

今回の2回目は既読がつきますが、返信がない状態です。

「今回の2回目」があるという事は何が1回目ですか?
「前回の1回目」はどのような動作をしたのですか?
2回しかGASの動作テストをしていないという事ですか?

メッセージの送りすぎ?→200~300ほどしか送信していない

レート制限を確認して下さい
https://developers.line.biz/ja/reference/messaging-api/#rate-limits

webhookは正しく通っている?→成功メッセージが通っている。

「成功メッセージが通っている」事をどのように確認しましたか?

投稿2022/08/09 02:27

slemntqe

総合スコア120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

GCPと連携することで、メッセージ上限が来ていたことがわかりました。

投稿2022/08/31 04:03

AGLAAGLA

総合スコア54

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問