zoukankan      html  css  js  c++  java
  • 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{4,})$">
    <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/blah1@baz.com|sofia/default/johndoe@example.com|[sip_secure_media=false]sofia/default/janedoe@acme.com

    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/5001@192.168.1.2 &bridge(sofia/gateway/gw1/xxxxxxxxxx)

  • 相关阅读:
    python项目_mysql开启事务
    python项目_ImageField字段
    linux基础_常用命令
    mysql数据_查询操作
    list 和 tuple——python基础学习
    python-格式化
    python-字符串
    数学——变上限积分的应用
    python-交互模式
    蓝桥杯——汉诺塔问题
  • 原文地址:https://www.cnblogs.com/kennyhr/p/3964771.html
Copyright © 2011-2022 走看看