对于配置文件: 按照 非常重要、重要模块、较重要标记,常用场景下满足简单的搭建配置,这里只有autolad_config,其他模块如计划拨号在接下来的文章里继续分享。
freeswitch加载配置文件默认是按照/conf下freeswitch.xml文件的配置进行的加载。
<document type="freeswitch/xml">
<!--#comment
All comments starting with #command will be preprocessed and never sent to the xml parser
Valid instructions:
#include ==> Include another file to this exact point
(partial xml should be encased in <include></include> tags)
#set ==> Set a global variable (can be expanded during preprocessing with $$ variables)
(note the double $$ which denotes preprocessor variables)
#comment ==> A general comment such as this
The preprocessor will compile the full xml document to ${prefix}/log/freeswitch.xml.fsxml
Don't modify it while freeswitch is running cos it is mem mapped in most cases =D
The same can be achieved with the <X-PRE-PROCESS> tag where the attrs 'cmd' and 'data' are
parsed in the same way.
-->
<!--#comment
vars.xml contains all the #set directives for the preprocessor.
-->
<X-PRE-PROCESS cmd="include" data="vars.xml"/>
<section name="configuration" description="Various Configuration">
<X-PRE-PROCESS cmd="include" data="autoload_configs/*.xml"/>
</section>
<section name="dialplan" description="Regex/XML Dialplan">
<X-PRE-PROCESS cmd="include" data="dialplan/*.xml"/>
</section>
<section name="chatplan" description="Regex/XML Chatplan">
<X-PRE-PROCESS cmd="include" data="chatplan/*.xml"/>
</section>
<!-- mod_dingaling is reliant on the vcard data in the "directory" section. -->
<!-- mod_sofia is reliant on the user data for authorization -->
<section name="directory" description="User Directory">
<X-PRE-PROCESS cmd="include" data="directory/*.xml"/>
</section>
<!-- languages section (under development still) -->
<section name="languages" description="Language Management">
<X-PRE-PROCESS cmd="include" data="lang/de/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/fr/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/he/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/es/es_ES.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/es/es_MX.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/pt/pt_BR.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/pt/pt_PT.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/sv/*.xml"/>
</section>
</document>
根据源码可以看到:
先加载全局变量:vars.xml;
之后加载:autoload_configs;dialplan;chatplan;directory;lang;
autoload_configs
自动加载的模块配置目录;每个模块有一个配置文件,文件名格式为“不包含mod_的模块名.conf.xml”,文件名并不重要,可以改成其他的名字,只要扩展名为.xml。
abstraction.conf.xml 重要模块
处理呼叫控制和路由,通过对mod_event_socket 、per-user API行政完成控制
<apis>
<api name="user_name" description="Return Name for extension" syntax="<exten>" parse="(.*)" destination="user_data" argument="$1@default var effective_caller_id_name"/>
</apis>
- name - API 名称
- description - API 描述
- syntax - API Syntax 语法<exten>
- parse - Regex parsing the original argument provided 匹配规则表达式
- destination - The API name of the final api execution 执行api的实际名称
- argument - Format for the argument sent to the final API. You can use $1 $2 $3... from the () result of the parse regex 发送到最终API的参数的格式。您可以从解析正则表达式的()结果中使用$1$2$3
acl.conf.xml 重要模块
ACL权限控制配置
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<!--
These ACL's are automatically created on startup.
rfc1918.auto - RFC1918 Space
nat.auto - RFC1918 Excluding your local lan.
localnet.auto - ACL for your local lan.
loopback.auto - ACL for your local lan.
-->
<list name="lan" default="allow">
<node type="deny" cidr="192.168.42.0/24"/>
<node type="allow" cidr="192.168.42.42/32"/>
</list>
<!--
This will traverse the directory adding all users
with the cidr= tag to this ACL, when this ACL matches
the users variables and params apply as if they
digest authenticated.
-->
<list name="domains" default="deny">
<!-- domain= is special it scans the domain from the directory to build the ACL -->
<node type="allow" domain="$${domain}"/>
<!-- use cidr= if you wish to allow ip ranges to this domains acl. -->
<!-- <node type="allow" cidr="192.168.0.0/24"/> -->
</list>
</network-lists>
</configuration>
从描述中可以看出来,定义2个网络,网络分别为 lan、domains。 list中的name是其他地方引用的标识例如:sip_profiles.conf,event_socket.conf.xml定义的网关可以直接使用对于的规则.
type deny表示拒绝网络段,allow表示运行的网络段。
cidr 是网络段地址,例如配置公司内部可以拨号的网络段。
domain 根据描述来自目录,这里可以配置动态网络。
------------------------------------------ 后面源码太多,不贴源码进来
alsa.conf.xml
默认的 dialplan,计划拨号后一般都会有,这个会被覆盖掉。
amqp.conf.xml
加载rabbitmq的配置,配置mod_amqp会使用到,配置端口、ip、用户、心跳等,不过多描述。
amr.conf.xml
官方描述:AMR采用了专利技术等等,编解码器将使用的带宽上实现自适应多速率问题。如果是大型公司可能会使用到,牵涉到专利(不清楚是否到期等),目前不需要修改里面的东西。
amrwb.conf.xml
同上不需要修改
av.conf.xml
视频解码的相关配置,默认不需要修改。
avmd.conf.xml 重要模块
这个地方很复杂,大概意思是 声音的震荡频率 关键帧触发的一些列操作事件,这个是对相关的配置,官网有流程图,需要详解的点击链接;
blacklist.conf.xml
顾名思义黑名单配置,没啥用,除非黑名单是单独的服务。这个一般在应用程序中配置过滤,或者在对于的模块如:dialplan,如果需要更加精确的控制,可操作。
注意不要被后面的模块覆盖掉
callcenter.conf.xml 重要模块
这个是呼叫的核心配置之一,这个描述和理解可能有错误和遗漏,可以查看官方文档
<configuration name="callcenter.conf" description="CallCenter">
<settings>
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
<!--<param name="dbname" value="/dev/shm/callcenter.db"/>-->
<!--<param name="cc-instance-id" value="single_box"/>-->
</settings>
<queues>
<queue name="support@default">
<param name="strategy" value="longest-idle-agent"/>
<param name="moh-sound" value="$${hold_music}"/>
<!--<param name="record-template" value="$${recordings_dir}/${strftime(%Y-%m-%d-%H-%M-%S)}.${destination_number}.${caller_id_number}.${uuid}.wav"/>-->
<param name="time-base-score" value="system"/>
<param name="max-wait-time" value="0"/>
<param name="max-wait-time-with-no-agent" value="0"/>
<param name="max-wait-time-with-no-agent-time-reached" value="5"/>
<param name="tier-rules-apply" value="false"/>
<param name="tier-rule-wait-second" value="300"/>
<param name="tier-rule-wait-multiply-level" value="true"/>
<param name="tier-rule-no-agent-no-wait" value="false"/>
<param name="discard-abandoned-after" value="60"/>
<param name="abandoned-resume-allowed" value="false"/>
</queue>
</queues>
<!-- WARNING: Configuration of XML Agents will be updated into the DB upon restart. -->
<!-- WARNING: Configuration of XML Tiers will reset the level and position if those were supplied. -->
<!-- WARNING: Agents and Tiers XML config shouldn't be used in a multi FS shared DB setup (Not currently supported anyway) -->
<agents>
<!--<agent name="1000@default" type="callback" contact="[leg_timeout=10]user/1000@default" status="Available" max-no-answer="3" wrap-up-time="10" reject-delay-time="10" busy-delay-time="60" />-->
</agents>
<tiers>
<!-- If no level or position is provided, they will default to 1. You should do this to keep db value on restart. -->
<!-- <tier agent="1000@default" queue="support@default" level="1" position="1"/> -->
</tiers>
</configuration>
queue
为队列,name
为队列的名字,用于在其它地方引用
queue
的param
的name
可为:
stragy:策略
- agent-with-fewest-calls:总时选择接电话次数最少的坐席。
- agent-with-least-talk-time:总是选择通话时间最短的坐席。
- long-idel-agent:选择空闲时间最长的坐席。
- random:随机选择。
- ring-all:所有坐席振铃,哪个先接就选哪个。
- round-robin:轮询。
- sequentially-by-agent-order:根据梯队和顺序选择。
- top-down:按固定的顺序选择。
agent:
坐席
- busy-delay-time:如果坐席忙,再次选到该坐席的最短时长。
- contact:坐席的呼叫字符串,用于在有来话时呼叫该坐席。
- max-no-answer:坐席呼叫失败超过此次数,则将坐席状态设置为On Break。
- name:坐席的名字,用于在其它地方引用。
- reject-delay-time:坐席拒接后再次选到该坐席的最短时长。
- status:坐席的初始状态。可为:
- Available:可用状态,可以接电话。
- Available (On Demand):一种特殊的可用状态。
- Logged Out:退出服务状态。
- On Break:坐席已登录,但不可以接电话。
- type:坐席的类型。可为:
- callback:onhook坐席。
- uuid-standby:offhook坐席。
tire:
梯队
将队列与坐席关联起来。
moh-sound: 播放的音乐
time-base-score : 设置'queue' or 'system'
max-wait-time: 默认设置为0以禁用,设置单位为秒,并将定义在代理未应答成员的情况下退出呼叫中心应用程序之前的延迟。
max-wait-time-with-no-agent:默认设置为0以禁用,设置单位为秒,定义在断开所有成员连接之前队列必须为空的时间量(没有记录的代理,无论是否正在通话)。这一原则保护了在所有代理意外注销的情况下踢出所有等待的成员。
max-wait-time-with-no-agent-time-reached: 默认值为5,设置单位为秒。达到无代理的最大等待时间后拒绝新调用者的时间长度。这允许在没有代理登录超过5秒的情况下踢呼叫者,但达到5秒后的新呼叫者可以有一个较低的限制。
discard-abandoned-after : 从队列中完全删除被放弃的成员之前的秒数,呼叫者可以回到队列中,这里建议使用默认配置。
abandoned-resume-allowed: 放弃队列的呼叫者可以重新进入并恢复其在该队列中的先前位置。
cdr_csv.conf.xml 重要模块
CSV文件存储话单的配置
<configuration name="cdr_csv.conf" description="CDR CSV Format">
<settings>
<!-- 'cdr-csv' will always be appended to log-base -->
<!--<param name="log-base" value="/var/log"/>-->
<param name="default-template" value="example"/>
<!-- This is like the info app but after the call is hung up -->
<!--<param name="debug" value="true"/>-->
<param name="rotate-on-hup" value="true"/>
<!-- may be a b or ab -->
<param name="legs" value="a"/>
<!-- Only log in Master.csv -->
<!-- <param name="master-file-only" value="true"/> -->
</settings>
<templates>
<template name="sql">INSERT INTO cdr VALUES ("${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}");</template>
<template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}"</template>
<template name="snom">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${call_clientcode}","${sip_rtp_rxstat}","${sip_rtp_txstat}","${sofia_record_file}"</template>
<template name="linksys">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${sip_p_rtp_stat}"</template>
<template name="asterisk">"${accountcode}","${caller_id_number}","${destination_number}","${context}","${caller_id}","${channel_name}","${bridge_channel}","${last_app}","${last_arg}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${amaflags}","${uuid}","${userfield}"</template>
<template name="opencdrrate">"${uuid}","${signal_bond}","${direction}","${ani}","${destination_number}","${answer_stamp}","${end_stamp}","${billsec}","${accountcode}","${userfield}","${network_addr}","${regex('${original_caller_id_name}'|^.)}","${sip_gateway_name}"</template>
</templates>
</configuration>
param 下name:
- default-template:默认模板。
- legs:话单记录的腿(a腿/b腿)。
- master-file-only:是否只记录话单汇总文件,不对每个分机单独记录话单文件。
- rotate-on-hup:当FreeSWITCH收到SIGHUP信号时,是否将话单轮替。
下面的sql要配置到数据库才可以,如果走服务不用管他们。
cdr_mongodb.conf.xml
mongodb配置,当前这个与下面类似,看xml都明白不做描述;
cdr_pg_csv.conf.xml
posgresql配置
cdr_sqlite.conf.xml
sqllite.配置
cepstral.conf.xml
音频解码器配置,要安装的软件,操作详情
cidlookup.conf.xml
配置查询数字到名字映射,url到名字映射。
conference.conf.xml 重要模块
多人电话会议配置
<advertise>
<room name="3001@$${domain}" status="FreeSWITCH"/>
</advertise>
advertise 下 name 为会议名称
status 为会议状态,如果没有传递值这为:Available;
<caller-controls>
<group name="default">
<control action="mute" digits="0"/>
<control action="deaf mute" digits="*"/>
<control action="energy up" digits="9"/>
<control action="energy equ" digits="8"/>
<control action="energy dn" digits="7"/>
<control action="vol talk up" digits="3"/>
<control action="vol talk zero" digits="2"/>
<control action="vol talk dn" digits="1"/>
<control action="vol listen up" digits="6"/>
<control action="vol listen zero" digits="5"/>
<control action="vol listen dn" digits="4"/>
<control action="hangup" digits="#"/>
</group>
</caller-controls>
mute: 将此成员的音频切换到会议
mute on: 禁用音频
mute off:启用
deaf mute:一次操作禁用音频
energy up:降噪阈值,超过阈值声音进入会议
energy equ:最小阈值降低为默认值
energy dn:将最小能量阈值降低1个单位
vol talk up: 将讲话成员音量调大一个单位
vol talk zero: 讲话成员音量重置默认值
vol talk dn:通话音量降低一个单位
vol listen up: 接收音量调大一个单位
vol listen zero:成员接收量重置为默认设置
vol listen dn:成员接收量减少1个单位
hangup:厉害会议
event: 将DTMF事件发出
lock:锁定会议,新成员无法加入
transfer: 成员转移到给定的分机
execute_application: 调用计划拨号程序
floor:其他人没有发言权,就可以打开和关闭自己的发言权
vid-floor: 视频通话当前已锁定,它将恢复为自动模式;如果没有当前持有者,您将成为视频通话持有者
vid-floor-force: 视频通话当前已锁定,它将恢复为自动模式,否则您将成为锁定的视频楼层持有者
vmute: 成员的视频切换到会议
vmute on:禁用成员在会议中的视频
vmute off: 启用成员在会议中的视频
vmute snap: 用户拍摄视频快照
vmute snapoff : 丢弃vmute视频快照
<profile name="wideband">
<param name="domain" value="$${domain}"/>
<param name="rate" value="16000"/>
<param name="interval" value="20"/>
<param name="energy-level" value="100"/>
<!-- <param name="sound-prefix" value="$${sound_prefix}"/> -->
<param name="muted-sound" value="conference/conf-muted.wav"/>
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
<param name="alone-sound" value="conference/conf-alone.wav"/>
<param name="moh-sound" value="$${hold_music}"/>
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
<param name="locked-sound" value="conference/conf-locked.wav"/>
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
<param name="pin-sound" value="conference/conf-pin.wav"/>
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
<param name="caller-id-name" value="$${outbound_caller_name}"/>
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<param name="comfort-noise" value="true"/>
<!-- <param name="tts-engine" value="flite"/> -->
<!-- <param name="tts-voice" value="kal16"/> -->
</profile>
domain: 活动域名
rate: 音频采样率
interval: 每帧的毫秒数.默认自动,越高质量越低
energy-level: 背景噪音只有在他们说话时才能听到,0禁用噪声门,并将桥接所有数据包,即使它们只是背景噪声
muted-sound:用户被禁言时向其播放的声音文件。
unmuted-sound:用户被取消禁言时向其播放的声音文件。
alone-sound:会议只剩一个用户时向其播放的声音文件。
moh-sound:会议大小为1个成员时,才会播放给定的声音文件/资源
auto-record:录音模板。当会议中有至少两个人时就会自动开始录音。
comfort-noise:是否产生舒适噪声。
conference-flags:会议标志。rfc-4579为RFC4579定义的视频会议控制标准。
enter-sound: 加入会议时要播放的文件
exit-sound: 离开会议时要播放的文件
kicked-sound:退出会议时要播放的文件
其他几个sound都是类似的意思
caller-id-name: 发起的出站呼叫的默认呼叫者ID名称
caller-id-number: 默认呼叫者ID号码
comfort-noise: 设置要添加到会议中的背景白噪声的音量级别。特殊值“true”设置为默认值。0表示无CN(完全沉默)。
其他上面为常见参数,不在过多描述,更多参数请点击
conference_layouts.conf.xml
layout框,参数与conference.conf.xml关联展示
console.conf.xml
控制台模块,使用默认就好,如果需要kafka等日志工具,请访问网页地址
curl.conf.xml
mod加载
db.conf.xml
mod加载
dialplan_directory.conf.xml
旧模块,没有找到资料,按照官网描述新版已废弃。
directory.conf.xml
不确定,没有官网文档描述,疑似远程配置目录
distributor.conf.xml
<configuration name="distributor.conf" description="Distributor Configuration">
<lists>
<!--每10个测试电话,你会得到一次foo1和9次foo2。。。是的,九次了!-->
<!--这与100加10和90不同,100会连续执行foo1 10次,然后连续执行foo2 90次-->
<list name="test">
<node name="foo1" weight="1"/>
<node name="foo2" weight="9"/>
</list>
</lists>
</configuration>
号码连选模块配置
easyroute.conf.xml
多节点配置
enum.conf.xml
多ip枚举类,mod加载
erlang_event.conf.xml
erlang开发用到的事件
event_multicast.conf.xml
系统的默认配置
event_socket.conf.xml
Event Socket配置,配置mod
listen-ip 配置ip
listen-port 端口
password 密码
fax.conf.xml
老版本的传真服务,没啥用
fifo.conf.xml 重要模块
呼叫队列模块配置
<configuration name="fifo.conf" description="FIFO Configuration">
<settings>
<param name="delete-all-outbound-member-on-startup" value="false"/>
</settings>
<fifos>
<fifo name="cool_fifo@$${domain}" importance="0">
<!--<member timeout="60" simo="1" lag="20">{member_wait=nowait}user/1005@$${domain}</member>-->
</fifo>
</fifos>
</configuration>
param name delete-all-outbound-member-on-startup 官方没有描述,猜测 字面意思删除所有在线成员开始;最新的github上没有配置,这类在Dialplan里有配置,不需要这个。
fifos用于配置静态坐席。
fifo的name属性为队列的名字,用于在其它地方引用。
每个member相当于一个坐席,其值为该坐席的呼叫字符串。坐席会轮流振铃(拒接其中一个,另一个就会振铃)。
timeout属性为呼叫超时的秒数。
simo属性为最大能服务的呼叫的数量。
lag属性为该坐席接听一个呼叫后再接听下一个呼叫的间隔秒数。
format_cdr.conf.xml
多格式curl日志记录,对于的mod是mod_json_cdr和mod_xml_cdr的超集,最终将取代这两个模块。
graylog2.conf.xml
官网已没有该文档的描述
hash.conf.xml
废弃相关功能在 mod_ssh.conf.xml
hiredis.conf.xml
redisMod
httapi.conf.xml
httapimod用于httapi脚本运行“answer”应用程序
http_cache.conf.xml
httpcacheMod 配置,http get put等操作缓存配置
ivr.conf.xml
IVRMOD配置,原型语音邮件IVR引擎;安装默认示例文件中的voicemail_ivr.conf.xml和voicemail.ivr.xml
java.conf.xml
java Mod配置;可以运行java代码,官网中唐朝swing框操作;
lcr.conf.xml
配置lic mod;该mod是配置路由,正常操作应该应用服务操作,这个可以废弃;
local_stream.conf.xml
本地文件流的配置;
name为名字,斜杠前面用于在其它地方引用,斜杠后面用于自动匹配采样率。如果找不到指定的流则会使用default流,如果default流也不存在则会提示错误。
path为声音文件的目录。
logfile.conf.xml
日志目录mod;
lua.conf.xml 较重要
Lua语言配置;
param的name可为:
startup-script:FreeSWITCH启动时执行的脚本文件。
xml-handler-bindings:使用XML绑定的Section。Section见freeswitch.xml。
xml-handler-script:XML绑定执行的脚本文件。
modules.conf.xml 重要模块
配置FreeSWITCH启动时自动加载哪些模块
nibblebill.conf.xml
预付费计费模块配置
<settings>
<param name="odbc-dsn" value="bandwidth.com"/>
</settings>
db_column_account:计费账号对应的数据库表字段名。
global_heartbeat:通话过程中定时扣款的时间间隔。
odbc-dsn:数据库ODBC的DSN。格式为:[odbc://]NAME:[USERNAME]:[PASSWORD]。
perl.conf.xml
对perl脚本支持
portaudio.conf.xml
配置 PortAudio 模块;PortAudio 是一个跨平台的音频处理库,它允许你在程序中录制和播放音频。FreeSWITCH 使用 PortAudio 来处理音频输入和输出
<settings>
; 启用 PortAudio 模块
enabled=true
</settings>
<devices>
<device name="portaudio_in" type="capture">
; 指定输入设备,例如默认麦克风或特定的麦克风设备
args="1" ; 设备索引,通常从0开始
</device>
<device name="portaudio_out" type="playback">
; 指定输出设备,例如默认扬声器或特定的扬声器设备
args="1" ; 设备索引,通常从0开始
</device>
</devices>
post_load_modules.conf.xml
其格式和用法与autoload_configs/modules.conf.xml差不多,不同的是其中定义的模块加载时间较晚
rss.conf.xml
配置rss模块;订阅并处理 RSS 提要;
sofia.conf.xml 重要模块
SIP模块配置;编辑之前要备份;
capture-server:Homer方式抓包的Capture Node(又称Capture Server)的地址;
加载对应的sofia_mod配置文件;
百度发现了一篇文章,不知道是否是版本问题差异较大:本站网站
switch.conf.xml 重要模块
SIP核心配置
core-db-dsn:core数据库的DSN。格式为:[odbc://]NAME:[USERNAME]:[PASSWORD]。
max-sessions:呼叫最大并发数。
rtp-end-port:RTP结束端口(含)。
rtp-start-port:RTP起始端口(含)。
sessions-per-second:每秒最大呼叫数。
syslog.conf.xml
日志配置;
tts_commandline.conf.xml
调用其他TTS软件命令行的配置;
file:声音文件名。默认扩展名为.wav,使用完毕会自动删除.wav文件。
rate:Channel的采样率。
text:TTS文本。
voicd:嗓音的名字。
v8.conf.xml
google v8js
xml_cdr.conf.xml 非常重要
生成XML格式的话单发送至外部HTTP服务器的配置;电话结束后,马上就会调用这个配置的地址;
<settings>
<!-- <param name="url" value="http://localhost/cdr_curl/updateCall"/> -->
</settings>
url:话单的HTTP POST请求的URL地址。
xml_curl.conf.xml 非常重要
请求外部HTTP服务器生成XML的配置;
<configuration name="xml_curl.conf" description="cURL XML Gateway">
<bindings>
<binding name="example">
<!-- <param name="gateway-url" value="http://www.freeswitch.org/gateway.xml" bindings="dialplan"/> -->
</binding>
</bindings>
</configuration>
gateway-url:HTTP网关服务器的URL。bindings
表示应用的Section
xml_rpc.conf.xml 非常重要
FreeSWITCH Portal配置;配置XML-RPC服务的,这使得外部应用程序可以通过XML-RPC协议与FreeSWITCH进行交互。这通常用于远程管理和监控FreeSWITCH服务器。
enabled: 设置为true以启用XML-RPC服务,设置为false则禁用。
listen-ip: XML-RPC服务监听的IP地址。通常设置为127.0.0.1以仅允许本地访问,或者设置为0.0.0.0以允许所有IP访问。
listen-port: XML-RPC服务监听的端口,默认是8080。
allow-cors: 设置为true以允许跨域请求,这对于Web应用集成非常有用。
allowed-origins: 允许跨域请求的源地址,使用逗号分隔。设置为*表示允许所有域。
use-ssl: 设置为true以启用HTTPS,否则使用HTTP。
ssl-cert-path 和 ssl-key-path: 当使用SSL时,指定证书和密钥的路径。
zeroconf.conf.xml
zeroconf允许设备在网络上自动发现彼此,无需手动配置IP地址或端口,这对于VoIP环境尤其有用,因为它可以让客户端自动发现并连接到FreeSWITCH服务器。