Q&A

たまにInvalid reply token

Webhook URLにGASで作ったWebアプリケーションを設定しています。

LINE BOTにメッセージを送ると、reply APIを実行しているのですが、 特定のユーザーで、たまにreplyが成功しないことがあります。

自分のアカウントでは、replyは100%成功しており、エラーの原因が特定できていません。

    var url = 'https://api.line.me/v2/bot/message/reply';
    UrlFetchApp.fetch(url, {
      'headers': headers,
      'method': 'post',
      'payload': JSON.stringify({
        'replyToken': reply_token,
        'messages': [{
          'type': 'text',
          'text': message,
        }],
      }),
    });
GASのエラーメッセージ
	{"message":"https://api.line.me/v2/bot/message/reply のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: {\"message\":\"Invalid reply token\"}(応答の全文を見るには muteHttpExceptions オプションを使用してください)","name":"Exception","fileName":"module-line (スクリプト)","lineNumber":126,"stack":"\tat module-line (スクリプト):126 (doReply)\n\tat module-line (スクリプト):99 (doPost)\n"}
  • 0
  • 2
  • 4312
  • twitter facebook

測った方がいて、30秒ほどらしいですね。 https://blog.morugu.com/entry/check-line-reply-token-expire

私は最近Line Botに参戦したのですが、今は一回そのtokenを使うと無効になる仕様になってません?? 複数種類の応答を想定して作って、その中で一回でもエラーメッセージを送ると2回目以降invalidが返ってきます。 なので通常のメッセージのもエラーも全部一つのメッセージのarrayにする構文にして送らなければならなかったです。

  • 0

reply tokenが無効になっているエラーです。

ドキュメントの「応答メッセージを送る」に

応答トークンは一定の期間が経過すると無効になるため、メッセージを受信したらすぐに応答を返す必要があります。

と記載があり、GASでの処理が一定時間を超過しているのではないでしょうか。 処理速度の計測と(数秒以上かかっているようであれば)改善を試してみてください。

  • 0
本当によろしいですか? question.vm