アスタリスク+ FreeSwitch + Skype。 詳細ガイド





Habrの住民の皆さん、良い一日を!



Asteriskに基づくvoip-serversのインストールの経験があるため、Skypeと組み合わせたAsteriskに基づくコールセンターのインストールに関する詳細なガイドを提供することにしました。 Skypeの普及を考慮して、このネットワークは多くの企業のコールセンターで使用されるようになりました。 彼女の公式クライアントを使用すると、可能性が大幅に制限されます。 このアセンブリを使用すると、Skypeネットワークからの同時通話の数を増やすことができます。



1.サーバーの更新


必要なパッケージとアップデートをすべてインストールします。 コンソールで、次のコマンドを入力します。

apt-get update apt-get upgrade apt-get install build-essential mc automake autoconf bison flex libtool libncurses5-dev libssl-dev dahdi-source subversion x11vnc yate-qt4 yate-mysql yum op-panel apt-get -f install apt-get install yate-qt4 yate-mysql yum op-panel
      
      







2.安全上の注意


ほとんどの場合、サーバーをインストールした直後に、パスワードの選択はサーバーへのsshプロトコルの標準ポート(22)を使用して開始されます。 神が禁じている場合、「ソーター」に知られている標準パスワードを設定し、サーバーがキャプチャされ、すべての重要なデータが削除されます。 最も簡単な方法は、ポート番号を変更することです:



 nano /etc/ssh/sshd_config
      
      





(ほとんど最初に)行22を見つけます。 数字の22を好きなように無限に変更します(65535以下が望ましい)。 sshを再起動します。



 /etc/init.d/ssh restart
      
      





3.アスタリスクをインストールする


3.1。 すべてがリポジトリからインストールされます。



 apt-get install asterisk asterisk-mp3 asterisk-mysql asterisk-ooh323c asterisk-h323 asterisk-sounds-main asterisk-moh-opsound-g722 asterisk-moh-opsound-gsm asterisk-moh-opsound-wav
      
      





3.2。 Web GUIのインストール:



 mkdir -p /root/asterisk/asterisk-gui cd /root/downloads/asterisk-gui/ svn checkout http://svn.digium.com/svn/asterisk-gui/trunk asterisk-gui svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0/ cd /root/downloads/asterisk-gui/2.0/ ./configure make make install # (  /var/lib/asterisk/) cp -r /etc/asterisk /etc/asterisk.backup chown -R asterisk:asterisk /var/lib/asterisk/
      
      





3.3。 ログイン情報をmanager.confファイルに追加します。



 nano /etc/asterisk/manager.conf enabled = yes webenabled = yes port = 5038 bindaddr = 127.0.0.1 [root] secret = toor read = system,call,log,verbose,command,agent,user,config write = system,call,log,verbose,command,agent,user,config
      
      





「root」はサーバー管理者、「toor」は管理者パスワードです。

http.confの編集:



 nano /etc/asterisk/http.conf
      
      







 enabled=yes enablestatic=yes bindaddr = 127.0.01 redirect = / /static/config/cfgbasic.html [post_mappings] backups = /var/lib/asterisk/gui_backups
      
      





3.4。 完了するために必要な手順を実行します



 cd /root/downloads/asterisk-gui/2.0/ make checkconfig
      
      





シンボリックリンクを作成する前に、フォルダー/ usr / share /アスタリスク/ static-http /を削除します。



 ln -s /var/lib/asterisk/static-http/ /usr/share/asterisk/ mk dir /usr/share/asterisk/static-http/config chmod 777 /usr/share/asterisk/static-http/config /etc/init.d/asterisk restart
      
      





チェック:



Ubuntuでは、Asterisk Webサーバーのルートディレクトリは/ usr / share / asterisk / static-http /にあります。

GUIは/ var / lib / asterisk / static-httpにインストールされるため、空のフォルダーを削除する必要があります。



 rmdir /usr/share/asterisk/static-http/
      
      





そしてリンクを作成します:



 ln -s /var/lib/asterisk/static-http/ /usr/share/asterisk/ cd ~/asterisk-gui/ sudo make checkconfig
      
      





3.5。 アスタリスクの開始と停止



アスタリスクをインストールした場合、次のコマンドで実行できます。



 /usr/src/asterisk -vvvgc
      
      





「今すぐ停止」コマンドを使用して、CLIからアスタリスクを停止できます。

引数なしで、アスタリスクはデーモンとして起動します。



 /usr/sbin/asterisk
      
      





引数 'r'を使用してコマンドインターフェイス(CLI)に接続できます。



 /usr/sbin/asterisk -r   asterisc -r
      
      





完全に再起動せずに構成ファイルを再起動する:



 asterisk -rx reload
      
      





GUIが「guiフォルダーの書き込み許可の確認」でハングした場合:

最初に、ファイル/var/lib/asterisk/static-http/config/js/astman.jsの行を置き換える必要があります



 timeout : '60000'
      
      







 timeout : '6'
      
      







これで解決しない場合は、すべての権限をリセットします。



 chown -R asterisk:asterisk /var/lib/asterisk/ chmod -R 777 /var/lib/asterisk/ chown -R asterisk:asterisk /etc/asterisk/ chmod -R 777 /etc/asterisk/
      
      





3.6。 アスタリスクグループとユーザーを作成する



 /usr/sbin/groupadd asterisk /usr/sbin/useradd -d /var/lib/asterisk -g asterisk asterisk
      
      





3.7。 権利の変更



以下のファイルを使用するように許可を変更します。



 chown --recursive asterisk:asterisk /var/lib/asterisk chown --recursive asterisk:asterisk /var/log/asterisk chown --recursive asterisk:asterisk /var/run/asterisk chown --recursive asterisk:asterisk /var/spool/asterisk chown --recursive asterisk:asterisk /usr/lib/asterisk chown --recursive asterisk:asterisk /etc/asterisk/
      
      





## Zaptelを使用している場合:



 chown --recursive asterisk:asterisk /dev/zap
      
      





## DAHDIを使用している場合



 chown --recursive asterisk:asterisk /dev/dahdi
      
      





#------------------------------------------------- ---



 chmod --recursive u=rwX,g=rX,o= /var/lib/asterisk chmod --recursive u=rwX,g=rX,o= /var/log/asterisk chmod --recursive u=rwX,g=rX,o= /var/run/asterisk chmod --recursive u=rwX,g=rX,o= /var/spool/asterisk chmod --recursive u=rwX,g=rX,o= /usr/lib/asterisk
      
      





## Zaptelを使用している場合



 chmod --recursive u=rwX,g=rX,o= /dev/zap
      
      





## DAHDIを使用している場合



 chmod --recursive u=rwX,g=rX,o= /dev/dahdi
      
      





#------------------------------------------------- ---



 chown --recursive asterisk:asterisk /etc/asterisk chmod --recursive u=rwX,g=rX,o= /etc/asterisk
      
      





3.8。 アスタリスクディレクトリ



/ usr / lib /アスタリスク/モジュール:バイナリファイル(モジュール、コーデック)が含まれています。

/ var / lib /アスタリスク:可変データ(サウンド、スクリプトなど)が含まれています。

/ var /スプール/アスタリスク:操作中に作成されたファイル(音声メッセージ、発信通話など)。

/ var / log /アスタリスク:ログ、呼び出し情報。

/ etc /アスタリスク:アスタリスク構成ファイル。



構成:

musiconhold.conf-MusicOnHoldの「保留音楽」設定の設定。

cdr_mysql.conf-MySQLの呼び出しレコードのストレージを設定します。

manager.conf-Managerインターフェースの構成。

meetme.conf-会議(meetme)を構成します。

mgcp.conf-MGCPデバイス設定を構成します。

parking.conf-コールパーキングコールを駐車するためのパラメータ。

voicemail.conf-ボイスメール設定(VoiceMail)。

agents.conf-アスタリスクエージェント。

extensions.conf-アスタリスクのナンバープレート。

iax.conf-IAXデバイスの構成。

modem.conf-ISDN4Linuxを使用してISDNを構成します。

vpb.conf-Voicetronixハードウェアの構成。

alsa.conf-コンソールユーザーのALSAサウンドドライバー設定。

festival.conf-フェスティバルスピーチシンセサイザーを使用するためのパラメーター。

modules.conf-アスタリスクモジュールの構成。

zapata.conf-アナログテレフォニーデバイスdigiumの構成。

asterisk.conf-アスタリスクディレクトリを見つけます。

dications.conf-さまざまな国のアナログ自動電話交換のパラメーターを設定します。

rpt.conf-rtpプロトコルパラメータ。

logger.conf-アスタリスクのロギングオプション。



Asterisk Web GUIコントロールパネルは、 host :8088で使用できます。hostは、Asteriskが配置されているサーバーのアドレスです。



3.9 Web GUIを介したAsteriskの構成



トランクス。 VoIPトランク:

プロバイダー名:SIBNET

ホスト名:sibnet.ru

ユーザー名:user123

パスワード:pass123

発信者番号:ユーザー

FromDomain:sibnet.ru

FromUser:user123



発信ルール:

呼び出し規則名:世界

パターン:_XXXXXXXXXXXX

発信者番号:管理者

宛先:6001

トランクを使用:SIBNET



DialPlans:

DialPlan Name:ユーザー

発信規則を含める:世界

ローカルコンテキストを含める:デフォルトのパークされた通話会議リンググループ音声メニューキュー音声メールグループディレクトリページグループpage_an_extension



着信ルール:

パターン:_XXXXXXXXXXXX

宛先:6001



4. Skypeのインストールに進みます


4.1。 ファイル/etc/yum.repos.d/skype.repoを作成して追加します。



 [skype] name=Skype Repository baseurl=http://download.skype.com/linux/repos/fedora/updates/i586/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-skype
      
      





コマンドでインストール:

 yum --nogpgcheck install skype
      
      





またはパッケージから:



 wget www.skype.com/go/getskype-linux-deb apt-get -f install dpkg -i skype-debian_2.0.0.72-1_i386.deb  dpkg -i getskype-linux-deb aptitude install skype
      
      





4.2。 追加のパッケージをインストールする



rpm.pbone.netで、qt4、qt4-x11パッケージを検索、ダウンロード、インストールします。

また:



 yum install x11vnc  apt-get install x11vnc
      
      





4.3。 カスタマイズ



Skypeが動作するユーザーを取得します。



 adduser --home /home/skype --ingroup audio --disabled-password skype
      
      





Skypeが設定を読み取るディレクトリを作成します。



 mkdir -p /home/skype/multi/interface01 chown -R skype.audio /home/skype/multi
      
      





skypeがオフになる場合は、次の方法を試すことができます。

nanoまたはvim / usr / local / bin / skype_start次の内容:

ネタバレ
 #!/bin/sh SKYPE_SYSTEM_USER=skype SKYPE_HOME=/home/skype/multi SKYPE_USER=username SKYPE_PASSWORD=userpass SKYPE_INSTANCES=N XVFB=/usr/bin/Xvfb module_reload() { rmmod snd-dummy modprobe snd-dummy } skype_start() { for i in $(seq 1 $SKYPE_INSTANCES); do i=`printf "%02d" $i` $XVFB :1$i -ac >> /dev/null 2>&1 & sleep 3 su $SKYPE_SYSTEM_USER -c "/bin/echo '$SKYPE_USER $SKYPE_PASSWORD'| DISPLAY=:1$i /usr/bin/skype \ --dbpath=$SKYPE_HOME/interface$i --pipelogin >> /dev/null 2>&1 &" echo "Skype $i started" done } skype_stop() { kill -TERM `ps -u $SKYPE_SYSTEM_USER -o pid=` >> /dev/null 2>&1 sleep 3 kill -TERM `ps -C Xvfb -o pid=` >> /dev/null 2>&1 } case "$1" in start) module_reload sleep 3 skype_start ;; stop) skype_stop ;; restart) skype_stop sleep 3 skype_start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac
      
      







実行可能にします:



 chmod +x /usr/local/bin/skype_start
      
      





4.4。 打ち上げ



VNCサーバーを起動します



 aptitude install x11vnc /usr/bin/Xvfb :101 -ac & x11vnc -display :101
      
      





認証用のパスワードが保存されるファイルを作成します。



 mcedit /home/passwd
      
      





パスワードを作成:



 x11vnc -storepasswd 123456 /home/passwd
      
      





権利:



 chmod 777 /home/passwd chown rr /home/passwd
      
      





プロセス停止:



 ps ax | grep vnc kill 22062 # ( )
      
      





Skypeを開始する前に、次のモジュールを実行する必要があります。



 rmmod snd-dummy modprobe snd-dummy echo "snd_dummy" >> /etc/modules
      
      





Skypeを起動します。



 su skype -c "/bin/echo 'username userpass'| DISPLAY=:101 /usr/bin/skype --dbpath=/home/skype/multi/interface01 --pipelogin &" kill skype #  Skype ps aux # 
      
      





vncを介してサーバーに接続すると、前のステップで起動したSkypeを見ることができます。その設定では、余分なものをすべて削除する必要があります(イベントを無効にし、ステータスを自動的に変更するなど)、すべてのサウンドデバイスとしてダミードライバーを選択します(Dummy-HW 2.0) 。



5. FreeSwitchのインストール


5.1。 必要なライブラリのインストール:



 apt-get -y install build-essential subversion automake autoconf wget libtool libncurses5-dev xvfb libx11-dev libasound2-dev xfs xfonts-100dpi xfonts-75dpi xfonts-scalable apt-get install autoconf automake g++ git-core libjpeg62-dev libncurses5-dev libtool make python-dev gawk pkg-config gnutls-bin apt-get install libcurl4-openssl-dev libexpat1-dev libgnutls-dev libtiff4-dev libx11-dev unixodbc-dev libssl-dev python2.6-dev zlib1g-dev libzrtpcpp-dev libasound2-dev libogg-dev libvorbis-dev libperl-dev libgdbm-dev libdb-dev python-dev uuid-dev bison yum install expat-devel gnutls-devel libtiff-devel libX11-devel unixODBC-devel libssl-devel python-devel zlib-devel libzrtpcpp-devel alsa-lib-devel libogg-devel libvorbis-devel perl-libs gdbm-devel libdb-devel uuid-devel @development-tools
      
      





5.2。 FreeSwitchのダウンロード:



 cd /usr/local/src git clone git://git.freeswitch.org/freeswitch.git cd freeswitch ./bootstrap.sh
      
      





5.3。 modules.confの編集:



 nano /usr/local/src/freeswitch/modules.conf
      
      





不足しているものをすべてチェックして追加します。



 applications/mod_limit codecs/mod_voipcodecs endpoints/mod_skypopen mod_say_ru formats/mod_file_string
      
      





5.4。 組み立てと設置



 cd /usr/local/src/freeswitch ./configure make make install all cd-sounds-install cd-moh-install uhd-sounds-install uhd-moh-install hd-sounds-install hd-moh-install sounds-install moh-install
      
      





5.5。 mod_skypopen構成とinitスクリプトをコピーして、FreeSwitchを実行します。



 cp /usr/src/freeswitch/src/mod/endpoints/mod_skypopen/configs/skypopen.conf.xml /usr/local/freeswitch/conf/autoload_configs/ cp /usr/src/freeswitch/debian/freeswitch.init /etc/init.d/freeswitch cp debian/freeswitch.default /etc/default/freeswitch sed -i 's/opt/usr\/local/g' /etc/init.d/freeswitch sed -i 's/false/true/g' /etc/default/freeswitch
      
      





5.6。 FreeSwitchのユーザーを取得する



 adduser --disabled-password --quiet --system --home /usr/local/freeswitch --gecos "FreeSwitch Voice Platform" --ingroup daemon freeswitch adduser freeswitch audio chown -R freeswitch.daemon /usr/local/freeswitch chmod -R o-rwx /usr/local/freeswitch/
      
      





5.7。 起動およびその他のFreeSwitchコマンド



 load mod_skypiax #   sk list #    console loglevel 9 #    shutdown #   FreeSwitch /usr/local/freeswitch/bin/freeswitch #  FreeSwitch
      
      





5.8。 Mod Skypopen



次に、最も重要な設定であるPublic APIに進みましょう。 ここでは、mod_skypopenがSkypeに接続できるようにする必要があります。

Skype自体は、Skypeに連絡した後にのみ「許可されたプログラム」リストにプログラムを追加できますが、そのような設定を行うためだけにFreeSwitchとmod_skypopenを実行することはお勧めできません。 FreeSwitchソースツリーにあり、個別にコンパイルする必要があります。



 cd /usr/local/src/freeswitch/src/mod/endpoints/mod_skypopen/configs/old-stuff gcc -Wall -ggdb skypopen_auth.c -o skypopen_auth -lX11
      
      





今すぐVNC画面を開いておく必要があります。



skypopenを起動します。

 ./skypopen_auth :101
      
      





vnc接続ウィンドウに戻ります-表示されるダイアログで、Skypeがskypopen APIに接続できるようにする必要があります。 /home/skype/multi/interface01/username/config.xmlでこれを行うこともできます。 このビューを与えた:



 <UI> <API> <Authorizations>skypopen</Authorizations> <BlockedPrograms></BlockedPrograms> </API> <CaptureDevice>2</CaptureDevice> <Notifications> <Enable> <SkypeLogin>0</SkypeLogin> </Enable> </Notifications> <SoundDevice>2</SoundDevice> </UI>
      
      







6.構成設定


重要な点は、mod_skypopenモジュールをロードする前にスカイプクライアントを起動する必要があるということです。 FreeSwitchを開始する前。 また、すでに使用されているSkypeのmod_skypopenコピーを停止すると、FreeSwitchがクラッシュします。



6.1。 mod_skypopen



 nano /usr/local/freeswitch/conf/autoload_configs/skypopen.conf.xml
      
      





このようなものを編集する:



 <configuration name="skypopen.conf" description="Skypopen Configuration"> <global_settings> <param name="debug" value="8"/> <param name="dialplan" value="XML"/> <param name="skype_user" value="username"/> <param name="report_incoming_chatmessages" value="false"/> <param name="write_silence_when_idle" value="false"/> <param name="silent_mode" value="false"/> <param name="setsockopt" value="true"/> <param name="codec-prefs" value="gsm,ulaw"/> <param name="hold-music" value="$${moh_uri}"/> </global_settings> <per_interface_settings> <interface id="1" name="skypopen1"> <param name="destination" value="5000"/> <param name="context" value="default"/> <param name="X11-display" value=":101"/> <param name="tcp_cli_port" value="15556"/> <param name="tcp_srv_port" value="15557"/> <param name="hold-music" value="$${moh_uri}"/> </interface> </per_interface_settings> </configuration>
      
      







ここに:

5000-着信Skypeコールがルーティングされる内線番号。

:101 -Xサーバーの表示。

skype_userは、Skype アカウントの名前です。



6.2。 Skypopenをスタートアップに追加する



FreeSwitchの開始時にロードするモジュールのリストにmod_skypopenを追加します。

これを行うには、/ usr / local / freeswitch / conf / autoload_configs / modules.conf.xmlファイルで、次の行のコメントを解除するか追加する必要があります。



 <load module="mod_skypiax"/>
      
      





6.3。 Extension 5000の構成



おそらく覚えているように、Skypeの着信通話は内線5000にルーティングされます。 これを行うには、ディレクトリ/ usr / local / freeswitch / conf / dialplan / defaultで、次の内容のファイル02_skype.xmlを作成します。



 <include> <extension name="skype_incoming"> <condition field="destination_number" expression="^7770$"> <action application="set" data="hangup_after_bridge=true"/> <action application="set" data="effective_caller_id_name=6001"/> <action application="bridge" data="sofia/gateway/asterisk/6001"/> <action application="hangup"/> </condition> </extension> </include>
      
      





どこで:

アスタリスク -呼び出し先のゲートウェイの名前(アスタリスクに基づくATS)。

6001-アスタリスクの内線番号。通話を受信します。

<action application = "bridge" ...> -ここでは、呼び出しが到着したときにアスタリスクで処理される内線が指定されます。この場合は6001です。



同じディレクトリに、必要な拡張機能が他の場所で処理されないようにコメントアウトする必要がある他の拡張機能の例があります。 /usr/local/freeswitch/conf/dialplan/default.xmlファイルで同じ操作を行う必要があります。



ファイル01_skypopen.xmlを作成します。



 nano /usr/local/freeswitch/conf/dialplan/public/01_skypopen.xml
      
      





コンテンツあり:



 <extension name="SKYPE#1"> <condition field="destination_number" expression="^8(\d{10})$"> <action application="set" data="continue_on_fail=true"/> <action application="set" data="hangup_after_bridge=true"/> <action application="bridge" data="skypopen/RR/+7$1"/> </condition> </extension>
      
      





6.4。 Sip_profiles設定



ディレクトリ/ usr / local / freeswitch / conf / sip_profiles / externalにFreeSwitchがあるサーバーで、次の内容のasterisk.xmlファイルを作成します。



 <include> <gateway name="asterisk"> <param name="username" value="freeswitch"/> <param name="realm" value="127.0.0.1"/> <param name="password" value="pass123"/> <param name="register" value="true"/> <param name="ping" value="25"/> </gateway> </include>
      
      





どこで:

アスタリスク -ゲートウェイ名(前の手順で指定した名前と一致する必要があります);

127.0.0.1-アスタリスクのあるホスト。

freeswitch-ゲートウェイにアクセスするためのユーザー名。

pass123は彼のパスワードです。



6.5。 Sip.confの構成



アスタリスクのあるサーバーで、次を/etc/asterisk/sip.confに追加します。

ネタバレ
 [freeswitch] type=friend host=dynamic username=freeswitch port=5080 secret=pass123 [6001] fullname=Skype registersip=no callgroup=1 transfer=yes callcounter=yes context=default cid_number=6001 hassip=yes hasiax=no nat=no insecure=no autoprov=yes disallow=all alow=ulaw,ulaw,gsm,g726,g729 dtmfmode=rfc2833 host=dynamic username=60001 port=5080 fromdomain=1.1.1.1 secret=supersecret
      
      









どこで:

6001-前の手順からの拡張

1.1.1.1 -FreeSwitchでのサーバーアドレス

pass123-拡張機能6001のパスワード



sip.confを読み直す必要があります。



 rasterisk -x 'sip reload'
      
      





6.6。 Users.confの構成



ネタバレ
 [freeswitch] type=friend host=dynamic username=freeswitch port=5080 secret=pass123 [6001] fullname=Skype registersip=no callgroup=1 transfer=yes callcounter=yes context=default cid_number=6001 hassip=yes hasiax=no nat=no insecure=no autoprov=yes disallow=all alow=ulaw,ulaw,gsm,g726,g729 dtmfmode=inband host=dynamic username=6001 port=5080 fromdomain=1.1.1.1 secret=pass123 hasvoicemail=yes vmsecret=secret call-limit=100 macaddres=6001 label=6001 linekeys=1
      
      









どこで:

secret-ボイスメールのパスワード。

100-最大行。

nat = yes-クライアントをNAT番目の背後に配置でき、このユーザーが呼び出したときにメディアチャネルを開くには、ヘッダーの変換が必要であることを意味します。

host = dynamic-クライアントのホストアドレスへのバインドなし。

ユーザー名= 6001-ユーザー名。 このログインは、SIPクライアントの設定で使用されます。

dtmfmode = rfc2833 -dtmfダイヤルトーンを送信する方法。 infoメソッドもあります(SIPクライアントの設定と一致する必要があります)。

disallow = all-すべてのコーデックを無効にします。

allow = ulaw -ulawコーデックを有効にします。 コーデックは、クライアントでサポートされているものでなければなりません。

context = default-コンテキストは、Dailplanクライアント呼び出しのどのセクションを通過するかを説明します。



extentions.confで、次を追加します。



 [default] exten => 6000,1,Dial(SIP/6000) exten => 6001,1,Dial(SIP/6001)
      
      







7.起動順序


インストール後、システムを再起動する必要があります。 起動時にアスタリスクが開始されます。 再起動する前に、ソフトフォンがすでにアクティブになっている必要があります。

優先度:



 /usr/bin/Xvfb :101 -ac & x11vnc -display :101 su skype -c "/bin/echo 'username userpass'| DISPLAY=:101 /usr/bin/skype --dbpath=/home/skype/multi/interface01 --pipelogin &" /usr/local/freeswitch/bin/freeswitch
      
      





Skypeネットワークからの着信通話中にFreeSwitchコンソールにログが表示されない場合、またはVnc Viewerへの接続時にクライアントが表示されない場合、Skypeクライアントを手動で再起動し、クライアント設定を再確認する必要があります。



使用されるリソース:wiki.exp-it.ru、wiki.freeswitch.ru、アスタリスク-pbx.ru +アスタリスクの書籍。



All Articles