使用freeSwitch
FreeSWITCH 提供了多种方式来使用和管理,包括通过 配置文件 定制行为、使用 命令行工具(fs_cli
)、以及通过 API 和接口 进行编程操作。以下是如何使用和调用 FreeSWITCH 的具体方法:
1. 通过 SIP 客户端注册并测试
FreeSWITCH 默认支持 SIP 注册。可以通过以下方式进行测试:
配置 SIP 客户端
- 默认账号信息:
- 用户名:1000
- 密码:
1234
(可在/etc/freeswitch/directory/default/1000.xml
查看) - 服务器地址:FreeSWITCH 的 IP 地址
- 常用 SIP 客户端:
- 桌面客户端:Zoiper、MicroSIP。
- 手机客户端:Zoiper、Linphone。
- SIP 注册步骤:
- 在客户端中输入用户名、密码、服务器地址。
- 确保 FreeSWITCH 的 5060 端口开放并配置正确的防火墙。
- 拨号测试:
- 使用其他用户(如
1001
)的账号进行注册。 - 拨打分机号,例如
1001
->1000
。
- 使用其他用户(如
2. 使用 FreeSWITCH 命令行接口(fs_cli
)
启动命令行接口
运行以下命令进入 FreeSWITCH 的 CLI(命令行界面):
sudo fs_cli
常用命令
重载配置:
reloadxml
挂断所有通话:
fsctl shutdown
查看活跃呼叫:
show calls
查看 SIP 注册信息:
sofia status
查看系统状态:
status
3. 使用 FreeSWITCH 的 REST API
FreeSWITCH 内置了一个 Event Socket Layer (ESL) 接口,可以通过 REST API 调用。
启用 ESL 服务
重新加载配置:
reloadxml
确保 ESL 模块加载: 在 /etc/freeswitch/autoload_configs/event_socket.conf.xml
中,检查以下内容:
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="listen-ip" value="127.0.0.1"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
</settings>
</configuration>
修改 listen-ip
和 listen-port
为合适值,默认密码为 ClueCon
。
使用 ESL 客户端连接
通过 netcat
测试:
nc 127.0.0.1 8021
输入密码进行认证:
auth ClueCon
4. FreeSWITCH 的 HTTP API
FreeSWITCH 支持通过 HTTP 接口调用命令。
启用 HTTP 服务
编辑 /etc/freeswitch/autoload_configs/http_cache.conf.xml
:
<configuration name="http_cache.conf" description="HTTP Cache">
<settings>
<param name="enable" value="true"/>
<param name="http-port" value="8080"/>
<param name="http-ip" value="0.0.0.0"/>
</settings>
</configuration>
重新加载配置:
reloadxml
调用 HTTP API
示例请求:
curl -u ClueCon:ClueCon "http://<Freeswitch-IP>:8080/api/sofia_status"
5. 使用 FreeSWITCH 脚本语言
FreeSWITCH 支持多种脚本语言(如 Lua、JavaScript、Python)来控制和编排呼叫。
Lua 示例
重载拨号计划:
reloadxml
拨号计划配置: 在 /etc/freeswitch/dialplan/default.xml
添加:
<extension name="hello">
<condition field="destination_number" expression="^1234$">
<action application="lua" data="hello.lua"/>
</condition>
</extension>
创建脚本: 在 /usr/share/freeswitch/scripts/hello.lua
中添加:
session:answer()
session:streamFile("hello.wav")
session:hangup()
6. 自定义模块和扩展接口
FreeSWITCH 支持通过定制模块开发扩展功能:
- 开发 FreeSWITCH 模块:
- 编写模块代码。
- 编译和安装。
- 加载模块到 FreeSWITCH 中。
- 常见模块:
mod_callcenter
:呼叫中心。mod_voicemail
:语音邮件。mod_conference
:会议桥。
7. 其他资源和文档
- 官方文档:FreeSWITCH Wiki
- API 文档:FreeSWITCH API