如何在FusionPBX中配置跨服务器VoIP呼叫路由?
没问题,我帮你一步步梳理在FusionPBX(服务器Y)上实现这个呼叫路由的具体操作——核心就是先打通Y到Z的SIP通道,再设置精准的路由规则,同时匹配好编码和拨号格式:
第一步:创建Y到Z的SIP网关(Trunk)
这一步是让Y能和Z建立SIP通信:
- 登录FusionPBX的Web管理界面,进入 Accounts > Gateways(网关模块,用来配置和外部SIP服务器的连接)
- 点击「Add Gateway」新建网关,填写核心参数:
- Gateway Name:起个直观的名字,比如
Z_Server_Gateway - Profile:选择
external(外部网关模式,适合对接其他SIP服务器) - SIP Server:填入Z服务器的IP地址,比如
192.168.1.200;如果Z用了非默认SIP端口(比如5061),要加上端口号:192.168.1.200:5061 - From Domain:如果Z有域名就填域名,没有的话直接填Z的IP即可
- Username/Password:如果Z需要SIP注册认证,就填Z给的账号密码;不需要的话留空(这种情况要确保Z允许Y的IP发起呼叫)
- 切换到Advanced标签,找到Codecs配置项,把
G.729移到最顶部(确保Y优先使用这个编码和Z通信),可以保留其他编码但G.729必须排在首位
- Gateway Name:起个直观的名字,比如
- 保存配置后,点击右上角的「Apply Config」让FusionPBX加载新设置
第二步:配置呼叫路由规则(把X的呼叫转去Z)
这一步是告诉Y:当收到来自X的特定呼叫时,转发到Z服务器:
- 进入 Dialplan > Dialplans,选择当前使用的拨号计划(一般是
default) - 点击「Add Dialplan」新建路由规则:
- Extension:填写X拨打Y的号码/前缀匹配规则。比如X总是拨打Y的
6XXX段号码,就填6XXX;如果是所有打给Y的呼叫都要转,就填.*(不建议这么做,尽量精准匹配) - Destination:选择
Gateway,然后选中刚才创建的Z_Server_Gateway - Dial String:按照Z要求的拨号格式填写。比如Z要求呼叫前缀是
9,那如果X拨打的号码是1234,拨号串就设为9${destination_number};如果Z要求固定格式(比如100${destination_number}),就对应调整。这里的${destination_number}是FusionPBX的内置变量,会自动替换成X实际拨打的号码 - (可选但推荐)添加IP限制:切换到Conditions标签,点击「Add Condition」,设置
Field为source_ip,Type为equals,Value填入服务器X的IP地址。这样只有来自X的呼叫才会触发这条路由,避免无关呼叫被转发
- Extension:填写X拨打Y的号码/前缀匹配规则。比如X总是拨打Y的
- 保存配置后再次点击「Apply Config」生效
第三步:验证与排障
- 先检查网关状态:回到Accounts > Gateways,查看刚才创建的网关状态——如果是需要注册的模式,状态应该是「Registered」;如果是无注册的对等模式,状态显示「Active」就说明连通正常
- 发起测试呼叫:从服务器X拨打Y的对应号码,验证是否能成功转接到Z
- 如果呼叫失败,去 Logs > Freeswitch Log 查看错误日志,常见问题包括:
- 网络不通:检查Y和Z之间的防火墙是否开放了SIP端口(默认5060),以及双方IP是否能互相ping通
- 编码不匹配:确认Z确实支持G.729编码,且Y的网关和拨号计划里都正确启用了G.729并置顶
- 拨号格式错误:核对Z要求的前缀/拨号串格式,调整路由规则里的
Dial String参数
内容的提问来源于stack exchange,提问作者Homme Sauvage




