iT邦幫忙

0

請問如何取得 加入好友人數…等line bot 帳號中的 insight數據

  • 分享至 

  • xImage

我是程式新手,目前利用Google App Script寫了一支line bot來實現關鍵字回覆的功能,同時希望透過每天紀錄加入好友人數、發送訊息數量…等 messaging API insight的數據於Googlesheet 中做長時間的追蹤以利行銷統計目的,僅管send reply message 與 send push message已實作成功,但目前仍未成功取得insight資訊,以下為我部分的程式碼,請問我如何能解決呢? 感謝大神協助!

================================================================
//嘗試透過抓關鍵字"1"來回覆20220308以前加入好友的人數
if (messageText == "1") {
replyMsg(replyToken, [{
"type": "text",
"text": "The insight is" + insight(channelToken, 20220308).followers
}] , channelToken);
}

// 回覆訊息
function replyMsg(replyToken, userMsg, channelToken) {
var url = 'https://api.line.me/v2/bot/message/reply';
var opt = {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + channelToken,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': replyToken,
'messages': userMsg
})
};
UrlFetchApp.fetch(url, opt);
}

//取得官方帳號insight資訊
function insight (channelToken, date) {
var url = 'https://api.line.me/v2/bot/insight/followers?date={' + date + '}';
var opt = {
'headers': {
//'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + channelToken,
}
};
UrlFetchApp.fetch(url, opt);
}

我估計是insight function 中的語法有誤使得bot無法正確取得Line message api之結果,但苦無方向進行debug… 謝謝!

天黑 iT邦研究生 5 級 ‧ 2022-03-09 09:51:20 檢舉
也許你可以考慮一下,先用postman把api測通,再來寫程式會比較好開發
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
Han
iT邦研究生 1 級 ‧ 2022-03-09 09:42:36
最佳解答

首先請將程式碼改成這種形式,會提高大家幫你解答的意願

//嘗試透過抓關鍵字"1"來回覆20220308以前加入好友的人數
if (messageText == "1") {
  replyMsg(
    replyToken,
    [
      {
        type: "text",
        text: "The insight is" + insight(channelToken, 20220308).followers,
      },
    ],
    channelToken
  );
}

// 回覆訊息
function replyMsg(replyToken, userMsg, channelToken) {
  var url = "https://api.line.me/v2/bot/message/reply";
  var opt = {
    headers: {
      "Content-Type": "application/json; charset=UTF-8",
      Authorization: "Bearer " + channelToken,
    },
    method: "post",
    payload: JSON.stringify({
      replyToken: replyToken,
      messages: userMsg,
    }),
  };
  UrlFetchApp.fetch(url, opt);
}

//取得官方帳號insight資訊
function insight(channelToken, date) {
  var url = "https://api.line.me/v2/bot/insight/followers?date={" + date + "}";
  var opt = {
    headers: {
      //'Content-Type': 'application/json; charset=UTF-8',
      Authorization: "Bearer " + channelToken,
    },
  };
  UrlFetchApp.fetch(url, opt);
}

你的問題在於,沒有將打完 api 後的結果回傳
但我自己很少在用 Google App Script 所以不確定流程
應該是把 fetch 完的結果放進變數並且回傳即可

var result = UrlFetchApp.fetch(url, opt);
return result;
Yori iT邦新手 5 級 ‧ 2022-03-10 14:32:01 檢舉

這形式看起來還是比較舒服

我要發表回答

立即登入回答