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パッケージを更新することで解決します。