# 从其他App启动自动化

> 用Webhook Received触发器获取私人链接。Zapier、Make或你的网站发送资料到这个链接时，自动化就会运行。
>
> Source: https://docs.bcl.my/zh/automation-webhook-received/

大部分自动化都由BCL里的事件启动，例如一笔付款。**Webhook Received**触发器则从BCL外部启动自动化。BCL会给自动化一个私人链接。当另一个App，例如Zapier、Make或你自己的网站，发送资料到这个链接时，自动化就会用这些资料运行。

## 从模板开始

**Automations** → **Templates**下有两个模板使用这个触发器：

- **Email Me From Another App**每次收到资料时，都会用电邮把详情发给你。
- **Add Contacts From Other Apps**把每个人加入你的Bukku联系人（请看[在Bukku记录你的销售](/zh/bukku/)）。

*(Screenshot: Email Me From Another App模板卡片，已标示Use template)*

## 设置触发器

在你自己的自动化里使用这个触发器：

1. 创建一个自动化（请看[创建自动化](/zh/create-automation/)），在**Webhooks**下选择**Webhook Received**作为触发器。
2. 双击触发器打开**Webhook Received Trigger Settings**，复制**Webhook link**。
3. 在另一个App里把链接粘贴为发送地址。发送一个POST request，带JSON body或表单栏位。
4. 从另一个App发送一个测试请求。它发送的栏位会显示在**Variables**的**From the webhook**下，让后面的步骤可以使用。自动化关闭时，BCL会把请求保存为示例，但不会运行步骤。
5. 添加你的步骤，例如**Send Email**步骤，并在里面使用webhook变量。
6. 点击**Update Automation**，开启自动化。

BCL每分钟为每个自动化接受最多60个请求，每个请求最多64 KB。

## 只接受有signature的请求

任何有链接的人都可以启动这个自动化。要只接受来自你自己App的请求：

1. 在**Webhook Received Trigger Settings**开启**Require a signature**。
2. 复制**Signing secret**。
3. 在另一个App里，为每个请求加上`X-BCL-Signature` header。它的值是`sha256=`，后面接用signing secret对原始request body计算出的HMAC-SHA256。
4. 点击**Save**。

之后BCL会拒绝每个没有有效signature的请求。

> **Caution**
> 如果链接或secret泄露了，在触发器设置里生成新链接。现有链接会马上失效，所以要在每个发送资料给它的App里更新链接。

## 常见问题

### 其他App可以发送什么到webhook链接？

一个POST request，带JSON body或表单栏位，最多64 KB。每个栏位都会变成一个变量，嵌套的JSON栏位会变成像customer_email这样的名称。

### 任何人都可以用这个链接启动我的自动化吗？

可以，只要有链接就行。如果只想接受你自己的App，开启Require a signature，并用Signing secret为每个请求加上signature。

### 我觉得我的webhook链接泄露了。怎么办？

在触发器设置里生成新链接。旧链接会马上失效，所以要把新链接粘贴到每个发送资料给它的App。
