テレフォニーをゼロから発生させます:DebianのHuawei E173上のアスタリスク、FreePBX、GSMゲートウェイ





まず、少しの背景。 少し前まで、私たちの会社は実質的に都市との接続を失い、ある電話オペレーターは他の電話オペレーターと何かを共有しなかったため、電話は彼らの間で行き止まりました。 通常の電話通信を完全に放棄し、完全にIPテレフォニーに切り替えたため、決定されました。

問題文:

1)電話通信を整理します。

2)会話の記録。

3)コールキュー。

4)音声メニュー。

5)GSMゲートウェイ、およびモバイルオペレーターからの通話を処理する必要があります。

6)状況が不可抗力であり、予算が割り当てられていないため、決定の最小コスト。



テレフォニーを使ったことがありませんでした。タスクは急務でした。個人的にどのように解決したか、踏み込んだレーキについて、行われたことが完全に最適ではなかった場合、または修正や追加にひどく感謝するかどうかを詳しく説明しようとするので、行きました。





プラットフォームの選択。


まず、サイトasterisk.ruに示されている既製のアセンブリを確認することにしました。AsteriskNOW、FreePBX、Elastixの既製のイメージがダウンロードされました。残りについてはドキュメントを読みました。 TrixBoxは、ポイント6と矛盾するため、充電可能性のためにすぐに投げ戻されました。 AsteriskNOWは湿っていて未完成であるように見え、FreePBX、Elastixは論理的で便利なビルドの両方が好きでしたが、利用可能なHuawei E173モデムと友達になりたくありませんでした。また、かなり古いカーネルを備えたCentOSでビルドされ、Debianの一般的なサーバーパークには収まりませんでした。 彼はすべてをゼロから収集することに決め、それによって貴重な経験を得ました。



作業環境の組み立て、要素のリンク、カスタマイズ。


したがって、Debian 6 Squeezeを新たにインストールしました。最小限のインストールです。

将来的に必要なリポジトリを追加します
/etc/apt/sources.list
      
      





 deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free deb http://www.deb-multimedia.org stable main non-free deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all deb http://repos.zend.com/zend-server/deb server non-free
      
      





キーをインストールする

 apt-get update && apt-get install deb-multimedia-keyring wget http://www.dotdeb.org/dotdeb.gpg -O- |apt-key add - wget http://repos.zend.com/zend.key -O- |apt-key add -
      
      





私たちは自分自身を把握します。

 apt-get update && apt-get upgrade
      
      





バックポートから、GSMモデムが正しく動作するために必要な新しいコアを配置します

 apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.3-amd64 apt-get install -t squeeze-backports linux-headers-3.2.0-0.bpo.3-amd64
      
      





再起動

 reboot
      
      





Webサーバーを配置します。


Webサーバーの負荷は1回限りで小さく計画されているため、必要なモジュールを個別にapache + php +にインストールするのは面倒でしたので、 Zend Server CEの素敵なビルドを使用することにしました

すべてを一度に配置します。

 aptitude install zend-server-ce-php-5.3 php-5.3-source-zend-server control-panel-zend-server bison libaudiofile-dev libssl-dev checkinstall mpg123 libmpg123-0 libmpg123-dev xmms2-plugin-mpg123 mysql-server libmysqlclient15-dev php-db php-pear sox curl g++ libncurses-dev libxml2-dev subversion libspandsp-dev lame libmp3lame-dev
      
      





Zend Webサーバーの構成

 echo "PATH=$PATH:/usr/local/zend/bin" >> /etc/profile echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zend/lib" >> /etc/profile source /etc/profile chown zend:adm -R /var/log/apache2/ mkdir /var/www/freepbx/ adduser asterisk --disabled-password --gecos "Asterisk PBX"
      
      





アスタリスクで、Apacheが動作するユーザーを変更します。

 sed -i "s/\(^User *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf sed -i "s/\(^Group *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf
      
      







phpの設定を変更します(_https:// IP:10082 / ZendServerまたは_http:// IP:10081 / ZendServerで利用可能な特別なサーバー管理パネルから可能です)。

 post_max_size = 32M max_execution_time = 60 max_input_time = 60 memory_limit = 256M upload_max_filesize = 16M date.timezone = "Europe/Kiev"
      
      







必要なソースをダウンロードする


 cd /tmp wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8.15.1.tar.gz tar xvzf asterisk-1.8.15.1.tar.gz wget http://mirror.freepbx.org/freepbx-2.9.0.tar.gz tar xvzf freepbx-2.9.0.tar.gz wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.12.tar.gz tar xvzf libpri-1.4.12.tar.gz wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.6.1+2.6.1.tar.gz tar xvzf dahdi-linux-complete-2.6.1+2.6.1.tar.gz
      
      







更なる更新の便宜のためにそれらをすぐにパッケージに収集します。

 cd libpri-1.4.12/ make checkinstall -D cd /tmp/dahdi-linux-complete-2.6.1+2.6.1/ make all mkdir /etc/hotplug mkdir /etc/hotplug/usb/ mkdir /etc/dahdi checkinstall -D make config
      
      





私たちは不必要なモジュールを切断します。一般的に私はdahdiを必要としませんでしたが、フォーラムやドキュメントでは、とにかくそれを収集することをお勧めします。

 nano /etc/dahdi/modules /etc/init.d/dahdi start cd /tmp/asterisk-1.8.15.1/
      
      





mp3を有効にする予定がある場合

 ./contrib/scripts/get_mp3_source.sh
      
      





そうでない場合は、すぐに

 ./configure make menuselect
      
      





menuconfigには次のオプションが含まれています。

app_mysql、app_saycountpl、cdr_mysql、format_mp3、res_config_mysql、EXTRAS-SOUNDS-EN-GSM EXTRAS-SOUNDS-RU-GSM(必要なコーデックと言語)およびその他の必要なオプション。



 make checkinstall -D make config make samples
      
      





存在しないディレクトリのエラーを受け取った場合

 mkdir /var/lib/asterisk/phoneprov
      
      





そしてまた

 make samples
      
      







FreePBXに必要なデータベースを作成して入力します

 cd /tmp/freepbx-2.9.0 mysqladmin -uroot create asterisk -p'Password' mysqladmin -uroot create asteriskcdrdb -p'Password' mysql -uroot -p'Password' asterisk < SQL/newinstall.sql mysql -uroot -p'Password' asteriskcdrdb < SQL/cdr_mysql_table.sql mysql -uroot -pPassword # Password -      MySQL
      
      





 GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109'; # amp109 -     asteriskuser  MySQL GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109'; # amp109 -     asteriskuser  MySQL flush privileges; quit;
      
      





FreePBXをインストールする前にアスタリスクを実行します

 /etc/init.d/asterisk start
      
      







FreePBXをアスタリスクで動作するように構成します。

 cd /tmp/freepbx-2.9.0 pear install DB ./install_amp
      
      





すべてのデフォルトパラメータを使用します。パスのみが、先ほど作成した/ var / www / freepbx /に設定されます。



ささいな余談ですが、freepbx-2.10.0のバージョンはFreePBX Webサイトで入手できますが、Debianのインストーラーは非常に奇妙に動作し、バグレポートからいくつかのパッチを適用する必要がありましたが、それ以上の動作も快適ではなく、インストールしてからアップグレードします。 インストールが成功したら、_httpのWebインターフェースに移動します。// IPサーバー/ freepbx、システムを更新します。更新プロセスはインターフェースに詳細に記述され、別のリンクが作成されます。詳細については説明しません。更新は迅速かつスムーズに行われます。システムの最新バージョンが10分あります。



huaway E173モデムを固定します


以前は、すべてのオペレーターに対してモデムのロックが解除されており、音声機能はその中でロック解除されていました。 この点については詳しく説明しません。すべては非常に些細なことであり、説明されているトピックには含まれていませんが、興味がある人は答えます。



モデムの正しい名前を確認するには



 apt-get install -t squeeze-backports usb-modeswitch usb-modeswitch-data
      
      





モデムを挿入して実行します

  dmesg | tail
      
      





次のような結論が得られます

 [ 303.594149] usb 1-7: New USB device found, idVendor=12d1, idProduct=1001 [ 303.594155] usb 1-7: New USB device strings: Mfr=3, Product=2, SerialNumber=0 [ 303.594158] usb 1-7: Product: HUAWEI Mobile [ 303.594161] usb 1-7: Manufacturer: HUAWEI Technology [ 303.596731] option 1-7:1.0: GSM modem(1-port) converter detected [ 303.596968] usb 1-7: GSM modem (1-port) converter now attached to ttyUSB0 [ 303.597241] option 1-7:1.1: GSM modem (1-port) converter detected [ 303.597373] usb 1-7: GSM modem (1-port) converter now attached to ttyUSB1 [ 303.597584] option 1-7:1.2: GSM modem (1-port) converter detected [ 303.597716] usb 1-7: GSM modem (1-port) converter now attached to ttyUSB2
      
      







動作しない場合は、デバイス識別子を確認します:

  lsusb
      
      





  Bus 002 Device 050: ID 12d1:140c Huawei Technologies Co., Ltd.
      
      







ファイルの1つにある/etc/usb_modeswitch.dのファイル「12d1:*」の存在の確認

製品「1446」について言及する必要があります。 例:



 # Huawei E270+ (HSPA+ modem) DefaultVendor= 0x12d1 DefaultProduct=0x1446 TargetVendor= 0x12d1 TargetProductList="1001,1406,140c,14ac" CheckSuccess=20 MessageContent="55534243123456780000000000000011060000000000000000000000000000"
      
      







ファイルが存在しない場合は、上記の例を使用して、DefaultProductを次のように変更するだけで作成できます。

 DefaultProduct= 0x140c
      
      





再起動し、モデムに正しい名前が付けられたら、アスタリスクとの関連付けを続けます



 svn co https://www.makhutov.org/svn/chan_datacard/trunk/ /tmp/chan_datacard cd /tmp/chan_datacard automake ./configure cp etc/datacard.conf /etc/asterisk/
      
      







モデムのモジュールパラメーターを構成します。

 nano /etc/asterisk/datacard.conf
      
      







構成ファイルの一番下で、最後の行の後のすべてのデータを削除し(Ctrl + k)、この構成を貼り付けます

 [000101] context=from-gsm ; context    audio=/dev/ttyUSB1 ; tty     data=/dev/ttyUSB2 ; tty    AT   group=1 ;   rxgain=10 ;    txgain=-5 ;    autodeletesms=yes ; auto delete incoming sms resetdatacard=yes ; reset datacard during initialization u2diag=256 ; set U2DIAG parameter (256 =     ) usecallingpres=yes ; use the caller ID presentation or not callingpres=allowed_passed_screen ; set caller ID presentation
      
      





変更をCtrl + Oで書き込み、nanoエディターを終了Ctrl + X



ダイヤルプランでコンテンツを作成します(SIMでPINコードをオフにすることを忘れないでください)。

 nano /etc/asterisk/extensions_custom.conf
      
      





 [from-gsm] exten => s,1,Set(CALLERID(all)=${CALLERID(num)}) exten => s,n,Set(CALLERID(num)=8${CALLERID(num):2}) exten => s,n,goto(from-trunk,${IMEI},1)
      
      





アスタリスクを再起動

 service asterisk restart
      
      





モデムのステータスを確認します。

 asterisk -r
      
      





 datacard show devices
      
      





 cam*CLI> datacard show devices ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number 000101 1 Free 23 0 0 DJUICE E173 11.126.16.04.174 867767 255030580735317 +38097
      
      





次に、FreePBX管理パネルで、このモデムのルートを追加します。



アウトバウンドルート:

Webインターフェース(FreePBX 2.10)-接続->トランク->カスタムトランクの追加

トランク名-忘れないように名前を書きます(例:GSM-modem)

最後の項目-カスタムダイヤル文字列-指定

 datacard/i:00000000000000/$OUTNUM$
      
      





0000000000000はモデムのIMEIです(前の段落で表示)。



Webインターフェース(FreePBX 2.10)-接続->アウトバウンドルート-> ADDルート

たとえばアウトバウンドの名前

一致パターン->。 (このフィールドにドットを入力)、

一致したルートのトランクシーケンスで、トランクを選択します。



インバウンドルート:

Webインターフェース(FreePBX 2.10)-接続->インバウンドルート-> ADDインバウンドルート

たとえばインバウンドの名前

DID番号-> 0000000000000(IMEIモデム)

「宛先の設定」で、モデムが受信したコールの受信者を選択します。



WEBインターフェースを介して、SIPなどのプロトコル用にロシア語の音声機能を有効にします。

設定->アスタリスクSIP設定->言語-> ru



FreePBX自動実行スクリプトを作成します:/etc/init.d/amportal-startup

 #!/bin/sh # /etc/init.d/amportal-startup # ### BEGIN INIT INFO # Provides: Asterisk # Required-Start: $remote_fs $syslog $all # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Asterisk at boot time # Description: Enable Asterisk. ### END INIT INFO PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" export PATH case "$1" in start) amportal start ;; stop) amportal stop ;; *) echo "Usage: /etc/init.d/amportal-startup {start|stop}" exit 1 ;; esac exit 0
      
      







私たちは彼に実行する権利を与えます

 chmod +x /etc/init.d/amportal-startup
      
      





スタートアップに追加します。

 insserv amportal-startup
      
      







FreePBXは部分的にロシア語に翻訳されていますが、その組み込みは最初はうまくいきませんでした。それを行うために、次の操作を実行します。

ファイル/usr/share/locale/locale.aliasを修正します



ロシア語のエンコード行を削除し、代わりに3行追加します。

 russian ru ru ru_RU ru_RU ru_RU.UTF-8
      
      





その後、ロケールを再生成します

 locale-gen ru_RU.utf8
      
      







すべてが機能し始めます。



これで作業日が終わり、残りの作業は明日に延期されました。私の考えに混乱が生じたことをおaびします。システムが機能し、モデムからテストコールを行い、モデムへの呼び出しを受け入れたという気持ちの良い気持ちで書きます。包含と検証。



FreePBXasterisk-pbxblog.911.in.uaサイト 、公式プロジェクトドキュメント、および検索エンジンのドキュメントを使用して設定しました。



UPD。 同僚から続けた



All Articles