FREESWITCH 填坑指南

轉接

1.查看網關注冊狀態 html

sofia statusjson

 

2.橋接(未實踐) http://wiki.freeswitch.org.cn/wiki/Mod_lua.html#jump10237服務器

freeswitch.bridge

session1 = freeswitch.Session("sofia/internal/1001%192.168.1.1");
session2 = freeswitch.Session("sofia/internal/1002%192.168.1.1");
freeswitch.bridge(session1, session2);

 

http://wiki.freeswitch.org.cn/wiki/Mod_lua.html#jump10237網絡

 

3.diaplan腳本中先呼叫一方,再轉接另外一方session

 1  prefix = "{ignore_early_media=true}sofia/192.168.150.132/"
 2  file_to_play = "/usr/local/freeswitch/sounds/custom/8000/sound.wav"
 3   
 4  function call_number(number)
 5    dial_string = prefix .. tostring(number);
 6    -- debug("calling " .. dial_string);
 7    session = freeswitch.Session(dial_string);
 8    session:setAutoHangup(false)
 9    session:transfer("5002", "XML", "default")
10    return session:hangupCause()
11  end
12  hangup_cause = call_number("1012")

 

freeswitch下執行lua腳本運行app

luarun autodia.lua param1

 

若是經過客戶端執行,能夠調用fs_cli ,調用完成後退出客戶端命令以下:socket

bin/fs_cli -x "luarun autodia.lua param1"

 

 

 

 

 4.fs_cli鏈接不上問題

 a.能夠看8021端口是否使用,若是是的tcp

 

相關配置文件 conf/autoload_configs/event_socket.conf.xmloop

 <configuration name="event_socket.conf" description="Socket Client">
   <settings>
     <param name="nat-map" value="false"/>
- <param name="listen-ip" value="::"/>
+ <param name="listen-ip" value="127.0.0.1"/>
     <param name="listen-port" value="8021"/>
     <param name="password" value="ClueCon"/>
- <!--<param name="apply-inbound-acl" value="loopback.auto"/>-->
- <!--<param name="stop-on-bind-error" value="true"/>-->
+ <!--<param name="apply-inbound-acl" value="lan"/>-->
   </settings>
 </configuration>this

配置改爲以下配置便可

<configuration name="event_socket.conf" description="Socket Client">
  <settings>
    <param name="nat-map" value="false"/>
    <param name="listen-ip" value="127.0.0.1"/>
    <param name="listen-port" value="8021"/>
    <param name="password" value="ClueCon"/>
    <!--<param name="apply-inbound-acl" value="loopback.auto"/>-->
    <!--<param name="stop-on-bind-error" value="true"/>-->
  </settings>
</configuration>

 

 

 

b. ip最好改爲本機,否者仍有可能拒絕訪問

 

 

5.FREESWITCH轉接語音到MRCP Server接收到的音頻音質極差問題

  通常是FREEWTICH與終端的音頻編碼和與MRCP Server的編碼不一致致使(終端音頻碼率較高),FS進行轉碼時失真過大,SF轉碼能力可能有些欠缺。經過修改FREESWITCH 目錄下conf/vars.xml 將 global_codec_prefs 配置限制爲MRCP Server可以接收的編碼便可。

<X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMU,PCMA"/>

 

 

6.單模塊編譯安裝

當已經安裝好freeswitch,須要安裝一個未安裝的模塊步驟

1.進入freeswitch-version源碼目錄

修改module.conf 啓動你的安裝的模塊如mod_json_cdr

2.進入src/mod目錄下,make mod_json_cdr

3.在src/mod目錄下 make mod_json_cdr-install  

4.在FREESWITCH控制檯 load mod_json_cdr

 

 

 

7.集成mod_unimrcp 並對接unimrcpserver

 a.FREESWITCH源碼根路徑下,修改modules.conf文件,取消「asr_tts/mod_unimrcp」配置的註釋

    b. make mod_unimrcp;make mod_unimrcp-install 集成mod_unimrcp模塊

 c.切換到安裝目錄。新建文件conf/mrcp_profiles/unimrcpserver-mrcp-v2.xml,具體配置以下,注意修改ip和端口

<include>
  <!-- UniMRCP Server MRCPv2 -->
  <!-- 後面咱們使用該配置文件,均使用 name 做爲惟一標識,而不是文件名 -->
  <profile name="unimrcpserver-mrcp2" version="2">
    <!-- MRCP 服務器地址 -->
    <param name="server-ip" value="127.0.0.1"/>
    <!-- MRCP SIP 端口號 -->
    <param name="server-port" value="8060"/>
    <!-- <param name="resource-location" value=""/> -->

    <!-- FreeSWITCH IP、端口以及 SIP 傳輸方式 -->
    <param name="client-ip" value="127.0.0.1" />
    <param name="client-port" value="5069"/>
    <param name="sip-transport" value="udp"/>


    <!-- <param name="speechsynth" value="speechsynthesizer"/> -->
    <!-- <param name="speechrecog" value="speechrecognizer"/> -->
    <!--param name="rtp-ext-ip" value="auto"/-->
    <param name="rtp-ip" value="127.0.0.1"/>
    <param name="rtp-port-min" value="4000"/>
    <param name="rtp-port-max" value="5000"/>
    <param name="codecs" value="PCMU PCMA L16/96/8000"/>

    <!-- Add any default MRCP params for SPEAK requests here -->
    <synthparams>
    </synthparams>

    <!-- Add any default MRCP params for RECOGNIZE requests here -->
    <recogparams>
      <!--param name="start-input-timers" value="false"/-->
    </recogparams>
  </profile>
</include>

 

 d.conf/autoload_configs/unimrcp.conf.xml修改配置,將mrcp對接server選擇爲上面配置的server,使用profile name熟悉值

    <!-- UniMRCP profile to use for TTS -->
    <param name="default-tts-profile" value="unimrcpserver-mrcp2"/>
    <!-- UniMRCP profile to use for ASR -->
    <param name="default-asr-profile" value="unimrcpserver-mrcp2"/>

 

 e. conf/autoload_configs/modules.conf.xml增長以下配置項,讓fs啓動時自動加載該模塊

<load module="mod_unimrcp" />

 

8.sip、rtp對接配置,修改conf/sip_profiles/external.xml。若是走的是代理等網絡,須要視狀況將auto-nat改成外部ip(若是本機即有外部ip或者對端支持nat,則可能不須要配置)。

    <param name="ext-rtp-ip" value="auto-nat"/>
    <param name="ext-sip-ip" value="auto-nat"/>

 

9.對接mod_format_cdr

  a.編譯安裝模塊,同上

  b.啓用模塊,同上

  c.配置,修改 conf/autoload_configs/format_cdr.conf.xml,其中幾個配置項須要修改

  

<!-- 配置格式 -- >
<param name="format" value="json"/>
<!-- 回調監聽地址 -- >
<param name="url" value="http://sms-agent-idc.vpc.tencentyun.com/aicsCall/cdr/callRecord.do"/>
<!-- key格式配置,appljson能夠傳遞jsonbody,可是header處理彷佛有問題,只能是application/x-www-form-urlencoded,所以使用默認配置 -- >
<param name="encode" value="true"/>
<!-- val是否進行URL編碼 -- >
<param name="encode-values" value="false"/>

 

10.禁用ipv6,若是系統不支持,可能會刷以下錯誤信息,禁用便可

2018-09-14 17:55:34.161271 [ERR] sofia.c:3146 Error Creating SIP UA for profile: external-ipv6 (sip:mod_sofia@[::1]:5080;transport=udp,tcp) ATTEMPT 2 (RETRY IN 5 SEC)
2018-09-14 17:55:34.161271 [ERR] sofia.c:3146 Error Creating SIP UA for profile: internal-ipv6 (sip:mod_sofia@[::1]:5060;transport=udp,tcp) ATTEMPT 2 (RETRY IN 5 SEC)
2018-09-14 17:55:39.161270 [ERR] sofia.c:3146 Error Creating SIP UA for profile: external-ipv6 (sip:mod_sofia@[::1]:5080;transport=udp,tcp) ATTEMPT 3 (RETRY IN 5 SEC)
2018-09-14 17:55:39.161270 [ERR] sofia.c:3156 Error Creating SIP UA for profile: external-ipv6 (sip:mod_sofia@[::1]:5080;transport=udp,tcp)
The likely causes for this are:
1) Another application is already listening on the specified address.
2) The IP the profile is attempting to bind to is not local to this system.
2018-09-14 17:55:39.161270 [ERR] sofia.c:3146 Error Creating SIP UA for profile: internal-ipv6 (sip:mod_sofia@[::1]:5060;transport=udp,tcp) ATTEMPT 3 (RETRY IN 5 SEC)
2018-09-14 17:55:39.161270 [ERR] sofia.c:3156 Error Creating SIP UA for profile: internal-ipv6 (sip:mod_sofia@[::1]:5060;transport=udp,tcp)
The likely causes for this are:
1) Another application is already listening on the specified address.
2) The IP the profile is attempting to bind to is not local to this system.  

禁用方式:

mv conf/sip_profiles/internal-ipv6.xml conf/sip_profiles/internal-ipv6.xml.bk
mv conf/sip_profiles/external-ipv6.xml conf/sip_profiles/external-ipv6.xml.bk
相關文章
相關標籤/搜索