【Web】LINEチャネルからメッセージを送信(push)する(LINEでリマインダーbotアプリをつくろう日記8日目)

投稿日:2020年7月29日
最終更新日:2022年1月29日

※2022/1/29更新:コード.gsにイマイチな部分があったので修正しました

LINEボットからメッセージを送る

前回までのところで、LINEボットをフォローしたりメッセージを送ったときに返信できるようにしたりした。今回は、こちらから何かしなくても、Lineボットからメッセージを送れるようにする。リマインダーアプリ完成まであと少し。

 

前提条件

LINEチャネルを作成していること

LINEチャネルのアクセストークンとWebhookの設定していること

 

環境

Windows 10

 

Google Apps Scriptのコードにpushを追加

これまでLINEボットからフォローした時と、メッセージを送ったときのリプライをGASで実装したが、今回はコードを以下のように変更した。

const channel_token = "UIpPzOrXdyx4zUP1bhFd9sQg7CIsrphl7+XNHwKwOlbCWJaAkguxgxAingEdR0S69M71Nl8SptXWaSwxOe+xcRxV0Z6Qa73nQntjzVd4bFadID+1VPFiVEAZy7dh1xqzZ5qJLIkA8BNWKyOcMhfEowdB04t89/1O/w1cDnyilFU="
const user_id = "U2ef379160645782a81e85ad5a583eda1"
const url_push = "https://api.line.me/v2/bot/message/push";
const url_reply = "https://api.line.me/v2/bot/message/reply"
function pushMessage() {
let postData = {
"to": user_id,
"messages": [{
"type": "text",
"text": "家賃の支払い期限が近づいています。家賃を振り込んでください。",
}]
};
let headers = {
"Content-Type": "application/json",
'Authorization': 'Bearer ' + channel_token,
};
let options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(postData)
};
let response = UrlFetchApp.fetch(url_push, options);
}
function doPost(e) {
let json = e.postData.contents
let events = JSON.parse(json).events;
events.forEach(function(event) {
if(event.type == "follow") {
follow(event);
} else if(event.type == "message"){
if(event.message.type == "text"){
reply(event);
}
}
});
}
function follow(e) {
let message = {
"replyToken" : e.replyToken,
"messages" : [{
"type": "text",
"text" : "フォローありがとうございます。毎月25日に家賃の支払いをリマインドします。"
}]};
let options = {
"method" : "post",
"headers" : {
"Content-Type" : "application/json",
"Authorization" : "Bearer " + channel_token
},
"payload" : JSON.stringify(message)
};
UrlFetchApp.fetch(url_reply, options);
}
function reply(e) {
let message = {
"replyToken" : e.replyToken,
"messages" : [{
"type": "text",
"text" : "返信はできませんのでご了承ください。"
}]};
let options = {
"method" : "post",
"headers" : {
"Content-Type" : "application/json",
"Authorization" : "Bearer " + channel_token
},
"payload" : JSON.stringify(message)
};
UrlFetchApp.fetch(url_reply, options);
}
view raw コード.gs hosted with ❤ by GitHub

追加した部分はfunction pushMessage()の部分。postDataの中の”家賃の支払い期限が近づいています。家賃を振り込んでください。”という部分が、LINEボットから送られてくるメッセージになる。

一点注意が必要なのは、reply&followの時に呼び出すurlと、pushするときのurlが異なるので、replyとpushでurlを分けて、pushの時だけpush用のurlを以下で呼び出している。

  let url_push = "https://api.line.me/v2/bot/message/push";

また、user_idの部分には、自分がつくったLINEチャネルのuser IDを入れる。LINEチャネルのIDは、以下の画像のように LINE Developersのチャネル管理画面の「Basic settings」に記載されている、頭文字がUから始まるIDである。

 

変更したコードをデプロイする

ここはいつもと同じ要領で「公開」タブから「ウェブアプリケーションとして導入」を選択して、前と同じように以下のように設定して更新する。

 

つくったLINEチャネルにメッセージをpushしてみる

最終的にはGASのトリガーという機能を使い、決められた時間にメッセージを送るようにするのだが、まずはGASのテスト機能でpushを試してみる。

GASから以下のように「pushMessage」を選択し、実行ボタンを押すことで、pushMessage functionを実行することができる。

試しにpushMessage functionの中のmessagesのtextを「プッシュのテストです」という文章に変えて実行してみた結果、以下のように自分のLINEにボットからメッセージが届いた。

これでpushもできるようになった。次回はGASのトリガー機能を使って、このpushMessageを月に1回、決められた日にちに送信するように設定する。色々とひとまず家賃振り込みリマインドのボットは完成となる。

 

参考サイト

今回は以下の記事を参考に進めさせて頂きましたm(_ _)m

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

 

LINEボットをつくろう日記のまとめ

以下のページに、この日記をまとめています。日記をなぞっていけば同じようにLINEボットができるはず。興味がある方はぜひ。

【Web】Google Apps ScriptでリマインダーLINE botをつくろう日記

 

0

投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください