Help us understand the problem. What is going on with this article?

Google Apps ScriptでPushメッセージのLINE Botを作る。

More than 1 year has passed since last update.

こちらの記事の続編です。

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」にあります。
LINE_Developers.jpg

こちらをコピーしておきましょう。

開発

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のアカウントに友達登録をしておいてください)
push_test.jpg

このように、事前にメッセージを入れなくてもBotからメッセージが来たら成功です。
LINE.jpg

解説

やっていることは、前回の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を作って応募するのも楽しそうですね!

tetrapod117
最近はWebRTCをやったり、インフラやったり。 ハッカソンが好きで、ちょくちょく出たりしてます。 最近、GCPのProfessional Cloud Architectの資格を取ったので、GCPネタを書いていきたい。
http://tetlab117.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした