LoginSignup
4
1

More than 3 years have passed since last update.

LINEのAPIで友だち登録している「全てのユーザー」にメッセージを送る方法

Last updated at Posted at 2020-09-20

なぜ書いたのか

ユーザーIDを指定してメッセージを送る方法しか知らなかったので、以下の手順を踏む必要があると考えていた。
1. 友だち登録したユーザーのユーザーIDを取得
2. ユーザーIDをDBかテキストファイルに保存
3. 保存したユーザー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)
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1