決済フロー部分の改善をちょっとずつ進めました。
https://tech.xcrat.biz/entry/535/
次はトークルーム上のメッセージのやり取り部分の改善です。
- 返信メッセージが遅れる
- 返信メッセージが一度届かなくなったら、その後にメッセージが送信されない
というようなことが、継続運用をしているうちに出てきました。
2つめの「その後・・・」はメッセージ送信で何らかのエラーとなり、その後、LINE側の接続がすべて閉じられたような感じを受ける状態でした。
送信方法が間違っていたら、最初からプログラムエラーで分かるのですが、
何がトリガーなのか?をログを見てもわからず。
が、関係者で打ち合わせをしている時に、
・ リプライトークンの有効期限切れ
じゃないか?疑惑が。
Message APIを使った実装を行っている関係者の実体験いわく、意外と短いとのこと。(リファレンスにどれくらいという明記はないのですが。)
うーむ、なるほど。
確かに、今回はwebhookでメッセージを返信する時にDB接続しての処理など、自システム内のチェック処理を経由してからメッセージすることが多く、
メッセージ送信前に意外と時間がかかっているかも・・・。
ということで、ReplyとPushが混じっていたコードをPushに統一しました。
変更自体は簡単でした。
ユーザーから送信されたメッセージを処理した時に取得するイベントの共通プロパティに含まれる”source”には、送信ユーザーのID情報が含まれているので、リプライトークンの代わりにその送信ユーザーIDを取得してセット。完了です。
現時点で返信メッセージが戻ってこないケースが発生しなくなったので、
一安心しております。
単純なメッセージ応答ではない処理を組む時には、最初からPush形式にするように実装したほうがいいかもしれませんね。
LINEPayの決済導入や、LINEPayのオンライン決済とシステムの連携など、お困りの方は、是非、弊社にご相談ください。
ご相談は、こちらから。