你的最後一行 是回傳你上面定義的 "data":"data"
訊息的時間是在 msg.events[0].timestamp
我是要取得"data":"data"沒錯,但最後宣告出來的那值,我試著把他寫進google sheet或push message都是空的(以上兩個功能已測試過正常
console.log(msg.event[0].postback.data) 也是空的?
稍微修改了一下程式碼: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了卻取不到值...
根據log來看
我的想法是
是不是因為使用者輸入跟postback被分成兩個event了
所以那樣宣告才取不到值
如果是的話那要怎麼取得另一個event
判斷 msg.events[0].source.type
類似:
switch(type)
{
case message:
//test 出現選單
case postback:
//取data post(pdata)
}
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回傳
所以也一樣取不到值
https://pastebin.com/uMYW2zjd
問題解決了,一開始先用message判斷再執行後續(因postback沒有message.text導致錯誤