#なぜ書いたのか
ユーザーIDを指定してメッセージを送る方法しか知らなかったので、以下の手順を踏む必要があると考えていた。
- 友だち登録したユーザーのユーザーIDを取得
- ユーザーIDをDBかテキストファイルに保存
- 保存したユーザーIDを全て使用してメッセージを送信
これらの実装をするには、webhookの設定をしたりDBを作ったりしないといけないのでめんどくさかった。
そこで公式のリファレンスを流し見してたところ、ブロードキャストメッセージというものがあるらしく、
これを使えばわざわざユーザーID識別して一斉送信するような機能は必要なく、アクセストークンの指定だけで全てのユーザーにメッセージを送ることができるので早速実装してみた。
#使うもの
line-bot-sdk
インストール手順
pip install line-bot-sdk
概要
# 関数の説明
broadcast(self, messages, notification_disabled=False, timeout=None)
Send push messages to multiple users at any time.
# 使用例
line_bot_api.broadcast(TextSendMessage(text='Hello World!'))
#例
from linebot import LineBotApi
from linebot.models import TextSendMessage
# トークン設定
LINE_CHANNEL_ACCESS_TOKEN = os.environ.get("LINE_CHANNEL_ACCESS_TOKEN")
line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)
#実行
line_bot_api.broadcast(TextSendMessage(text='Hello World!'))
これだけ
必要に応じてmessageに入れる値をFlexMessageにしたりできる
from linebot import LineBotApi
from linebot.models import TextSendMessage, FlexSendMessage
# トークン設定
LINE_CHANNEL_ACCESS_TOKEN = os.environ.get("LINE_CHANNEL_ACCESS_TOKEN")
line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)
# メッセージ設定
message = {
"type": "flex",
"altText": "test"
#中略
}
obj = FlexSendMessage.new_from_json_dict(message)
#実行
line_bot_api.broadcast(messages=obj)