概要
Push APIを使ってユーザ単位でメッセージ送信はできたものの、グループでのやり方がわからず結論難しく考えていたため備忘録。
前提
- Messaging APIのDeveloper Trialのアカウントを作成している(もしくはプロアカウント)
アカウント設定
Bot設定
アカウント作成後は、LINE@ MANAGERのBot設定を見るとAPIが無効になっているので有効化します。その後、設定項目が並ぶのでWebhook送信とBotのグループトーク参加は利用する
を選択して保存します。
Webhookの設定、トークンの生成
LINE DevelopersのBasic information画面下部のEDIT
で編集画面でWebhook URLを設定します。これは、ユーザが友達に追加したりグループに参加した場合のId情報などがJSON形式でPOST送信されてきます。VERIFY
押下でサンプルのJSONが確認できます。
Channel Access TokenはPush APIでメッセージ送信の際に利用します。アカウント作成時は空なのでISSUE
押下でトークンを生成します。
アプリ設定
アプリ側の準備
LINEアプリ側でプッシュメッセージを受信するグループを作成します。
また、LINE DevelopersのBasic information画面のQR Codeを読み取ってPush API用アカウントを友達追加します。
グループにPush API用アカウントを招待
そして、作成したグループにAPIアカウントを招待してください。このタイミングでグループへの参加がイベントとしてWebhookに設定したURLにJSON情報が送信されます。
{
"events": [
{
"type": "join",
"replyToken": "8f94c14575e04ea3a99d9d79ae3daa3a",
"source": {
"groupId": "C23fcbe8d92b0e428298ae1e32585fb36",
"type": "group"
},
"timestamp": 1479886261509
}
]
}
curlでメッセージ送信のテスト
言語での実装は時間がかかるのでひとまずcurlで実験しましょう。下記のAuthorizationの部分にChannel Access Token
が入ります。toの部分にはWebhookで取得したJSONのgroupId
を指定します。
curl -X POST \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer 0Sw81tcX82eGuKkMPYRgbvDUeAIbgPC+wKR8T1aKaWy4+7dpUzR2t9XpVDQw1cKivU1AVBD6tE/DIWSz60QTW9UCyC7lJgE+u74XvEceuoMqmZkZdAxw/DMybh6hffSwUhDg74qcrlRZLPRIcahC/wdB04t89/1O/w1cDnyilFU=' \
-d '{
"to": "C23fcbe8d92b0e428298ae1e32585fb36",
"messages":[
{
"type":"text",
"text":"Hello, world1"
},
{
"type":"text",
"text":"Hello, world2"
}
]
}' https://api.line.me/v2/bot/message/push
結果
終わりに
- IdとかDBでの管理がやっぱり必要?
- そもそも一斉送信には一つ一つのuserIdでPush APIを叩かないといけない?