認證身份 channel access token

  • 記得有用到訊息傳送就必須要用到channel access token喔~
    1
    2
    //認證身份 channel_access_token
    var CHANNEL_ACCESS_TOKEN='??????' //輸入自己 LINE BOT 的 channel_access_token

回傳 User ID 機器人

1.首先到官方網站確認自己LINE BOT的channel access token並複製下來

2.進入Google Apps Script專案內,打入簡單的測試用code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//認證身份 channel_access_token
var CHANNEL_ACCESS_TOKEN='??????' //輸入自己 LINE BOT 的 channel_access_token

//主程式跑的地方(main)
function doPost(e) { //當網頁有Post請求時就會依據網址來執行這doPost
var msg= JSON.parse(e.postData.contents); //將事件(e)內的文字訊息解析出來
//msg內部存放著全部LINE事件產生的全部訊息
var replyToken = msg.events[0].replyToken; //replyToken是每個能夠reply的事件一定會附屬的令牌
var userMessage = msg.events[0].message.text; //解析使用者傳出的訊息內容
var userid=msg.events[0].source.userId; //專屬於你的User ID
reply_message(replyToken,userid); //使用reply_message這function來回覆訊息
}

// 這是對於訊息回覆的程式碼
// https://api.line.me/v2/bot/message/reply 為官方公告的 reply api
function reply_message(replyToken,reply,url='https://api.line.me/v2/bot/message/reply'){
UrlFetchApp.fetch(url, {
'headers': { //JavaScript的headers
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, //帶入LINE BOT的channel_access_token
},
'method': 'post', //使用POST的方式回傳
'payload': JSON.stringify({ //將訊息轉為JSON格式,JavaScript常用JSON傳輸資料
'replyToken': replyToken, //每個reply事件專屬的replyToken
'messages': [{'type': 'text','text':reply}] //回傳文字訊息,內容為reply也就是userMessage
}),
});
}

3.按下儲存並依照上一篇教學方式新增部屬 (方式如同上一篇)

4.去到原先創立LINE BOT的官方網頁並改掉Webhook URL (同上一篇)

5.最後去跟LINE BOT對話,他將會回覆你的User ID


LINE BOT 訊息傳送方式

  • LINE BOT 總共提供了三種的訊息傳送的方式
    1.reply message (有一對一回覆的限制,而且一次只能回覆一次的限制)
    2.push message (可以在任何的時機下自由的向一個地方傳送訊息)
    3.multicast message (就是一個可以一次向多個地方傳送訊息的功能,屬於PUSH的加強版)
  • 其中reply是完全免費;而push、multicast兩個合計每個月都有一定的上限次數

利用 Google Apps Script 傳送 LINE 訊息

1.reply message

1
2
// 上方的 reply_message 就是用來回覆 reply message 的
// 為了節省版面這邊就不在次附上

2.multicast/push message

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 為了方便起見,我個人都只有使用multicast來傳送訊息,所以這邊就附上multicast的程式碼
// 另外若想要用push來傳送訊息就只需要更改成push以及單純使用一個使用者(userid)就可以了
function push_message_userid(reply,userid){
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/multicast', {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'to':[userid],
'messages': [{'type': 'text','text': reply}]
}),
});
}

傳送測試訊息

  • 我個人常常運用push_message_userid傳送給自己來Debug
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //認證身份 channel_access_token
    var CHANNEL_ACCESS_TOKEN='??????' //輸入自己 LINE BOT 的 channel_access_token

    function myfunction(e){
    userid='??????' //輸入自己 userid (剛剛上面機器人回傳的那亂碼)
    push_message_userid("測試文字",userid)
    }

    // 記得push_message_userid也要放在檔案內喔~~
    function push_message_userid(reply,userid){
    UrlFetchApp.fetch('https://api.line.me/v2/bot/message/multicast', {
    'headers': {
    'Content-Type': 'application/json; charset=UTF-8',
    'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
    'to':[userid],
    'messages': [{'type': 'text','text': reply}]
    }),
    });
    }
  • 在Google Apps Script執行完後,LINE就會馬上跳出訊息了~