当用户在 Discourse 注册时,通过 Zapier 创建 Salesforce 线索

当用户在您的论坛注册时,可以通过配置用户事件 Webhook 将其发布到 Zapier,然后使用 Zapier 的 Salesforce 集成来创建 Salesforce 销售线索。

创建新的 Zap

登录 Zapier 并点击“创建 Zap!”按钮。您将被带到一个包含创建 Zap 表单的页面:

为您的 Zap 命名,然后点击表单“触发器”部分的“选择应用”。在页面的“选择触发器应用”部分,选择 Webhooks:

在“选择 Webhooks by Zapier 触发器”表单上,选择“显示较少见的选项”,然后选择“捕获原始钩子(Catch Raw Hook)”:

点击“保存并继续”。

然后将 Webhook URL 复制到剪贴板。

创建 Discourse 用户事件 Webhook

要创建 Discourse Webhook,请在您的 Discourse 论坛上,进入“管理 / API / Webhooks”,点击添加 Webhook按钮。在出现的表单中,将 Zapier Webhook URL 粘贴到“有效载荷 URL"字段中。在“哪些事件应触发此 Webhook?”下,选择选择单个事件。然后在用户事件组下,勾选用户已创建复选框。勾选“活动”复选框以启用 Webhook,然后点击“创建”按钮。

:bulb: 提示:由于您仅选择了 user_created 事件,Discourse 仅会在有新用户注册时触发此 Webhook,而不会针对其他用户变更触发。这意味着下面描述的 Zapier 过滤步骤是可选的,但仍建议作为安全措施。

在 Zapier 上测试 Webhook

现在返回 Zapier 并点击“好的,我已完成此操作”按钮:

您现在需要从 Discourse 向 Zapier 发送示例请求。为了生成测试后续步骤所需的数据,您需要在论坛上创建一个新用户。使用一个临时 Gmail 地址是个不错的选择。作为新用户注册您的论坛,然后返回 Zapier 的示例步骤查看数据。

您可以展开示例以查看从 Discourse 发送的数据。点击“继续”进入下一步。

捕获 Discourse 用户创建事件

如果在配置 Discourse 中的 Webhook 时仅选择了 user_created 事件,则此过滤步骤是可选的。不过,它仍然是一个很好的安全措施。点击“添加步骤”,然后点击“过滤器”:

要过滤掉除“用户创建”事件之外的所有事件,请将过滤器配置为:仅当 Headers Http X Discourse Event 完全匹配 user_created 时才继续。

点击“测试并继续”按钮。如果您通过在论坛上创建新用户来触发了示例事件,您应该会看到“成功”通知。如果您看到的是“您的 Zap 不会继续”的通知,请返回您的示例数据,确保其 Headers Http X Discourse Event 设置为 user_created

点击“继续”按钮进入下一步。

使用运行 JavaScript 步骤解析原始有效载荷

从您的 Zap 菜单中点击“添加步骤”。然后点击“操作/搜索”,并在“操作”菜单中选择“代码”。在“代码”表单上,选择“运行-JavaScript"。

Zapier 将创建一个 inputData 对象,您可以向其添加命名属性。在左列为您的属性添加名称。在右列,从下拉菜单中选择“捕获原始钩子(Catch Raw Hook)”,然后选择“原始正文(Raw Body)”:

向下滚动页面以查看代码输入框:

然后,您需要用一些解析原始正文并返回包含最终操作所需值的对象的代码来替换示例代码。以下是我正在使用的代码。Salesforce 需要姓氏,如果不存在姓氏,将返回错误。在我的 Discourse 站点上,我添加了一个必需的自定义用户字段“公司”,并在注册时要求填写。我想将此数据传递给 Salesforce。通过查看从 Discourse 发送的有效载荷,我知道该字段位于 \"user_fields\":[\"10\"]。您需要配置代码以返回您希望传递给 Salesforce 的原始数据字段。

const parsed = JSON.parse(inputData.raw);
if (parsed.user) {
  const user = parsed.user,
        name = user.name,
        userFields = user.user_fields;
  let firstName,
      lastName,
      company;
  
  if (name) {
    const splitName = name.split(' ');
    firstName = splitName[0];
    lastName = splitName[1]
    }
  if (userFields) {
    company = userFields['10'];
  }
  if (lastName) {
    return {id: user.id,
            username: user.username,
            lastName: lastName,
            firstName: firstName,
            email: user.email,
            company: company,
            error: null
           };
  } else {
    return {error: "Missing last name"}
  }
} else {
  return {error: "A user object was not returned"};
}

添加代码后,点击“继续”按钮,然后点击“测试此步骤”按钮。结果应返回新用户的数据:

过滤失败的请求

如果您的 JavaScript 步骤返回了错误(例如,“缺少姓氏”),您可以添加另一个过滤步骤,以避免向 Salesforce 发送失败的请求。从 Zaps 菜单中点击“添加步骤”,然后点击“过滤器”。将此过滤器配置为:仅在没有错误时才继续:

在 Zapier 上创建销售线索

点击“添加步骤”,然后点击“操作/搜索”。在操作菜单中搜索并选择 Salesforce。在 Salesforce 操作菜单中选择“创建销售线索”。点击“保存并继续”。然后点击“连接账户”。系统会要求您允许 Zapier 访问您的 Salesforce 账户。点击“测试”按钮以确保连接正常:

在“设置 Salesforce 销售线索”页面上,您可以将“运行-JavaScript"步骤中的字段添加到其对应的 Salesforce 字段中:

点击“继续”,然后点击“向 Salesforce 发送测试”。您应该能看到一条新的 Salesforce 销售线索。如果一切正常,请点击“完成”,然后启用 Zap。

11 个赞