《 FreeSWITCH权威指南》——3.5 配置SIP网关拨打外部电话

简介:

本节书摘来自华章计算机《 FreeSWITCH权威指南》一书中的第3章,第3.5节,作者:杜金房 张令考 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5 配置SIP网关拨打外部电话

如果你拥有某个运营商提供的SIP账号,那么你就可以通过配置SIP来拨打外部电话了。该SIP账号(或提供该账号的设备)在 FreeSWITCH 中称为SIP网关(Gateway)。添加一个网关只需要在 conf/sip_profiles/external/中创建一个XML文件,名字可以随便起,如gw1.xml,然后在该文件中输入如下代码:

<gateway name="gw1">
    <param name="realm" value="SIP服务器地址,可以是IP或IP:端口号"/>
    <param name="username" value="SIP用户名"/>
    <param name="password" value="密码"/>
</gateway>

如果你的SIP网关还需要其他参数,可以参阅同目录下的 example.xml,但一般来说上述参数就够了。你可以重启 FreeSWITCH,或者执行以下命令使用之生效:

freeswitch> sofia profile external rescan

显示一下网关的注册状态:

freeswitch> sofia status

如果显示 gateway gw1 的状态是 REGED,则表明已正确地注册到了网关上。你可以先用命令试一下网关是否工作正常:

freeswitch> originate sofia/gateway/gw1/xxxxxx &echo

以上命令会通过网关 gw1 呼叫号码 xxxxxx(可能是你的手机号),被叫号码接听电话后,FreeSWITCH 会执行 echo 程序,你应该就能听到自己的回音了。
当然,世界SIP网关五花八门,你实际操作起来可能不会这么顺利。如果真的在这里遇到问题,那么你大可继续往下阅读,相信你读完本书之后,跟任何网关对接的复杂问题都能迎刃而解了。
3.5.1 从某一分机上呼出
如果网关测试正常,你就可以配置从你的SIP软电话或portaudio呼出了。由于我们是把 FreeSWITCH 当作 PBX 用,所以需要选一个出局字冠。常见的 PBX 一般是内部拨小号,打外部电话就需要加拨 0 或先拨 9 。当然,这是你自己的交换机,你可以用任何你喜欢的数字(甚至是字母)。继续修改拨号计划,创建一个新的XML文件— conf/dialplan/default/call_out.xml,内容如下:

<include>
  <extension name="call out">
    <condition field="destination_number" expression="^0(\d+)$">
      <action application="bridge" data="sofia/gateway/gw1/$1"/>
    </condition>
  </extension>
</include>

其中,“^0(d+)$”为正则表达式,“(d+)”匹配 0 后面的所有数字并存到变量$1中。然后通过bridge程序通过网关gw1打出该号码。当然,建立该XML后需要在控制台中执行reloadxml使之生效。
3.5.2 呼入电话处理
如果你的 SIP 网关支持DID,那么你需要知道呼入的DID号码。一般来说,呼入的 DID 就是你的 SIP 号码,如果你不知道,也没关系,学习完第6章你就能学到如何取得这个值了。创建以下XML文件并放到 conf/dialplan/public/
my_did.xml中:

<include>
  <extension name="public_did">
    <condition field="destination_number" expression="^(你的DID)$">
      <action application="transfer" data="1000 XML default"/>
    </condition>
  </extension>
</include>

在FreeSWITCH中执行reloadxml使之生效。上述配置会将来话直接转接到分机 1000 上。在后面的章节中你会学到如何更灵活地处理呼入电话,如转接到语音菜单或语音信箱等。

相关文章
|
19天前
|
微服务 应用服务中间件
微服务跨域(通过网关配置进行跨域)
在单体架构中,我们通常通过SpringMVC配置类实现CORS跨域支持,设置允许的来源、请求头、方法及凭证等。然而,在微服务架构下,因浏览器首先访问网关再进行服务路由,需在网关配置跨域。对于无SpringMVC环境的网关(如使用Gateway组件),我们可在YAML文件中配置`spring.cloud.gateway.globalcors`属性,以实现全局跨域支持。
40 0
|
24天前
|
安全 前端开发 Java
微服务网关及其配置
微服务网关及其配置
65 4
|
7天前
|
存储 容器
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
|
2月前
|
Kubernetes 监控 Java
有了k8s还需要gateway网关,nacos配置中心吗
在Kubernetes环境中,服务网关(如Spring Cloud Gateway)和Nacos配置中心补充了k8s的不足。Nacos提供灵活服务路由和动态配置更新,超越k8s基础服务发现。它还支持更复杂的配置管理和实时推送,以及环境隔离和版本控制。作为服务注册中心,Nacos增强k8s服务治理能力,保持技术一致性,并提供额外的安全层及监控功能。
|
3月前
|
Ubuntu Linux
ubuntu linux配置bond 网卡绑定 多个bond配置多网关
ubuntu linux配置bond 网卡绑定 多个bond配置多网关
140 1
|
3月前
|
Linux
centos bond多网关配置 bond多网关路由
centos bond多网关配置 bond多网关路由
40 2
|
4月前
|
网络协议 网络架构
ensp中BGP(边界网关协议)基础原理及配置命令
ensp中BGP(边界网关协议)基础原理及配置命令
120 0
|
2月前
|
监控 负载均衡 Java
深入理解Spring Cloud中的服务网关
深入理解Spring Cloud中的服务网关
|
29天前
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
83 2
|
12天前
|
Java API 微服务
服务网关Gateway
该博客文章详细介绍了Spring Cloud Gateway的使用方法和概念。文章首先阐述了API网关在微服务架构中的重要性,解释了客户端直接与微服务通信可能带来的问题。接着,文章通过具体的示例代码,展示了如何在Spring Cloud Gateway中添加依赖、编写路由规则,并对路由规则中的基本概念如Route、Predicate和Filter进行了详细解释。最后,文章还提供了路由规则的测试方法。
服务网关Gateway