FreeSWITCH


2:SIP可使用TCP或UDP承载,但RTP数据一般只使用UDP承载。
3:sofia profile internal rescan          
4:sofia status profile internal
5:execute_on_originate    originate 执行成功后可以执行一个API或lua脚本
6:FS呼叫命令:/usr/local/freeswitch/bin/fs_cli -x "bgapi originate {ignore_early_media=true,session_in_hangup_hook=true}[execute_on_answer='sched_hangup +60',                    sip_cid_type=rpid,origination_caller_id_number=82064007,api_hangup_hook='lua calllog.lua 30']sofia/external/13133805390@171.34.165.121:5077   '&lua(calltask.lua 30)'"
7:file = io.open("con/usr/local/freeswitch/scripts/config.xml", "r");  --打开xml文件   问题:路径出错导致FS 挂掉
8:originate { }sofia/example/1000@somewhere.com &javascript(test.js)  接了以后才会进入的脚本
   <action application="set" data="api_hangup_hook=jsrun cleanup.js ${uuid}"/>  挂断以后进入的脚本
   originate [execute_on_answer='sched_hangup +20',api_hangup_hook='lua calllog.lua 31']user/1000001 '&lua(calltask.lua 31)'
 9:session:hangup() LUA挂机后就会往下执行,但会返回到上面的循环出 从而导致死循环
    10:问题 lua的版本为5.2以下不支持位运算函数bit32, 解决方案:自己写个位运算函数
    11:type(arg)  lua中函数type可以测试给定变量或者值的类型
    12:lua碰到语法错误是就不会继续往下走 如果在循环里面的话可能导致无限循环
    13: lua -v  查看lua的版本
    14: ./configure --enable-core-pgsql-support
   15:问题: fs_cli连接不上  解决办法:
    /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml
    <!--<param name="listen-ip" value="::"/>-->  换成
    <param name="listen-ip" value="127.0.0.1"/>   --重启fs
    <param name="listen-port" value="8021"/>
16:SIP协议返回码:
        1** 临时状态  
        2** 成功收到,理解,接受
        3** 重定向, SIP请求需要转到另一个UAS(代理服务器)处理
        4** 请求失败,客户端或网络引起
        5** 服务器内部错误  服务器出错,不能响应合法请求
        6** 全局性错误  如600 Busy Everywhere
    HTTP协议返回码:
        1** 临时响应
        2** 成功响应
        3** 重定向
        4** 客户端出错
        5** 服务端出错
17:问题  -- 外呼呼不出去   处理 --- 网关的IP地址设置错误
18:--呼入时   满意度的变量设置在 a_leg     外呼时  设置在b_leg
     session:execute("set","transfer_after_bridge=9999:XML:c" ..row.company_code) --客服挂机后转到9999执行满意度调查 --呼入
     session:execute("set","nolocal:transfer_after_bridge=9999:XML:c" ..row.company_code)   ---外呼
    19:语音留言文件的路径 /usr/local/freeswitch/storage/voicemail/default/192.168.18.13/101000
    20: /usr/local/freeswitch/conf/autoload_configs/voicemail.conf.xml  
<param name="record-silence-threshold" value="2000"/>   -- 沉默门槛 ms
    <param name="record-silence-hits" value="2"/>  
    21:/usr/local/freeswitch/conf/sip_profiles/external/gw.xml   --- 网关的路径
    22:reloadxml
        reload mod_voicemail
        reload mod_callcenter
        sofia profile external rescan  ---重载 profile external
        sofia status profile internal reg  ---查看哪些分机注册
        sofia profile internal rescan  ---重载 profile internal       
        sofia status profile internal
         profile internal stop/start/restart   停止、启动、重启 internal
        sofia profile internal rescan  重读参数
        sofia profile internal siptrace on/off    打开、关闭跟踪SIP消息
        sofia profile external register geatwayname    注册
        sofia profile external unregister geatwayname  注销
        sofia profile external killgw geatwayname  删除一个网关

23:在LUA dbh:query(sql, function(row)  ...  end)回调函数中如果没查出数据则不会执行该函数   注意里面的变量
24:originate {ignore_early_media=true,eoc_direction=1}[origination_uuid=100000116788_20150919164832,customer_phone=18507080036]sofia/gateway/23541692/13767463150                 &bridge([transfer_after_bridge=9999:xml:c1000001,execute_on_answer=record_session::/samton/file/rec/20140920/${uuid}.wav]sofia/gateway/23541692/18507080036)
25:originate 呼叫字符串, exten(会将通道转入Dialplan去路由)或&APP, Dialplan的类型(不设置默认就是XML), Context, 主叫名称, 主叫号码, 超时时间(秒)  ----阻塞                  bgapi(防阻塞
    originate sofia/gateway/gatewayName/018720286753 079182207568 xml c1000001  'Outbound Call' 18720286753
    originate {ignore_early_media=true}sofia/external/18507080036@192.168.18.5:5060  &bridge({hangup_after_bridge=false,transfer_after_bridge=9999:xml:default}sofia/                external/13767463150@192.168.18.5:5060)
    originate user/1000,user/1001 &echo  同振
    originate user/1000|user/1001 &echo  顺振
26:网关设置 如果本地号码加0的话会打不通
26:问题:FS一直报:[WARNING] mod_callcenter.c:2123 Queue 1000@1000001 not found locally, skip this member  警告   的原因: 1000@1000001队列已删除但是EOC_PBX库的members        表中该队列的相关数据没删除,mod_callcneter模块会有个进程扫描该表,找不到members表中的 1000@100000队列从而发出警告  解决办法  删除members表中的多余数据
27:队列中如果没有设置彩铃播放默认彩铃 member表中的state为Trying  如果设置了彩铃 member表中的state为Waiting
28:无法呼叫---SA系统中该公司没绑定中继号
29:nc -l -k localhost 8040
    nc localhost 8040
30:    callcenter_config agent set status 666666111@666666 'Logged Out'
        callcenter_config agent set contact 1000@default user/1000
        callcenter_config tier add [queue name] [agent name] [[level]] [[position]]
        callcenter_config tier set [key(state|level|position)] [queue name] [agent name] [value]
        callcenter_config tier del [queue name] [agent name]
        callcenter_config tier list
31:报工号app   ---  sched_broadcast  报工号
    报工号实现思路
在桥接B腿之前,执行LUA脚本,给两边放彩铃,需要在拨号方案中加入如下拨号计划
<action application="set" data="bridge_pre_execute_aleg_app=lua"/>
<action application="set" data="bridge_pre_execute_aleg_data=/home/job_num.lua"/>
<!--报工号控制-->(vim /usr/local/freeswitch/conf/vars.xml )
<X-PRE-PROCESS cmd="set" data="bridge_pre_execute_aleg_app=lua"/>
<X-PRE-PROCESS cmd="set" data="bridge_pre_execute_aleg_data=/home/job_num.lua"/>
32:如果  hangup_after_bridge = true,这时A也直接挂机
    如果  hangup_after_bridge = false,则A继续向后执行
33:queue 中 callback(onhook)类型的坐席  --- 如果有电话分配到该坐席时,FreeSwitch将会会叫坐席
    uuid-standby(offhook)类型坐席 --- 坐席需要首先拨入FreeSwitch 建立一个呼叫
34:https://freeswitch.org/confluence/display/FREESWITCH/mod_callcenter
    https://freeswitch.org/confluence/display/FREESWITCH/Variables#Variables-answerusec   api_hangup_hook
    https://wiki.freeswitch.org/wiki/Mod_callcenter#callcenter_config   呼叫中心api
    http://docs.freeswitch.org/group__switch__ivr__menu.html#gc92d5ee06dedf739d12b96041b1079b4   //ivr<menu>的字段解析
    http://www.8000hz.com/archives/freeswitch-git-compile-1-7.html
35:call_strategy IS '
        1、ring-all所有振铃
        2、longest-idle-agent空闲时长最长振铃
        3、round-robin记忆振铃
        4、top-down 顺序振铃
        5、agent-with-least-talk-time通话时长最小振铃、
        6、agent-with-fewest-calls接听最少振铃
        7、sequentially-by-agent-order优先级振铃、
        8、random随机振铃
        9、技能优先
36:autoload_configs/acl.conf.xml
<node type="allow" cidr="192.168.18.0/24"/>  3*8=24表示前面24位固定为192.168.18 最后八位可以为0-255的任意一个值,意思就是允许       18段的IP访问
37:  NWE-->INIT-->ROUTING-->EXECUTE-->HANGUP-->REPORTINT-->DESTROY   7步
38:freeswitch 默认配置中 external.xml 对应的Profile是不鉴权的,因此凡送到5080端口的 INVATE 都不需要鉴权
   <param name="auth-calls" value="false"/>   /usr/local/freeswitch/conf/sip_profiles/external.xml 中  它收到的INVITE 不会鉴权  会使用 <param name="context"                      value="public"/>中的context
39:<X-PRE-PROCESS cmd="set" data="internal_auth_calls=true"/>    /usr/local/freeswitch/conf/vars.xml
 <param name="auth-calls" value="$${internal_auth_calls}"/>    /usr/local/freeswitch/conf/sip_profiles/internal.xml   中  它收到的 INVITE 需要鉴权 ,如果经过了鉴权认证就        会找到一个用户,会使用<variable name="user_context" value="c1000001"/> 中的user_context    /usr/local/freeswitch/conf/directory/c1000001/xxx.xml   用户目录中的                 user_context 比 Profile中的context的优先级高
40:分机互打的路由 :  /usr/local/freeswitch/conf/dialplan/outbound/ c公司code.xml   里面
41:/usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml  ESL服务器的密码
   /usr/local/src/freeswitch-1.4.6/libs/esl/fs_cli.c  (源码)1359行  fs_cli连ESL接服务器的密码
 42:  inbound 来话     outbound 去话    internal 5060      external 5080
 43:问:voicemail <profile_name> <domain_name> profile_name  是指什么配置文件名?
  答:/usr/local/freeswitch/conf/autoload_configs/voicemail.conf.xml 里的配置名   <profile name="default">
    44:timeout 超时时间 (毫秒)
        max-failures 容忍用户按键错误次数
        max-timeouts 最大超时次数
        inter-digit-timeout  两次按键的最大间隔时间(毫秒)
            confirm-macro="*" 确定宏(位数不足用*补)   
        confirm-key="#" 按#号键结束
        confirm-attempts="0"  确定次数
45:SIP消息分为请求和响应两类,  响应消息都包含一个状态码和一个原因短语
freeswitch> xml_curl debug_on

 
 originate user/1000 &echo  
originate user/1000 9999             (相当于在软电话1000上拨打9999)
freeswitch> originate user/1000 9999 XML default (同上)

sofia status profile internal reg  (显示多少用户已注册
sofia status profile internal (显示多少用户已注册

如果需要引用这些变量,则全局变量以$${var}表示,临时变量以${var}表示。
在实际使用中,可以使用global_getvar或这个API命令来查看这些变量的值,
如:
freeswitch> global_getvar sound_prefix
/usr/local/freeswitch/sounds/en/us/callie
freeswitch > global_getvar local_ip_v4
192.168.7.6

   ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/
   ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/

 make mod_modname install
APP 和 API的本质区别:
一个App是一个程序(Application),它作为一个Channel一端与另一端的UA进行通信,相当于它工作在Channel内部;
而一个API则是独立于一个Channel之外的,它只能通过找到Channel的UUID来控制一个Channel(如果需要的话),相当于一个第三者。
(App)——echo、park、bridge
(API)——originate和uuid_bridge,
uuid_bridge API和bridge App有些类似。我们知道它们一个是先呼叫后桥接,另一个是先桥接后呼叫

set App可以给变量赋值:
<action application="set" data="my_var=my_value"/>
另外,export可以对a-leg和b-leg同时赋值(即使此时b-leg还不存在):
<action application="export" data="my_var=my_value"/>
以上两条命令都可以将my_var变量的值设置为my_value。
不同的是set程序仅会作用于当前的Channel(a-leg),
而export程序则会将变量设置到两个Channel(a-leg和b-leg)上,
如果当时b-leg还没有创建,则会在创建时设置。


kill -HUP   pid
sofia profile internal rescan
sofia prifile external rescan

sofia status profile internal   ffmpeg
mod_fsv

/usr/local/freeswitch/conf/autoload_configs/switch.conf.xml   设置RTP端口范围

http://wiki.freeswitch.org/wiki/FreeSwitch_FAQ

CS_NEW       - Channel is newly created.
CS_INIT      - Channel has been initialized.
CS_ROUTING   - Channel is looking for an extension to execute.
CS_SOFT_EXECUTE  - Channel is ready to execute from 3rd party control.
CS_EXECUTE   - Channel is executing it's dialplan.
CS_EXCHANGE_MEDIA  - Channel is exchanging media with another channel.
CS_PARK      - Channel is accepting media awaiting commands.
CS_CONSUME_MEDIA                 - Channel is consuming all media and dropping it.
CS_HIBERNATE - Channel is in a sleep state.
CS_RESET          - Channel is in a reset state.
CS_HANGUP    - Channel is flagged for hangup and ready to end.
CS_REPORTING - Channel is ready to collect call detail.
CS_DESTROY      - Channel is ready to be destroyed and out of the state machine.

${strftime(%Y-%m-%d-%H-%M-%S)}

没有日志文件:  
vi  freeswitch/modules.conf
添加:loggers/mod_logfile
重新编译
 vi  /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
<load module="mod_logfile"/>

搭建企业PBX ,软交换 ,需要SIP软交换源码的请联系 330586792@qq.com

posted @ 2020-07-22 21:17  toa  阅读(1893)  评论(0编辑  收藏  举报