freeswitch 使用记录

本文介绍了FreeSWITCH中全局变量和局部变量的使用。全局变量通过X-PRE-PROCESS设置,整个运行期间有效,用$${var}引用;局部变量在拨号计划中定义,只在呼叫生命周期内有效,使用${var}表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当新建(NEW)一个Channel时,它首先会进行初始化(INIT),然后进入路由(ROUTING)阶段,也就是我们
查找解析Dialplan的阶段。在这里,要注意一个专门的术语——Hunting(在传统的交换机里,它译为选线,在这
里我就译为选路吧)。找到合适的路由入口后,Hunting会执行(EXECUTE)一系列动作,最后无论哪一方挂机,
都会进入挂机(HANGUP)阶段。后面的报告(REPORTING)阶段一般用于进行统计、计费等,最后将Channel销毁
(DESTROY),释放系统资源。
在EXECUTE状态,可能会发生转移(Transfer,该转移跟我们通常说的呼叫转移不太一样),它可以转移到同
一context下其他的extension,或者转移到其他context下的extension,但无论发生哪种转移,都会重新进行路
### 配置 FreeSWITCH 保存通话记录 为了使 FreeSWITCH 能够保存通话记录,需确保配置文件正确设置并启用相应功能。具体操作如下: #### 修改拨号计划以支持通话记录存储 在 `dialplan.xml` 文件中添加特定的动作来触发通话记录的保存过程[^2]。 ```xml <extension name="save_call_record"> <condition field="destination_number" expression="^(.*)$"> <!-- 开始录制会话 --> <action application="record_session" data="/tmp/${strftime(%Y-%m-%d)}/${caller_id_number}_${destination_number}.wav"/> <!-- 设置两个变量,用于将通话记录保存到数据库 --> <action application="set" data="recordfile=/tmp/${strftime(%Y-%m-%d)}/${caller_id_number}_${destination_number}.wav"/> <action application="set" data="recordname=${caller_id_number}_${destination_number}.wav"/> </condition> </extension> ``` 此部分代码定义了一个扩展名叫做 `save_call_record` 的条件分支,在匹配任意目的地号码时执行一系列动作,包括启动录音以及设定必要的环境变量以便后续处理。 #### 创建 MySQL 数据库结构 根据需求预先建立好相应的表格结构,至少包含三个主要字段:唯一 ID (`uuid`)、关联 ID (`call_uuid`) 和其他描述性信息如主叫方昵称(`caller_id_name`)、主叫号码(`caller_id_number`)、被叫号码(`destination_number`)等。完整的表设计可以参照以下 SQL 语句[^3]: ```sql CREATE TABLE IF NOT EXISTS calls ( id INT AUTO_INCREMENT PRIMARY KEY, uuid VARCHAR(255), call_uuid VARCHAR(255), caller_id_name VARCHAR(255), caller_id_number VARCHAR(20), destination_number VARCHAR(20), start_stamp DATETIME, answer_stamp DATETIME NULL DEFAULT NULL, end_stamp DATETIME, uduration BIGINT, -- 微秒级别的时间长度 billsec INT, -- 秒级别的计费时间 hangup_cause TEXT ); ``` 上述命令创建了一张名为 `calls` 的新表(如果不存在),其中包含了所有必需的信息列用来跟踪每次呼叫事件的关键细节。 #### 启用模块并将数据发送至 MySQL 最后一步是激活负责向外部数据库提交报告的应用程序接口(API),这通常涉及到编辑 `/usr/local/freeswitch/conf/autoload_configs/mysql.conf.xml` 或者通过 API 动态加载相关插件[^1]。 ```bash # 确认 mod_mysql 已经安装并且已加载 fs_cli -x 'module_exists mod_sql' fs_cli -x 'sofia profile internal restart' # 重新加载SIP配置 ``` 完成以上步骤之后,每当有新的来电发生时,FreeSWITCH 将自动按照预设逻辑收集相关信息,并将其持久化存入指定的关系型数据库管理系统(RDBMS)内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值