1

根据文档,我应该使用一个函数在响应post_poll中添加缺失的字段。id

如何添加 post_poll 功能?

这是我的错误:

结果必须是一个数组,得到:对象,({"totalevents":83,"events":[{"eventid":10266033,"c) - 得到一个缺少“id”属性的结果 (83)

尝试遵循,但我不清楚,我对 Zapier-CLI 很陌生

更新 - 添加代码

这是返回数据的函数:

const listEvents = (z, bundle) => {

    console.log('listing events.. ');
    let client_id = bundle.inputData.client_id;
    const requestOpts = {
        url: `https://wccqa.on24.com/wcc/api/v2/client/${client_id}/event`  
    };

    return z.request(requestOpts)
            .then((response) => {
                return z.JSON.parse(response.content);
            });
};

示例响应如下,其中我id手动添加了参数以避免在以下情况下出现错误zapier test|push

{
    "id": 9964513,
    "eventid": 9964513,
    "archivestart": "2017-09-21T10:30:00-07:00",
    "archiveend": "2018-09-21T10:30:00-07:00",
    "description": "Zapier Event Test",
    "iseliteexpired": "N",
    "displaytimezonecd": "America/Bogota",
    "eventtype": "Live Webcam ",
    "regrequired": true,
    "clientid": 22921,
    "liveend": "2017-09-21T10:00:00-07:00",
    "createtimestamp": "2017-09-21T09:47:44-07:00",
    "audienceurl": "https://localhost.on24.com/wcc/r/9964513/C49755A02229BD48E6010848D7C81EF8",
    "lastmodified": "2017-09-21T09:47:44-07:00",
    "livestart": "2017-09-21T08:45:00-07:00",
    "goodafter": "2017-09-21T09:00:00-07:00",
    "regnotificationrequired": true,
    "isactive": true,
    "localelanguagecd": "en"
}

来自端点的ACTUAL响应在 Web Builder 应用程序而不是 CLI 中创建的应用程序中使用,并且工作正常:

{
    "events": [
        {
            "eventid": 9964513,
            "archivestart": "2017-09-21T10:30:00-07:00",
            "archiveend": "2018-09-21T10:30:00-07:00",
            "description": "Zapier Event Test",
            "iseliteexpired": "N",
            "displaytimezonecd": "America/Bogota",
            "eventtype": "Live Webcam ",
            "regrequired": true,
            "clientid": 22921,
            "liveend": "2017-09-21T10:00:00-07:00",
            "createtimestamp": "2017-09-21T09:47:44-07:00",
            "audienceurl": "https://localhost.on24.com/wcc/r/9964513/C49755A02229BD48E6010848D7C81EF8",
            "lastmodified": "2017-09-21T09:47:44-07:00",
            "livestart": "2017-09-21T08:45:00-07:00",
            "goodafter": "2017-09-21T09:00:00-07:00",
            "regnotificationrequired": true,
            "isactive": true,
            "localelanguagecd": "en"
        }
    ],
    "totalevents": 1
}

我正在考虑以下内容,但是我该如何注册呢?

const postPoll = (event,z,bundle) => {

    if(event.key === 'events'){

        var results = z.JSON.parse(bundle.request.data).results;

        var events = results.events.map(function(event){
                              event.id = event.eventid;
                              return event;
                            });     

        bundle.request.data = events;
    }
};

module.exports = postPoll;
4

1 回答 1

3

很好,所以你快到了!CLI 应用程序没有pre_post_poll 方法。相反,您在响应进来后进行任何操作。

const listEvents = (z, bundle) => {
console.log('listing events.. ');
let client_id = bundle.inputData.client_id;
const requestOpts = {
    url: `https://wccqa.on24.com/wcc/api/v2/client/${client_id}/event`  
};

return z.request(requestOpts)
        .then((response) => {
            return z.JSON.parse(response.content);
        })
        .then(data => {
            const events = data.events; // array of events
            return events.map(function(e){ // returns array of objects with `id` defined
                e.id = e.event_id
                return e
            }) 
        })
};
于 2017-12-15T19:17:16.940 回答