Zapier:如何使用Zapier从ScheduleOnce向我的Node.js Web应用程序发送数据

时间:2017-11-13 21:25:13

标签: zapier

这是我的工作流程:

  1. 点击我的ScheduleOnce链接并安排会议
  2. 完成ScheduleOnce预订表后,该人员点击完成按钮
  3. 单击此完成按钮后,此人将被重定向到显示应用程序页面的Node JS Web应用程序。此应用程序页面需要使用ScheduleOnce页面中的信息自动填充。
  4. 在第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);
    

1 个答案:

答案 0 :(得分:1)

David来自Zapier平台团队。这是一个很酷的用例,可能是可能的。你需要记住的是,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. 填充页面。我不确定目的地的性质是什么(最好的情况是它是你控制的服务器),但有些东西需要向store.zapier.com发出http请求以检索存储的数据并在视图。如果
  3. ,这很容易
  4. 识别用户。您需要一些方法来识别被重定向到StoreClient中存储的数据的用户。如果两个用户快速连续填写表单,则第二个用户将覆盖第一个表单。此外,它似乎是半敏感数据,您不仅希望网站上的任何人都可以使用这些数据。为此,您可能希望将所有数据存储为由用户的电子邮件(或其他独特的)键入的JSON字符串。这样,当我(用户)完成表单时,我被重定向到yoursite.com/landing?email=david@zapier.com,后端知道要查找(存储中的david@zapier.com键)并且可以使用正确的信息呈现视图。
  5. 为此,我将代码调整为以下内容:

    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);
    

    希望指出你正确的方向。你正在使用一个相当复杂的工作流程,但我打赌你可以做到这一点!