LINE BOTで Quick replyで選択肢を選ばせています。
不思議なことに、ときどき、do postが反応しません。
以下がコードです。
普通に、反応しますが、10回に3回くらい、反応しないことがあります。
App scriptをみると、ステータスー>失敗しました。
となっております。
原因はわかりますでしょうか?
doPostのコードで改善点はございますか?
function doPost(e){ if (typeof e === "undefined"){ //動作を終了する //return; } else { //JSON文字列をパース(解析)し、変数jsonに格納する var obj = JSON.parse(e.postData.getDataAsString()); var events = obj["events"]; for (var i = 0; i < events.length; i++) { if (events[i].type == "message") { reply_message(events[i]); } } } }
選ばせた文字を処理するコード (スプレッドシートの処理)
function reply_message(e) { //シートの最終行を取得する var lastRow = sh.getLastRow(); //Aを押したときの処理 if (e.message.text != "A") {
doPost が反応しないと書かれてますが、単に doPost 内でエラーが発生しているだけでは?
reply_message のソースも中途半端なのでこちらも完全なソースを提示しないと回答はつきにくいかと思います。
ありがとうございます。
単に doPost 内でエラーが発生しているだけでは?
↑
こちらは、具体的にどうやって調べられるでしょうか?
ログを確認するとか。
ありがとうございます!
dopost内のエラーを見るには、
Logger.log(events);
を追加する形でしょうか?
GCPと連携しておけば、エラーが出ればGCP側のログビューワで確認出来ます。ソースは変更する必要ありません。
昔書いたGCPとStackDriverを連携する方法について回答したURL貼っておきます。
https://teratail.com/questions/224727#reply-328815
ありがとうございます!
さっそく、チャレンジしてみます。またご連絡致します。
dragさん
どうやら、doPostで点火したあとで、配列の言葉をランダムに入れ替えて、その後BOTで出力していますが。そのタイミング? で配列の値が空のままで、おそらく出力コードにいっているかもしれません、
なので、LINEに言葉を入力しても反応しない(応答なし)ようになっているっぽいです。
その説明では状況がよくわかりません。どちらにせよソースの提示なしにこれ以上の回答はできません。
あなたの回答
tips
プレビュー