【Messaging API #2】reply_messageで「request body has 1 error」が起きる (python)
herokuにdeployしていた下のコード。
ちゃんと動いていたはずのreply_messageがいつからかErrorを吐いて終了していたので覚書。
変な文字列でも入れたのかと切り分けを進めたが、結果的には、contentsの文字列が長すぎた模様。
line_bot_api.reply_message( event.reply_token, TextSendMessage(text=contents) )
大体、マルチバイト含んで2000文字近く送ろうとした時に落ちてる。
OK | NG | |
len(contents) | 1709 | 2008 |
len(contents.encode(utf-8)) | 2401 | 3092 |
headerとかもろもろのオーバーヘッドがあるので、具体的によくわかないけど目安がてら。
対策は下記2つ。
1. contentを分けて、reply_messageを細かく送信
予想はしていましたが、結果としてもダメでした。
event.reply_tokenは、①30秒以内に、②1度のみ送信できるルールでした。
2. contentを分けて、push_messageを細かく送信
これは成功しました。
(例)
for content in contents.split('\n') try: line_bot_api.push_message(user_id, TextSendMessage(text=content)) except LineBotApiError as e: print(e)
めでたしめでたし。