如何接收? 如何回覆(Reply)呢?
接收到的下列內容,也就是doPost(e) 裡面的 e.postData.contents,但是收到的是字串,我們要先轉乘JSON 物件
其中 replyToken 及 text 是我們要取得的目標
{
"destination": "xxxxxxxxxx",
"events": [
{
"replyToken": "0f3779fba3b349968c5d07db31eab56f",
"type": "message",
"mode": "active",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
},
"message": {
"id": "325708",
"type": "text",
"text": "Hello, world"
}
},
{
"replyToken": "8cf9239d56244f4197887e939187e19e",
"type": "follow",
"mode": "active",
"timestamp": 1462629479859,
"source": {
"type": "user",
"userId": "U4af4980629..."
}
}
]
}
回覆(Reply)
所以我們也要傳送HTTP POST 的訊息給 LINE 伺服器
curl -v -X POST https://api.line.me/v2/bot/message/reply \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
"replyToken":"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
"messages":[
{
"type":"text",
"text":"Hello, user"
},
{
"type":"text",
"text":"May I help you?"
}
]
}
實作後:
var channelAccessToken = "";
function doPost(e) {
var msg = JSON.parse(e.postData.contents);
var replyToken = msg.events[0].replyToken;//權杖
var userMessage = msg.events[0].message.text;//訊息
//回覆訊息
var url = 'https://api.line.me/v2/bot/message/reply';
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + channelAccessToken,
},
'method': 'post',
'muteHttpExceptions' : true,
'payload': JSON.stringify({
'replyToken': replyToken,
'messages': [{type:'text',text:'你說了:' + userMessage}]
}),
});
//使用者的ID
var userId = msg.events[0].source && event.source.userId;
//推播訊息
var url = 'https://api.line.me/v2/bot/message/push';
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + channelAccessToken,
},
'method': 'post',
'muteHttpExceptions' : true,
'payload': JSON.stringify({
'to': userId,
'messages': [{type:'text',text:'有人說了:' + userMessage}]
}),
});
}