freeswitch电话软交换配置使用笔记

我厂最近新买了新办公楼,新办公室那边的电话系统:包括软交换,数字中继网关,E1和VOIP,交由我去配置。多功能程序员 :)

下面是配置freeswitch过程中的一些记录,贴在这里与大家分享。更多详细资料请参考fs官方以及中文官网

1.freeswitch src里,有个perl脚本, add_user批量增加用户

2.查看用户注册情况sofia status profile internal reg

3.对5004用户进行模拟呼叫originate user/5004 &echo()

4.配置conf/dialplan/default.xml设置sip对外呼出(加0外拨,加00外地,本地区号去除,主叫方送号)
<extension name="Local_Extension2">
<condition field="destination_number" expression="^0(551)*([0-9]\d{5,})$">
<action application="export" data="dialed_extension=$1"/>
<action application="answer"/>
<action application="set" data="call_timeout=30"/>
<action application="set" data="record_sample_rate=8000"/>
<action application="export" data="RECORD_STEREO=false"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<condition field="caller_id_number" expression="^(50)([0-4][0-9])$">
<action application="set" data="effective_caller_id_number=123456$2"/>
</condition>
<!--<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>-->
<!--<action application="bridge" data="${rtmp_contact(default/${dialed_extension}@$${domain})}"/>-->
<action application="bridge" data="sofia/gateway/gw1/$1"/>
</condition>
</extension>

5. 配置外线呼入找号,公司内部拨内部长号转换为公司内部分机短号(帮公司省钱,公司新政应该分点奖金给我 0.0)
<extension name="public_extensions">
<condition field="destination_number" expression="^123456([0-4]\d)$">
<action application="pre_answer"/>
<action application="transfer" data="50$1 XML default"/>
</condition>
</extension>
<extension name="public_extensions">
<condition field="destination_number" expression="^([0-9]\d+)$">
<action application="pre_answer"/>
<action application="transfer" data="$1 XML default"/>
</condition>
</extension>

6. 拨号计划中查看所有Channel Variable. 通过使用 info 这个 APP,可以查看所有的 Channel Var。我们先修改一下 Dialplan。
<extension name="Show Channel Variable">
<condition field="destination_number" expression="^1235$">
<action application="info" data=""/>
</condition>
</extension>

变量对照表
http://wiki.freeswitch.org/wiki/Channel_Variables#Info_Application_Variable_Names_.28variable_xxxx.29

7.set和export的区别
<action application="set" data="dialed_extension=$1"/>
<action application="export" data="dialed_extension=$1"/>
set 是将变量设置到当前的 Channel 上,即 a-leg。而 export 则也将变量设置到 b-leg 上。当然,这里 b-leg 还不存在。所以在这里它对该 Channel 的影响与 set 其实是一样的。因此,使用 set 完全是多余的。但是除此之外,export 还设置了一个特殊的变量,叫 export_vars,它的值是dialed_extension。

8.拨号字符串中的通道变量
使用大括号{ } 和 中括号[] 的语法解释如下:
{foo=bar} 只能用在拨号字符串的开头. 它会在每个通道上设置相同的值.
[foo=bar] 它设置在某个特定的拨号字符串的前面,此通道变量值只对当前通道有效.
下面这个例子设置变量foo=bar 到所有通道,设置 chan=1 到blah 同时设置chan=2 到 blah2
如果你想让中括号[]内的变量覆盖同名大括号{}内设置的变量值,你可以在大括号{}内先设定 ‘local_var_clobber=true‘ ,例如:{local_var_clobber=true,sip_secure_media=true}sofia/default/[email protected]|sofia/default/[email protected]|[sip_secure_media=false]sofia/default/[email protected]

9.配置fs拨打外部网关
conf/sip_profiles/external下建立gw1.xml内容
<gateway name="gw1">
<param name="realm" value="192.168.1.2:5060"/>
<param name="username" value="5678"/>
<param name="password" value="1234"/>
<param name="register" value="false" />
<param name="caller-id-in-from" value="true"/>
</gateway>

10.实现IVR语言菜单www.freeswitch.org.cn/2010/03/21/yong-freeswitchshi-xian-ivr.html
首先如果要实现名字为welcome的语言菜单要修改conf/dialplan/public.xml
<extension name="incoming_call">
<condition field="destination_number" expression="^你的DID号码$">
<action application="answer" data=""/>
<action application="sleep" data="1000"/>
<action application="start_dtmf"/>
<action application="ivr" data="welcome"/>
</condition>
</extension>
其次welcome的语言菜单配置,修改conf/autoload_configs/ivr.conf
<configuration name="ivr.conf" description="IVR menus">
<menus>
<!--<menu name="demo_ivr">-->
<menu name="welcome"
greet-long="custom/welcome.wav"
greet-short="custom/welcom_short.wav"
invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav"
exit-sound="voicemail/vm-goodbye.wav"
timeout="15000"
max-failures="3"
max-timeouts="3"
inter-digit-timeout="2000"
digit-len="4">
<entry action="menu-exec-app" digits="0" param="transfer 1000 XML default"/>
<entry action="menu-exec-app" digits="/^(10[01][0-9])$/" param="transfer $1 XML default"/>
</menu>
</menus>
</configuration>

11.判断电话语音文件是否存在
<extension name="play-news-announcements">
<condition expression="${file_exists(${sounds_dir}/news.wav)}" expression="true"/>
<action application="playback" data="${sounds_dir}/news.wav"/>
<anti-action application="playback" data="${soufnds_dir}/no-news-is-good-news.wav"/>
</condition>
</extension>

12.接通后再录音录音时不要将前置媒体录制进去.
<action application="set" data="media_bug_answer_req=true"/>

13.fs中生成随机uuid
<action application="set" data="newuuid=${create_uuid()}"/>

14.FreeSWITCH在呼叫失败的情况下播放语音提示 http://zdm2008.blog.163.com/blog/static/20491545201321945439885/
<action application="bridge" data="loopback/app=voicemail:default ${domain_name} ${dialed_extension}"/>
改为
<action application="playback" data="${originate_disposition}.wav"/>

15. fs_cli命令行桥接legA,legB电话

originate {effective_caller_id_number=xxxxxx}sofia/internal/[email protected] &bridge(sofia/gateway/gw1/xxxxxxxxxx)

时间: 2024-10-08 19:18:24

freeswitch电话软交换配置使用笔记的相关文章

YouPBX电话软交换管理 GUI 系统

YouPBX 是一个强大 FreeSwift (电话软交换系统) 的管理GUI系统,基于Django开发,功能全面,体验友好,可以基于此项目做一个完善的IPPBX系统.呼叫中心应用等 v0.1.0 特性 1. 中继网关接口管理2. 呼叫队列.IVR管理3. 电话会议.语言邮箱管理4. FreeSwift 状态信息面板下载 https://github.com/JoneXiong/YouPBX/releases

讯时O口MX8网关对接昆石软交换vos3000

讯时O口MX8网关对接昆石软交换vos3000 一.讯时网关MX8设置: 1.登录网关 2.线路配置 解释:也就是接入的实际电话线路的电话号码,和接口一一对应即可. 3.线路中继配置 解释:中继功能也就是:通过 讯时网关中继→昆石软交换→到最终客户 绑定号码是要转接的号码:可以是一对一,可以是分机号. 最好是一对一,不容易出错. 中继绑定要线路一一绑定,一次修改一个,然后提交,再绑定下一个. 4.对接网关设置 解释:注册服务器ip写昆石软交换的ip: 注册方式:选择 按网关注册 用户名:是用来和

SVN版本库(访问权限)配置实例笔记

http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/8578297 作者:张建波 邮箱: [email protected] 电话:13577062679 欢迎来电交流! 访问控制如图所示 说明: why用户仅仅只能访问(读写)yjb目录,对其它目录是无法“查看

nginx 配置rewrite 笔记

nginx 配置rewrite笔记: 通过下面的示例来说明一下,1. 先说说location : location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样: location ^~ /public/ { root /data/wwwroot/a.php.abc.cc; } location ^~ /public/ 表示匹配以 "/public/" 开头的url,匹配成功执行其中的内容,执行完毕后停止并退出. location / { root /data/ww

redis 安装配置学习笔记

redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://download.redis.io/redis-stable.tar.gz 首先必须要有 gcc 与 make apt-get install gcc apt-get install make 1.解压 [email protected]:~# tar -xvf redis-stable.tar.gz 2.测

Chapter 2. OpenSSL的安装和配置学习笔记

Chapter 2. OpenSSL的安装和配置学习笔记 2.1 在linux上面安装OpenSSL我还是做点No paper事情比较在行,正好和老师的课程接轨一下.以前尝试过在Windows上面安装过openSSL,这次正好在Linux上面实现一下. 希望各位园友门纠错,征求意见中. 2.1.1 安装OpenSSL的系统环境和编译环境 测试环境:Linux MINT 16 Petra ? 1 2 3 4 5 6 $ lsb_release -a #查看linux发行版本系统信息 No LSB

linux配置服务器笔记

设置防火墙开放80端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 虽然看不懂是什么,但是这个是用于开放80端口的. 网上的教程实在坑到家了,手动输入老是输入错误,保存起来下次直接用. apache设置网站 设置监听的端口 Listen 80 Listen 8080 设置VirtualHost 默认的例子 #<VirtualHost *:80> ip:端口 # ServerAdmin [email prote

google-glog配置使用笔记

首先下载glog-0.3.3.tar.gz,解压,直接打开VS工程,我用了动态库, 新建win32 console test 把src\windows包含进来,../Debug/libglog.lib链接进来,这样就ok了. 新建main.cpp: #define GLOG_NO_ABBREVIATED_SEVERITIES #include <windows.h> #include <glog/logging.h> using namespace google; int main

ICMP协议-路由交换原理4-【HCNA笔记】

1.ICMP数据包格式 ICMP协议属于网络层,是TCP/IP协议族的一个子协议,ICMP数据包被封装在IP报文中.网络中传递的ICMP包示意如下,: ICMP数据包格式 帧头 IP报头 Data(ICMP包) FCS Type Code Checksum data 8位 8位 16位 按需要 Type:消息类型. Code:消息类型的具体参数. Checksum:校验字段,用于检查消息是否完整:在ICMP重定向消息中用于指定网关IP地址:在Echo Reply消息中这个字段包含标识符和序号.