iT邦幫忙

0

Google App Script開發Line Bot如何處理postback

目前使用Google App Script開發Line Bot
想請問如何處理postback回傳的資料
程式碼:https://pastebin.com/Ai3ExQuQ
根據後臺回傳的值宣告取得回傳的時間(最後一行程式碼),但卻抓不到值,請問是為什麼?

程式碼太難看懂。放棄
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
otaku840726
iT邦新手 5 級 ‧ 2019-03-08 17:08:23

你的最後一行 是回傳你上面定義的 "data":"data"
訊息的時間是在 msg.events[0].timestamp

看更多先前的回應...收起先前的回應...
alex15964 iT邦新手 5 級 ‧ 2019-03-11 10:02:03 檢舉

我是要取得"data":"data"沒錯,但最後宣告出來的那值,我試著把他寫進google sheet或push message都是空的(以上兩個功能已測試過正常

console.log(msg.event[0].postback.data) 也是空的?

alex15964 iT邦新手 5 級 ‧ 2019-03-11 11:13:22 檢舉

稍微修改了一下程式碼:https://pastebin.com/sQfcff2i
後半的post(pdata)是無效的(取不到data


console.log(msg.event[0].postback.data)沒有回傳任何東西
log部分:https://imgur.com/a/CHpf9sI
這張圖是console.log(msg)跟console.log(msg.event[0].postback.data)都有的情況
可以看到使用者輸入test的event、按下按鈕送出click的event,跟postback後的event
疑問就在,既然都有postaback了卻取不到值...

alex15964 iT邦新手 5 級 ‧ 2019-03-11 13:38:43 檢舉

根據log來看
我的想法是
是不是因為使用者輸入跟postback被分成兩個event了
所以那樣宣告才取不到值
如果是的話那要怎麼取得另一個event

判斷 msg.events[0].source.type

類似:
switch(type)
{
case message:
//test 出現選單
case postback:
//取data post(pdata)
}

alex15964 iT邦新手 5 級 ‧ 2019-03-12 09:26:01 檢舉

msg.events[0].source.type應該是msg.events[0].type(不然都是user


https://pastebin.com/NFTnPaq6
post(pdata)連被呼叫都沒有

加了post('1')測試doPost被呼叫幾次
只有出現兩次應表示postback不會呼叫doPost
所以switch(type)不會被判斷第二次(msg.events[0].type只有第一次的message)


另因選擇時間的選單在使用者選後
也是使用postback回傳
所以也一樣取不到值

alex15964 iT邦新手 5 級 ‧ 2019-03-13 09:59:16 檢舉

https://pastebin.com/uMYW2zjd
問題解決了,一開始先用message判斷再執行後續(因postback沒有message.text導致錯誤

我要發表回答

立即登入回答