Как использовать метод post_poll в Zapier CLI

Согласно документам, я должен использовать функцию post_poll чтобы добавить отсутствующее поле id в ответ.

Как мне добавить функцию post_poll?

Вот моя ошибка:

Результаты должны быть массивом, got: object, ({"totalevents": 83, "events": [{"eventid": 10266033, "c) - Получен результат без свойства" id "(83)

Пытался выполнить this, но мне это непонятно, я очень новичок в 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"
}

Ответ ФАКТИЧЕСКИЙ от конечной точки, который используется в приложении, созданном в приложении Web Builder, вместо интерфейса командной строки, и отлично работает:

{
    "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;

person esteban rincon    schedule 15.12.2017    source источник
comment
просто чтобы уточнить, вы работаете над приложением CLI, верно? Вторая вещь, с которой вы связались, относится только к преобразованным приложениям для создания веб-сайтов.   -  person xavdid    schedule 15.12.2017
comment
Привет @xavdid - да, CLI   -  person esteban rincon    schedule 15.12.2017
comment
отличный! вы можете обновить свой вопрос кодом для вашей функции? Это поможет мне направить вас более конкретно. Суть в том, что ваша функция должна возвращать массив, а не отдельный объект.   -  person xavdid    schedule 15.12.2017
comment
@xavdid вопрос обновлен!   -  person esteban rincon    schedule 15.12.2017


Ответы (1)


Хорошо, так что вы почти у цели! В приложениях CLI нет методов pre_ и post_ опроса. Вместо этого вы вносите какие-либо манипуляции после того, как приходит ответ.

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
            }) 
        })
};
person xavdid    schedule 15.12.2017
comment
Отлично! Большое Вам спасибо. Извините за беспокойство, но как мне решить следующую ошибку при локальном запуске zapier test? Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves - person esteban rincon; 15.12.2017
comment
трудно сказать наверняка, не видя кода, но убедитесь, что вы вернули вызов AppTester или напишите более явные тесты и вызовите done(), как говорится в сообщении. См. документы. - person xavdid; 16.12.2017
comment
Я создам новый вопрос и передам ссылку jejej - person esteban rincon; 16.12.2017