---
title: "在多个网关之间故障转移和分配来电"
description: "在 SIP 中继上使用寻线组，在第一个网关故障时将来电转到备用网关，或按权重在网关之间分配来电。"
canonical: "https://bird.com/zh-sg/wendang/guides/voice/hunt-groups"
---

# 在多个网关之间故障转移和分配来电

SIP 中继的路由决定如何处理每个来电：在一组网关中寻线、拒绝来电，或将来电转接到已验证的号码。寻线组是一份网关列表，Bird 会依次尝试其中的网关，直到有一个应答。组的顺序、优先级、权重和振铃时长决定哪个网关先振铃，以及它未应答时如何处理。本页介绍如何为故障转移和负载分担进行设置。

## 开始之前

- 一个已开启呼入并至少有一个网关的 SIP 中继。[设置 SIP 中继](/docs/guides/voice/sip-trunk-setup) 介绍了这两项。如果中继的路由从未保存过，在您添加第一个网关时，控制台会将默认路由指向 **All gateways (automatic)**，即包含该中继所有网关的组。
- 要组合的网关，需已在中继的 **Inbound routing** > **Gateways** 标签页中添加。

## 寻线组如何寻线

每个来电都会启动一次寻线。Bird 为该来电对组内网关排序，先呼叫第一个网关，失败时转到下一个：

- 网关按其 **Ring time** 振铃，范围为 1 到 120 秒（默认 30 秒）。如果在此时间内无人应答，Bird 会转到下一个网关。
- 完全没有响应的网关会在短暂间隔后被跳过，因此宕机的网关不会让来电者等完整个振铃时长。
- 如果网关以 SIP 失败代码拒绝来电，寻线会转到下一个网关，除非该代码列在组的 **Stop the hunt on** 中。
- 当某个网关接听，或组内所有网关都已尝试过时，寻线结束。

Bird 对每通呼叫单独排序，不在呼叫之间保留轮转状态，因此没有轮询。均匀分配来自多通呼叫上的随机排序或加权排序。

| 顺序           | 如何为每通呼叫排列网关                                                                                     | 适用场景                     |
| -------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------- |
| **Sequential** | 按列表顺序，从上到下                                                                                       | 固定的主网关和备用网关       |
| **Random**     | 每次重新生成随机顺序                                                                                       | 均匀分配呼叫                 |
| **Weighted**   | 先按 **Priority** 从低到高排列。同一优先级内采用随机顺序，每个网关排在首位的概率等于其权重在总权重中的占比 | 同时实现故障转移和按权重分配 |

## 使用自动组

中继的每个网关都属于 **All gateways (automatic)**，除非中继已保存的路由用自己的组替代了它（见本节末尾）。您添加或移除的网关会随之加入或离开该组。该组使用 **Weighted** 顺序、相同的权重和 30 秒振铃时长，并按您在 **Gateways** 标签页中设置的 **Priority** 顺序尝试各网关。在组本身中，其名称、**Order**、振铃时长和成员都无法编辑。

如需通过该组实现故障转移，请在 **Gateways** 标签页中为主网关设置比备用网关更低的 **Priority**。**Priority** 相同的网关会平均分担呼叫。如需其他振铃时长、权重或 **Stop the hunt on** 代码，请添加一个包含相同网关的自定义组，具体见后续各节。

如果控制台在您添加第一个网关时创建了名为 **All gateways** 的组，那么它是您自己的组：它只包含保存时的网关。如果 **Groups** 标签页中没有 **All gateways (automatic)**，说明中继已保存的路由用一个自己的组替代了它，该组通常名为 **All gateways**。删除这个组后，自动组会恢复到原位置：原先转到该组的呼叫随后会按 **Priority** 顺序、以 30 秒振铃时长呼叫所有网关。如果该组包含您需要的网关、振铃时长或 **Stop the hunt on** 代码，请保留它。

## 设置故障转移

1. 打开 **Voice** > [**SIP Trunks**](https://bird.com/dashboard/w/voice/sip-trunks)，打开该中继，然后进入 **Inbound routing** > **Groups**。
2. 打开一个自定义组，或选择 **Add group** 并为其命名。**All gateways (automatic)** 无法编辑。
3. 使用 **Add gateway to group** 添加主网关和备用网关。
4. 将 **Order** 设为 **Sequential**，并使用 **Move up** 和 **Move down** 让主网关保持在最上方。也可以将 **Order** 设为 **Weighted**，并将主网关的 **Priority** 设为 1、备用网关的 **Priority** 设为 2。
5. 设置每个网关的 **Ring time**。主网关的振铃时间越短，未接听的呼叫就越早转到备用网关。
6. 在 **Rules** 标签页中，将 **Default route** 的 **Then** 设为 **Route to group** 并选择该组，或将某条规则指向该组。没有任何路由使用的组不会接收呼叫。
7. 选择 **Review and save**，然后确认。

## 在网关之间分配呼叫

1. 打开该中继的 **Inbound routing** > **Groups**。打开一个自定义组，或选择 **Add group** 并为其命名，然后使用 **Add gateway to group** 添加网关。
2. 将 **Order** 设为 **Weighted**，为各网关设置相同的 **Priority**，并将每个网关的 **Weight** 设为 1 到 100 之间的值。权重为 70 和 30 时，两个网关分别接收约 70% 和 30% 的呼叫。如需平均分配，请使用相同的权重，或将 **Order** 设为 **Random**。
3. 如果还要保留备用网关，请将分担呼叫的网关设为 **Priority** 1，将备用网关设为 **Priority** 2。只有当所有优先级为 1 的网关都失败后，备用网关才会振铃。
4. 在 **Rules** 标签页中，将 **Default route** 的 **Then** 设为 **Route to group** 并选择该组，或将某条规则指向该组。
5. 选择 **Review and save**，然后确认。

## 遇到忙音时停止寻线

默认情况下，Bird 在每次失败后都会尝试下一个网关。如果某种失败意味着换一个网关也无济于事，请将其代码添加到组的 **Stop the hunt on** 中。例如，添加 `486`（Busy Here），这样正在通话的人就不会通过第二个网关再次被呼叫。可以输入 400 到 699 之间的任意代码。

## 将不同的呼叫路由到不同的组

一个中继可以有多个组。**Default route** 将未匹配任何规则的呼叫发送到一个组，**Rules** 标签页中的规则可以将其他呼叫发送到其他组。[将呼叫送达 SIP 中继](/docs/guides/voice/receiving-calls#deliver-calls-to-a-sip-trunk)介绍了规则和默认路由。

## 故障排除

| 现象                                         | 检查内容                                                                                                                                                                |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 备用网关从不振铃                             | 备用网关位于默认路由（或匹配的规则）所使用的组中。使用 **Weighted** 时，其 **Priority** 数值高于主网关。**Stop the hunt on** 中的某个代码在轮到备用网关之前就结束了寻线 |
| 使用 **Weighted** 时所有呼叫都由一个网关接听 | 优先级不同的网关不会分担呼叫。请为它们设置相同的 **Priority**                                                                                                           |
| 呼叫在转到备用网关前振铃时间过长             | 调低主网关的 **Ring time**                                                                                                                                              |
| 某个网关从不振铃                             | 该网关不在任何规则或默认路由所使用的组中。保存时，控制台会提示 **Calls never reach some gateways**                                                                      |

## 后续步骤

| 页面                                                | 涵盖内容                                 |
| --------------------------------------------------- | ---------------------------------------- |
| [设置 SIP 中继](/docs/guides/voice/sip-trunk-setup) | 按顺序完成整个中继设置，从创建到测试呼叫 |
| [接听呼叫](/docs/guides/voice/receiving-calls)      | 号码路由、规则、默认路由和被拒绝的呼叫   |
| [语音故障排查](/docs/guides/voice/troubleshooting)  | 根据症状诊断通话问题                     |

## Related resources

- [What is a voice API?](/explained/voice/what-is-a-voice-api) (answer)
- [Voice](/voice-api) (product)
- [Voice overview](/docs/guides/voice/overview) (docs)

[Get an implementation brief](/learn/workspace?topic=voice)
