PushMessageと呼ばれる、
Botアカウントから、ユーザーにメッセージを送る機能が使いたい
ただ、使えるかどうかも分からなかったので、調べた結果をまとめます。
目次
結論
先に結論を言えば使えます。
色々調べた後、気づきましたが、追加したチャネルにもちゃんと記載がありました。
「Message api プラン」でググって最初に出てくるリンクの情報に惑わされました。
Message APIについて
LINEのMessageAPIには、2つの機能があります。
- Reply Message
- Push Message
ここに、MessageAPIの特徴があります
仕組みはここ
プランについて
ここに記載のプランによるとDeveloperTrialプランならPush Message(API)が使えるようです。
*2019年7月11日時点のリンクの情報
先ほどのリンクでLINE@というプランもあり、よくわからない
DeveloperTrialプランへの変更
プラン変更すれば、とりあえず使える気がするので、
LINE Official Account Managerで変更を試みるが、プラン体系が違う。。。
何か見落としている気がしたので、もう少し調べました。
DeveloperPlan移行の記事
まず、DeveloperPlan移行という記事を発見。
この記事によると、以降して、フリープランになったとありました。
さらに、プッシュメッセージを送信できるようになります。
と記載もあります!素晴らしい。
LINE@サービス統合
先ほどの記事のプレスリリースを見ると、PDFが2つあり、1つめにプランも載っています。
Pythonで評価
参照
PUSH Messageだけでなく、開発時には下記のMessage APIリファレンスを参照すると
良いと思います。
APIリファレンスには色々なコードのサンプルが載っています。
これらを参考に使いたい言語で開発をします
channel access token
LINE Developersのプロバイダーリストで作成したチャネルのところから取得します。
基本情報のChannel ID,Channle Secretではありません。
user id
user idはWebhookURLで指定しているのウェブアプリ側で確認できます。
他にも方法はあるかもしれません。
下記はNodeRedで確認していますが、LINE Developersで用意したチャンネル(Bot)に
取得したいユーザーのLINEアプリからメッセージを送ると、下記のようにUSER IDがひっついてきます。
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はメール受信時のテキストになるようです。
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"
}
}