PushMessageと呼ばれる、
Botアカウントから、ユーザーにメッセージを送る機能が使いたい
ただ、使えるかどうかも分からなかったので、調べた結果をまとめます。
目次
結論
先に結論を言えば使えます。
色々調べた後、気づきましたが、追加したチャネルにもちゃんと記載がありました。
「Message api プラン」でググって最初に出てくるリンクの情報に惑わされました。
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi10.png)
Message APIについて
LINEのMessageAPIには、2つの機能があります。
- Reply Message
- Push Message
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi1-800x433.png)
ここに、MessageAPIの特徴があります
仕組みはここ
プランについて
ここに記載のプランによるとDeveloperTrialプランならPush Message(API)が使えるようです。
*2019年7月11日時点のリンクの情報
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi2-800x281.png)
先ほどのリンクでLINE@というプランもあり、よくわからない
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi3-800x259.png)
DeveloperTrialプランへの変更
プラン変更すれば、とりあえず使える気がするので、
LINE Official Account Managerで変更を試みるが、プラン体系が違う。。。
何か見落としている気がしたので、もう少し調べました。
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi4-800x253.png)
DeveloperPlan移行の記事
まず、DeveloperPlan移行という記事を発見。
この記事によると、以降して、フリープランになったとありました。
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi5-800x105.png)
さらに、プッシュメッセージを送信できるようになります。
と記載もあります!素晴らしい。
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi7-800x73.png)
LINE@サービス統合
先ほどの記事のプレスリリースを見ると、PDFが2つあり、1つめにプランも載っています。
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi6-2-800x533.png)
Pythonで評価
参照
PUSH Messageだけでなく、開発時には下記のMessage APIリファレンスを参照すると
良いと思います。
APIリファレンスには色々なコードのサンプルが載っています。
これらを参考に使いたい言語で開発をします
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi8-1.png)
channel access token
LINE Developersのプロバイダーリストで作成したチャネルのところから取得します。
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi9-800x152.png)
基本情報のChannel ID,Channle Secretではありません。
user id
user idはWebhookURLで指定しているのウェブアプリ側で確認できます。
他にも方法はあるかもしれません。
下記はNodeRedで確認していますが、LINE Developersで用意したチャンネル(Bot)に
取得したいユーザーのLINEアプリからメッセージを送ると、下記のようにUSER IDがひっついてきます。
![](http://hituji-ws.com/wp-content/uploads/2019/07/pushapi11-800x596.png)
python コード
Text Message
channel access tokenとuser idを置き換えて下記実行するだけです。
from linebot import LineBotApi
from linebot.models import TextSendMessage
line_bot_api = LineBotApi("channel access token")
user_id = "user id"
messages = TextSendMessage(text=f"こんにちは")
line_bot_api.push_message(user_id, messages=messages)
Flex Message
Flex Messageの場合が分かりにくかったので、載せておきます。
APIリファレンス見ても、JSON載っているだけだし、line-bot-sdkのGithub見ても分かりにくかったです。
FlexSendMessageで与えている、alt_textはメール受信時のテキストになるようです。
![](http://hituji-ws.com/wp-content/uploads/2019/07/IMG_1298.png)
from linebot import LineBotApi
from linebot.models import FlexSendMessage
import json
#JSONデータ読み込み
f = open('hoge.json', 'r')
messages = json.load(f)
messages = FlexSendMessage(alt_text="hoge", contents=messages)
#メッセージ送信
line_bot_api = LineBotApi("channel access token")
user_id = "user id"
line_bot_api.push_message(user_id, messages=messages)
hoge.jsonファイルの中身は、Flex Message Simulatorとかで作るものでそのままで良いです。
例えば、下記のようなJSONを保存して読み込めば、OKです。
{
"type": "bubble",
"hero": {
"type": "image",
"url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/01_1_cafe.png",
"size": "full",
"aspectRatio": "20:13",
"aspectMode": "cover"
}
}