如何使用其 API 获取所有 Zendesk 帮助文章

问题描述 投票:0回答:1

我们的网站上有搜索功能。我需要为 Zendesk 的所有帮助台文章建立索引,以便它们出现在搜索结果中。我目前有以下代码,但它只会返回前 30 个结果。

const https = require('https');
const { Textify } = require('../common/Textify');
const fs = require('fs');
const path = require('path');

function GetZDeskArticles() {
  return new Promise((res, rej) => {
    const request = https.request(
      'https://example.zendesk.com/api/v2/help_center/en-us/articles.json',
      (response) => {
        let data = '';
        response.on('data', (chunck) => {
          data = data + chunck.toString();
        });
        response.on('end', () => {
          const body = JSON.parse(data);
          res(body.articles);
        });
      }
    );   

    request.on('error', (error) => {
      rej(error);
    });

    request.end();
  });
}

async function StoreZDeskArticles() {
  const zdeskArticles = await GetZDeskArticles();
  let arts = [];
  zdeskArticles.forEach((art) => {
    if (art.draft) return;
    art.body = Textify(art.body);
    arts.push(art);
  });

  let storagePath = path.resolve(
    __dirname,
    '../',
    '_data',
    'ZenDeskArticles.json'
  );
  fs.writeFileSync(storagePath, JSON.stringify(arts), 'utf8');
}

StoreZDeskArticles();

如果我将

?page%5Bsize%5D=100
添加到请求网址,我显然会得到前 100 个结果。但我总共有 164 篇文章需要索引。我已阅读Zendesk 分页文档,但不确定如何将他们的解决方案应用于我的情况。

zendesk zendesk-api
1个回答
0
投票

对于分页:在返回的 JSON 中,有一个“links”部分,其中有一个条目“next”,即您需要执行下一个请求的文章下一页的 URL。

对于偏移量:返回的 JSON 中有一个条目“next_page”,它为您提供下一页。不过,建议使用分页而不是偏移,因为它具有更好的性能。

对于这两种解决方案:您迭代请求,使用“next”或“next_page”条目进行后续请求,直到相应的条目为空,然后您就已经看到了所有文章。

https://developer.zendesk.com/api-reference/introduction/pagination/

© www.soinside.com 2019 - 2024. All rights reserved.