こちらの記事の続編です。
##Pushメッセージとは
基本的にBotは送信されたメッセージに反応しますが、PushメッセージはBotからメッセージを送ることができます。
企業のアカウントなどを友達登録していたら、よくBotメッセージがくると思いますが、それがPushメッセージになります。
今回は、GASを使って毎朝決まった時間にメッセージを送ってくるBotを作ろうと思います。
準備
アクセストークンの取得やGASのエディタの開き方などのは前回の記事を参考にしてください。(この記事を書いてる間にサイトのデザインが変わりましたがあまり気にしない...)
プランについて
Pushメッセージを送るにはとりあえず「Developer Trial」のプランを使用すれば大丈夫です。
ユーザーIDについて
Pushメッセージを送るには送信する人のユーザーIDが必要になります(グループに送る場合はgroupIDが必要)。Botをフォローしているユーザー全員に送りたい場合はそれぞれのユーザーIDをBotのフォローイベントなどを使って取得して、それをDBに保存する必要があり少々面倒です。
なので、今回はとりあえず自分にだけPushメッセージが送ることができればいいので、自分のアカウントのユーザーIDを取得します。
ユーザーIDはチャネル基本設定の一番下の「Your user ID」にあります。
こちらをコピーしておきましょう。
開発
APIトークンとuserIDを取得したということで、GAS上で開発していきます。
コードはこんな感じです。
var CHANNEL_ACCESS_TOKEN = 'YOUR_CHANNEL_ACCESS_TOKEN';
var USER_ID = 'YOUR_USER_ID';
function pushMessage() {
//deleteTrigger();
var postData = {
"to": USER_ID,
"messages": [{
"type": "text",
"text": "おはよう",
}]
};
var url = "https://api.line.me/v2/bot/message/push";
var headers = {
"Content-Type": "application/json",
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
};
var options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(postData)
};
var response = UrlFetchApp.fetch(url, options);
}
トークンとユーザーIDを入力したら、保存して
関数pushMessageを選択して実行してみましょう。(その前にBotのアカウントに友達登録をしておいてください)
このように、事前にメッセージを入れなくてもBotからメッセージが来たら成功です。
解説
やっていることは、前回のreplyメッセージとほとんど同様で、replyメッセージではユーザーから送られてきたメッセージに対応して、
https://api.line.me/v2/bot/message/reply
こちらのエンドポイントにPostを送ることで返信ができました。
こんかいのPushメッセージでは、ユーザーからのメッセージが来なくても
https://api.line.me/v2/bot/message/push
こちらのエンドポイントに直接Postを送ることでメッセージを送信しています。
ユーザーIDを必要とするのは送る人を限定するためです。
あとがき
そういえば、最近、「LINE BOOT AWARDS」が発表されましたね。
GASで何かBotを作って応募するのも楽しそうですね!