Zapier - Недействительный ответ API

Я интегрирую CRM с объявлениями для потенциальных клиентов Facebook с помощью Zapier, и я могу создать лид в Facebook и создать его в CRM без каких-либо проблем.

После успешного поста (т.е. успешного создания лида) мне любопытно, что я должен вернуть, я бы подумал

          return Ok();

было бы достаточно. Вместо этого я получаю сообщение об ошибке:

- Получен не объектный результат, ожидался объект от create (). Что произошло (вы видите это, потому что являетесь администратором): Выполнение create.ZapLead.operation.perform с помощью пакета Недопустимый ответ API: - Получено не -object результат, ожидался объект от create ()

Что мне возвращать?

Код, который создает сообщение:

perform: (z, bundle) => {
  const promise = z.request({
    url: 'https://{{bundle.authData.subdomain}}.ngrok.io/api/zapier/create/lead/' + bundle.inputData.lead_type + '/' + bundle.inputData.core_customerTypeId,
    method: 'POST',
    body: JSON.stringify({
      fields: bundle.inputData
    }),
    headers: {
      'content-type': 'application/json'
    }
  });

  // return promise.then((response) => JSON.parse(response.content));
  return promise.then((response) => {   
    if (response.status != 200) {
      throw new Error(`Unexpected status code ${response.status}`);
    }
});

Любые идеи?

Спасибо,


person thegunner    schedule 20.08.2018    source источник


Ответы (2)


Вот Дэвид из команды Zapier Platform.

Хотя ваш ответ технически верен, я хотел бы добавить контекст об ошибке и о том, почему ваше решение работает.

Zapier ожидает, что объект javascript (в основном все действительное и заключенное в {}) выйдет из функции создания. Вот почему JSON.parse(response.content) работает, он возвращает все, что сказал сервер. Ваш код выдает ошибку, если это не 200, но ничего не возвращает, если оно равно 200. Поскольку undefined не относится к типу Object, выдается ошибка, которую вы видите.

Хотя {"Success":"Success","Attempt":null,"Id":null,"RequestId":null} является полностью допустимым ответом (это объект!), Для конечного пользователя более полезно возвращать данные о новом созданном лиде. Таким образом, его можно будет использовать ниже по течению для других действий.

Дайте мне знать, если у вас возникнут другие вопросы!


В качестве примечания: мы очень открыты к тому, как сделать это сообщение об ошибке более понятным; разработчики борются со многими.

person xavdid    schedule 20.08.2018
comment
Спасибо за ответ @xavdid. Да, после этого ответа я настроил его так, чтобы он возвращал несколько значений идентификаторов, которые мы используем для других шагов рабочего процесса Zapier. P.S. Zapier действительно полезен !! - person thegunner; 20.11.2018

Думаю, я нашел это. Похоже, мне нужно вернуть это в случае успеха:

{"Success": "Success", "Attempt": null, "Id": null, "RequestId": null}

person thegunner    schedule 20.08.2018