てぃぐれのプログラマwiki

ワクワクに従う

LINE API メッセージ数のカウントのされ方と節約

問題

LINE ポケモンバトルのメッセージ数が多すぎるので減らしたい。

 

経緯

以前、甥っ子と戯れるために作ったLINEアプリなのだが、この前、戯れた日のメッセージ数を見たら158のプッシュ通知をしていた。

無料版で1000/1ヶ月なのに、1日で158はやりすぎ。

ということで、改善できるところを改善してみた。

 

LINE Messaging API 料金システム

どのような課金仕様なのか。

 

FAQ | LINE Developers

ここにメッセージ送信とその課金内容についての質問があった。メッセージは届いた相手の人数に比例するようだ。

メッセージのオブジェクトは関係ないとのこと。つまり、送れるものは一度に送りましょうということだよね。

 

私の場合、画像を送るのとテキストを送るのを別々のプッシュ通知で送っていたので、それを一つにまとめて送ることができれば、push数を半分にすることができる。

 

※グループに送るとグループの人数分に料金が発生してしまうのは、ちょっと意外。

 

解決

ソースを見てみるとpush_messageメソッドのmessages引数はリストを入れても大丈夫なようだ。つまりそういうことだよね。

line-bot-sdk-python/api.py at 117e897b07de79e4d99acce9f6ac84091d09598e · line/line-bot-sdk-python · GitHub

 

案の定、画像とテキストを入れたリストを渡してあげると一つにまとめることができた。

 

サンプルコード

image_message = ImageSendMessage(
original_content_url=f'https://xxxx.herokuapp.com/pic',
)
 
text_message = TextSendMessage(text='テスト')
 
line_bot_api.push_message(user_id,[image_message,text_message])

 

Python3.8