Freeswitch-インストールとSIPML5との統合

この記事では、FreeswitchとSIPML5のインストールと構成について説明すると同時に、発生した問題の解決についてお話しします。この記事が有用であり、少なくとも、同様のタスクに直面している人々の時間を節約できることを願っています。 それでは始めましょう!



CentOS 6.6をOSとして使用しましたが、それに限定されず、Ubuntu 12.04および14.04にインストールしてみました。インストールプロセス中に発生した問題について書きます。



システムを更新し、SELinuxを無効にして、必要な依存関係をインストールします。



yum install git gcc-c++ autoconf automake libtool libogg-devel wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel patch libICE
      
      











Freeswitchをインストールします。



 cd /usr/src git clone https://freeswitch.org/stash/scm/fs/freeswitch.git cd /usr/src/freeswitch ./bootstrap.sh –j
      
      







必要なモジュールを接続し、modules.confを編集します。



 mod_rtmp mod_directory mod_callcenter mod_tts_commandline mod_dingaling mod_flite mod_shout mod_cidlookup mod_curl mod_xml_curl
      
      







Freeswitchのインストールの継続:



 ./configure -C make make install
      
      







サウンドファイルをインストールします。念のため、すべてを入れてください。



 make sounds-install make moh-install make hd-moh-install make hd-sounds-install make uhd-moh-install make uhd-sounds-install make cd-sounds-install make cd-moh-install
      
      







ロシア語のサウンドファイルをインストールします。



 make sounds-ru-install make cd-sounds-ru-install make uhd-sounds-ru-install make hd-sounds-ru-install
      
      







Freeswitchユーザーを追加します。



 useradd --system --home-dir /usr/local/freeswitch freeswitch passwd -l freeswitch
      
      







FreeSwitchファイルの権利と所有者を設定します。



 chown -R freeswitch:freeswitch /usr/local/freeswitch/ chmod -R g+w /usr/local/freeswitch/ cp /usr/src/freeswitch/build/freeswitch.init.redhat /etc/init.d/freeswitch && chmod +x /etc/init.d/freeswitch cp /usr/src/freeswitch/build/freeswitch.sysconfig /etc/sysconfig/freeswitch cat >> /etc/sysconfig/freeswitch <<EOT PID_FILE=/var/run/freeswitch/freeswitch.pid FS_USER=freeswitch FS_FILE=/usr/local/freeswitch/bin/freeswitch FS_HOME=/usr/local/freeswitch EOT chkconfig --level 5 freeswitch on
      
      







デフォルトのFreeSwitch構成を削除し、CLIへのリンクを追加します。



 rm -rf /usr/local/freeswitch/conf/dialplan/default/00* /usr/local/freeswitch/conf/dialplan/default/01_Talking_Clock.xml cd /usr/local/bin/ && ln -s /usr/local/freeswitch/bin/fs_cli fs_cli
      
      







おそらく最初にすることは、すべてのユーザーのデフォルトのパスワードを変更することと、ボイスメールのパスワードを変更することです。



 /usr/local/freeswitch/conf/vars.xml <X-PRE-PROCESS cmd="set" data="default_password=__"/>
      
      







ロシア語のメッセージを含める:



 /usr/local/freeswitch/conf/vars.xml <X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/ru/RU/elena"/>
      
      







必要なコーデックをインストールします。G711のみを使用しました。



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







すべての内線通話の会話の記録を有効にする必要がある場合:



 /usr/local/freeswitch/conf/dialplan/default.xml
      
      







「Local_Extension」を見つけて、次の行を追加します。



 <action application="record_session" data="$${base_dir}/recordings/${strftime(%Y%m%d_%H%M%S)}_${caller_id_number}_${destination_number}.wav"/>
      
      







fs_cli -x“ reloadxml”コマンドで変更を適用します。 会話の記録はすべて、ディレクトリ/ usr / local / freeswitch / recordings /に保存されます。



SIPML5のセットアップに移りましょう。 Websocketトランスポートをアクティブにします。



 /usr/local/freeswitch/conf/sip_profiles/internal.xml <param name="ws-binding" value=":5066"/>
      
      







Freeswitchを起動し、Webソケットがアクティブになっていることを確認します。



 fs_cli -x "sofia status profile internal" | grep WS-BIND-URL WS-BIND-URL sip:mod_sofia@XXXX:5066;transport=ws
      
      







セットアップは完了しましたが、FreeswitchとSIPML5で動作するいくつかの問題があることがわかりました。これについて説明します。



問題番号1:



SIPML5からSIP電話機またはSIPML5クライアントにコールすると、コールはn秒後にリセットされます(通常は60秒後に)。 この奇妙な動作の理由は、Webクライアントとサーバー「Session-Expires:120; refresher = uas」の間でパケットを交換する問題であることが判明しました。RFC4028 SIPセッションタイマータイマーを無効にすることで問題を解決できます。



 /usr/local/freeswitch/conf/sip_profiles/internal.xml <param name="enable-timer" value="false"/>
      
      







問題番号2:



突然、デュアルDTMFモードをオンにすることにしたSIPML5クライアントのDTMFに問題がありました(RFC2833とINFOを受け入れますが、RFC2833を提供します)。



 /usr/local/freeswitch/conf/sip_profiles/internal.xml <param name="liberal-dtmf" value="true"/>
      
      







問題番号3:



判明したように、このバンドルは、opensslのバグのためにUbuntu 12.04 OSで動作することを望んでいません。これについては、ここで説明しています: freeswitch.org/jira/browse/FS-6431、opensslパッケージを更新することで解決します。



All Articles