参考Configuration文档:
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Configuration/
修改xml后reloadxml生效
快捷键F?
sofia loglevel设置
sofia loglevel all [0-9]
重载sofia(SIP模块)
reload mod_sofia
预设目录
方法:fs_cli下执行
eval $${base_dir}
docker方式安装的FreeSWITCH 用于某些文件的默认目录
base_dir
这定义了大多数其他目录设置的根目录
/usr
cache_dir
缓存目录
/var/cache/freeswitch
certs_dir
证书目录
/etc/freeswitch/tls
conf_dir
配置文件目录
/etc/freeswitch
db_dir
核心数据库目录
/var/lib/freeswitch/db
grammar_dir
语法目录
/usr/share/freeswitch/grammar
htdocs_dir
html网页或http api接口 文件目录
/usr/share/freeswitch/htdocs
log_dir
日志文件目录
/var/log/freeswitch
mod_dir
模块目录
/usr/lib/freeswitch/mod
recordings_dir
录音文件目录
/var/lib/freeswitch/recordings
run_dir
运行时目录
/var/run/freeswitch
script_dir
脚本目录
/usr/share/freeswitch/scripts
sounds_dir
声音文件目录
/usr/share/freeswitch/sounds
sound_prefix
词语的音频所在的目录前缀,以及默认情况下保存录音的位置。请参见mod_dptools:record、mod_dptools:record_session、mod_command 和 (FreeSWITCH API)suuid_record。
/usr/share/freeswitch/sounds/en/us/callie
storage_dir
/var/lib/freeswitch/storage
temp_dir
/tmp
core_uuid
850415ed-7de8-4231-a319-46728bb6f0c3
switch_serial
c0a86364d6cc
local_mask_v4
此全局变量由 FreeSWITCH 核心动态设置,方法是在确定local_ip_v4时使用从底层操作系统接收的网络掩码。
255.255.255.0
zrtp_enabled
此全局变量由 FreeSWITCH 核心设置为 switch.conf.xml 中全局 rtp-enable-zrtp 设置的值。有关详细信息,请参阅 SIP TLS 页面。
true
hostname 此全局变量由 FreeSWITCH 核心动态设置,并设置为运行 FreeSWITCH 的服务器的主机名。不能通过设置来覆盖此变量的值。但是,如果更改服务器的主机名,则变量的值将更新。
dockerhub.local
local_ip_v4 和 local_ip_v6 string 这个全局变量由 FreeSWITCH 核心动态设置,通过向底层操作系统询问运行 FreeSWITCH 的服务器的 IP 地址。如果服务器有多个 IP 地址,则此地址将设置为操作系统返回的第一个 IP 地址。在默认配置中,有许多设置使用此全局变量。
您不能覆盖此全局变量的值,因为它将每分钟由 FreeSWITCH 核心重置一次。如果您的服务器有多个 IP 地址,并且您希望强制 FreeSWITCH 使用特定的 IP 地址,则可以创建一个force_local_ip_v4全局变量并将其设置为您喜欢的 IP 地址。您还必须将local_ip_v4变量设置为此IP地址,只需将local_ip_v4设置为使用force_local_ip_v4的值即可。ipv6同理
192.168.99.100
::1
参考CDR文档:
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Configuration/CDR/
参考mod_cdr_csv文档:
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_cdr_csv_6587322/#legs
Call Detail Records呼叫详细记录,简称CDR,指的是每一次通话过程中记录的数据,CDR可能包含特定于每个呼叫会话的属性,并最终包含呼叫的每个leg(a,b,ab)
CDR包含发起呼叫和接收呼叫的电话号码、呼叫时间、呼叫持续时间和许多其他属性。
FreeSWITCH默认加载的模块是mod_cdr_cvs,mod_cdr_cvs模块提供的功能是把CDR写入本地的.cvs文件并插入数据库,这些csv文件以呼叫的分机号命名,
常规安装方式下,具体文件目录是/usr/local/freeswitch/log/cdr-csv
docker安装方式下,具体的文件目录是/var/log/freeswitch/cdr-csv/
root@93340caa8502:/etc/freeswitch# cd /var/log/freeswitch/cdr-csv/
1008.csv Master.csv
举例CDR的CSV文件1008.csv
"1008","1008","1001","default","2023-01-17 02:50:31","2023-01-17 02:50:41","2023-01-17 02:50:42","11","1","NORMAL_CLEARING","14e4d428-8ac0-43bd-9cef-78b238c46008","","1008","PCMA","PCMA"
也可以使用mod_xml_cdr模块处理,默认存储在/usr/local/freeswitch/log/xml_cdr/
例如/usr/local/freeswitch/log/xml_cdr/a_80183ec8-d424-11e3-8fb2-65b6c3cdac7d.cdr.xml中的详细XML CDR示例
CS_REPORTING
inbound
...
inbound
80183ec8-d424-11e3-8fb2-65b6c3cdac7d
1600
8009
8009%40XX.XX.XXX.XXX
XX.XX.XXX.XXX
sofia/external/8009%40XX.XX.XXX.XXX
...
...
8009
XML
8009
8009
...
1399273898421766
1399273898421766
...
Freeswitch下的CDR存储有多种方式
存储CDR的最好方式是将所有数据字段都写入磁盘或者RAM驱动器上的临时区域,然后编写脚本扫描该区域,以便将它们长期存储到数据库中。
这样的处理方式可以避免一种结果的发生:http或db服务器意外关闭时,不会导致Freeswitch语音调用线程的挂起。
警告:不要在dialplan或ESL脚本中编写CDR脚本,因为这将延迟语音线程的终止
原则是允许语音线程只处理语音;离线单独处理后端业务流程
有以下10种方式可以保存或者获取CDR信息
常用的两种方式mod_cdr_csv和mod_xml_cdr
mod_cdr_csv的配置文件在/freeswitch/autoload_configs/cdr_csv.conf.xml
默认情况下,它只记录a-leg, 要把完整的CDR记录下来,需要把legs设为ab
CSV文件将写入的目录
默认值:/log/cdr-csv(或/var/log/freeswitch/)
该值可以被cdr_csv_base通道变量覆盖。