繁体   English   中英

API请求循环Node.js和LiveChat API

[英]API Request Loop Node.js and LiveChat API

作为工作中的辅助项目,我目前正在实施LiveChat Report Web应用程序。 基本上,它将所有LiveChat数据下载到.csv文件中进行分析等。

我的整个工作进展顺利。 但是,我很难解决如何根据返回的结果页面请求循环。 例如,我希望每次聊天都提供某些信息。 LiveChat API在每个页面上仅返回25个聊天。 不幸的是,我无法一次调用每个页面,并且根据日期范围参数的不同,每次页面的数量都会有所不同。 如果可能的话,我想将所有这些页面都放在1个csv上。

我的要求如下:

function chatListReport() {
document.getElementById('chat_list_submit').addEventListener('click', function(event) {
var req = new XMLHttpRequest();
var params = {date_from:null,date_to:null, page:null}; 

params.date_from = document.getElementById('date_from').value;
params.date_to = document.getElementById('date_to').value;
params.page = document.getElementById('page').value;

req.onreadystatechange = function() {  //when response received
    if (req.readyState == 4 && req.status == 200) {
      var response = (req.responseText);
      var final = "data:text/csv;charset=utf-8," + encodeURI(response);
      var link = document.createElement('a');
      link.setAttribute('href', final);
      link.setAttribute('download', 'ChatListSurveyReport.csv');
      link.click();

     }}
req.open('POST', '/chat_list_report', true);   //submit update via POST to server
req.setRequestHeader('Content-Type', 'application/json');  //set request header
req.send(JSON.stringify(params));
event.preventDefault();
});

我的服务器端看起来像这样(使用NPM liveChatAPI):

app.post('/chat_list_report', function(req, res){
var params = req.body;
api.chats.list(params, function(data){
  var headers = 'Chat Date,Agent,PostChat Survey Rating,Comments';
  var result = (data.chats || [])
  .filter(function(chat) {return chat.type === "chat"})
  .map(function(chat) {
      var postSurvey = chat.postchat_survey || [];

      return [
          chat.ended.replace(",", ""),
          chat.agents[0].display_name,
          (postSurvey[0] || {}).value || "",
          (postSurvey[1] || {}).value || "",
      ].join(',');
  });

   result.unshift(headers);

   res.send(result.join('\n'));
    });
});

我能够返回页面数。 这包含在返回的JSON中。 简而言之,是否有一种方法可以将页码响应返回给请求,并在请求中循环X次,然后使用所有信息创建1个csv? 目前,每个请求我只能进行25次聊天。

谢谢! 任何帮助是极大的赞赏。

我们看到两种可能的解决方案:

1:A.前端向后端发送请求,然后后端返回作业的ID,前端必须将其存储在其一侧,例如,存储在localStorage中。

B.这时,后端作为一个完整的任务独自处理这些作业,并尝试完成它。

C.前端每隔几秒钟就向后端发送一个有关该任务的请求,并提供其ID。 当任务未完成时,后端会回复“进行中”,前端会继续查询任务,直到完成为止。

D.如果前端询问该任务,并且此时接收到该任务已完成的通知,则后端将返回消息“完成”,其中包含进一步的完成信息。

E. GUI应通知:o等待响应o响应成功,链接以下载文件。

- - - - -要么 - - - - -

2:A.前端向后端发送请求,后端注册任务,并在完成任务后发送包含已完成数据的电子邮件。

B.前端通知任务已添加到“队列”中,只有完成后才会发送包含任务结果的电子邮件。

C.需要在前端添加其他输入:电子邮件并处理某种电子邮件API,例如: https//postmarkapp.com/

让我知道它是如何工作的,

干杯,亚当

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM