iT邦幫忙

0

line bot 時間選擇器 postback疑問

小弟不才,不知道怎麼取用postback內容,datetimepicker的postback似乎會回傳2個值,一個是data一個是params,我的理解是data是一個你定義給這個timepicker的字串,params是timepicker的三個mode,分別是選日期(date).選時間(time).選日期+時間(datetime),當使用者選擇完時間後,按下傳送,data就會代表使用者選擇後的時間值,而真正內容的值會在params內,但......我怎麼取用這2個值?

我想在使用者選擇完時間後,利用replymessge把選擇後的內容貼出來,我該怎麼做呢...

                {
                  "type": "datetimepicker",
                  "label": "這是時間選擇器",
                  "data": "setuptimepicker",//(自己定義的)
                  "mode": "datetime",//(跟params有關)
                  "initial": "2020-03-12T16:32",
                  "max": "2021-02-27T23:59",
                  "min": "2020-03-01T00:00",

                },

不知道能不能利用這回復訊息方法,把內容貼出來:{

            var url = 'https://api.line.me/v2/bot/message/reply';
              UrlFetchApp.fetch(url, {
                'headers': {
                  'Content-Type': 'application/json; charset=UTF-8',
                  'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
                },
                'method': 'post',
                'payload': JSON.stringify({
                  'replyToken': replyToken,
                  'messages': [{
                    'type': 'text',
                    'text':replyMessage,
                  }],
                }),
              });

具體指令該怎麼下完全沒有頭緒...,又或者有什麼方法可以看到回傳值的內容,還請大大們明示,謝謝,環境是google app script

有使用 SDK 嗎?
C# 的 code 給你參考

---------------------------

//Webhook
protected override async Task OnPostbackAsync(PostbackEvent ev)
{
//回覆訊息
await _messagingClient.ReplyMessageAsync(ev.ReplyToken,
new List<ISendMessage>
{
new TextMessage($"收到的 data 是: {ev.Postback.Data}"),
new TextMessage($"收到的日期是: {ev.Postback.Params.Date}"),
new TextMessage($"收到的時間是: {ev.Postback.Params.Time}"),
new TextMessage($"收到的日期時間是: {ev.Postback.Params.DateTime}")
});
}

1 個回答

0
Han
iT邦新手 4 級 ‧ 2020-03-13 12:15:33

postback的data就是給你存資料用
像我是把json轉為字串 塞到data裡面

等使用者按下去之後 就可以把json反解 抓取裡面的資料囉

{
  "type": "postback",
  "label": "Action顯示標題",
  "data": JSON.stringify({your_object}),
  "displayText": '可以讓使用者按下時有回饋訊息'
}
gp6farm1 iT邦新手 5 級 ‧ 2020-03-13 12:30:10 檢舉

大大謝謝你的回答,我另外想知道,該怎麼看到使用者輸入完時間後,回傳的params的內容,是用json.stringify({params})嗎?

Han iT邦新手 4 級 ‧ 2020-03-13 12:42:46 檢舉

收到的data使用 JSON.parse(json字串)進行反解
可以得到物件哦

我要發表回答

立即登入回答