Zapier: как отправлять данные в мое веб-приложение Node.js из ScheduleOnce с помощью Zapier

Вот мой рабочий процесс:

  1. Человек нажимает на мою ссылку ScheduleOnce и назначает встречу
  2. После заполнения формы бронирования ScheduleOnce человек нажимает кнопку «Готово».
  3. При нажатии этой кнопки «Готово» пользователь перенаправляется в веб-приложение Node JS, которое отображает страницу приложения. Эта страница приложения должна быть автоматически заполнена информацией со страницы ScheduleOnce.

Между шагами 2 и 3 появляется Zapier. Я пытаюсь использовать Zapier для сбора данных из бронирования ScheduleOnce, что и есть. Затем я пытаюсь использовать Zap для отправки этих данных на страницу, на которую перенаправлен человек, для автоматического заполнения некоторых полей.

Я думал, что использование функции Code Javascript будет работать, но это не так. Тогда я подумал об использовании опции StoreClient или API. Я просто не понимаю, как заставить поток работать для доступа к данным и автоматического заполнения полей на следующей перенаправленной странице.

Некоторая помощь будет принята с благодарностью.

Вот код, который у меня есть для опции Javascript:

    var store = StoreClient("Secret");
    store
        .setMany({firstName: inputData.firstName, lastName: inputData.lastName, email: inputData.email, mobilePhone: inputData.mobilePhone, otherPhone: inputData.otherPhone, businessWebsite: inputData.businessWebsite})
        .then(function() {
            return store.getMany('firstName', 'lastName', 'email', 'mobilePhone', 'otherPhone', 'businessWebsite');
        })
        .then(function() {
            callback();
        })
        .catch(callback);

person ParkerWilliams    schedule 13.11.2017    source источник


Ответы (1)


Вот Дэвид из команды Zapier Platform. Это отличный вариант использования, который, вероятно, возможен. Вам нужно помнить, что Zapier работает полностью отдельно от пользователя, поэтому взаимодействие должно быть косвенным. Zapier не может перенаправить вашего пользователя куда-либо, он может просто сохранять данные в ответ на нажатие кнопки.

В вашем случае вы можете пропустить все после setMany, поскольку вы не пытаетесь использовать значения в zap; вам просто нужно сохранить их (и убедиться, что действие выполнено без ошибок).

var store = StoreClient("Secret");
    store
        .setMany({firstName: inputData.firstName, lastName: inputData.lastName, email: inputData.email, mobilePhone: inputData.mobilePhone, otherPhone: inputData.otherPhone, businessWebsite: inputData.businessWebsite})
        .catch(callback);

Вам нужно будет решить пару задач:

  1. Скорость. пользователь перейдет на вашу целевую страницу до того, как zap завершится (так как он должен сделать пару HTTP-циклов и выполнить код). Вы захотите воспроизвести им 3-секундный загружаемый gif или поместить ожидающее сообщение и позволить им обновить место назначения.
  2. Заполнение страницы. Я не уверен, какова природа места назначения (в лучшем случае это сервер, которым вы управляете), но что-то нужно будет сделать http-запрос к store.zapier.com, чтобы получить сохраненные данные и отобразить их в представлении. Это легко, если
  3. Идентификация пользователя. Вам понадобится какой-то способ идентифицировать пользователя, который перенаправляется на данные, которые вы храните в StoreClient. Если два пользователя заполнили форму в быстрой последовательности, второй в настоящее время перезапишет первого. К тому же, похоже, что это полунезависимые данные, которые вы не хотите просто предоставлять кому-либо на своем сайте. С этой целью вы, вероятно, захотите сохранить все данные в виде строки JSON с ключом электронной почты пользователя (или чем-то еще уникальным). Таким образом, когда я (пользователь) заполняю форму, меня перенаправляют на yoursite.com/[email protected], серверная часть знает, что нужно искать (ключ [email protected] в магазине) и может отображать представление с правильной информацией.

Для этого я бы настроил код следующим образом:

var store = StoreClient("Secret");
    store
        .set(inputData.email, JSON.stringify({firstName: inputData.firstName, lastName: inputData.lastName, email: inputData.email, mobilePhone: inputData.mobilePhone, otherPhone: inputData.otherPhone, businessWebsite: inputData.businessWebsite}))
        .catch(callback);

Надеюсь, это укажет вам правильное направление. Вы работаете с довольно сложным рабочим процессом, но я уверен, что вы справитесь!

person xavdid    schedule 13.11.2017
comment
Отлично, спасибо! Итак, я обновил свой код Zapier следующим образом: var customerInfo = {"firstName": inputData.firstName, "lastName": inputData.lastName, "email": inputData.email, "mobilePhone": inputData.mobilePhone, "otherPhone": inputData.otherPhone, "businessWebsite": inputData.businessWebsite}; var store = StoreClient("T5@2qaifla"); store.set(inputData.email, JSON.stringify(customerInfo)).catch(callback);. Но я продолжаю получать ошибку в тестовом коде Zapier :-( Ошибка: вы должны вернуть один объект или массив объектов. Есть идеи? - person ParkerWilliams; 14.11.2017
comment
ой, извини. Тебе нужно куда-нибудь позвонить callback (я всегда забываю эту часть). поэтому после set, но перед catch добавьте .then(function(){ callback(null, {ok: true}) }), чтобы бегун знал, что все готово и все в порядке. - person xavdid; 14.11.2017
comment
также, если это ваш настоящий секрет, вы захотите пойти дальше и использовать что-то другое, что все еще остается секретом. ???? - person xavdid; 14.11.2017
comment
Ах! Красивый! Это сработало! И да, мой секрет на самом деле очень секретный. Итак, теперь, когда это работает, для доступа к данным, которые находятся в сохраненном объекте, я просто использую вызов API store.zapier.com/api/records?secret=12345&key=firstName&key=lastName&key=email&key=modilePhone&key=otherPhone&key=businessWebsite, который также появляется работать. Итак, для кнопки перенаправления мне нужно правильно установить ключ [email protected] в URL-адресе перенаправления? - person ParkerWilliams; 14.11.2017
comment
Да, форма должна будет отправить информацию вместе! - person xavdid; 14.11.2017
comment
Твердый. Теперь мне просто нужно выяснить, может ли ScheduleOnce отправлять введенные данные в эту форму в качестве параметра URL. Как только это выяснится, могу ли я найти в магазине соответствующий адрес электронной почты и получить доступ к этому объекту для получения данных? - person ParkerWilliams; 14.11.2017
comment
Ага! Я ничего не знаю о ScheduleOnce, но надеюсь, что эта часть работает. И да, тогда это store.get (электронная почта) для получения данных, если они существуют. Я бы разделил электронное письмо перед его сохранением, поскольку люди, как правило, имеют конечные пробелы, и вам нужно точное совпадение. - person xavdid; 15.11.2017