SMSおよびSIPゲートウェイ-Multifon、Asterisk、Kannel

この記事では、単一の電話番号を使用して、 PBXまたはIVRとしてのアスタリスク、SMSゲートウェイとしてのKannelの利点を組み合わせる方法について説明します。



これを行うには、サーバーでHuawei E171モデムのFreebsd 8.2を使用しましたが、MTSモデムまたはhuawei製のメガホン(E1551モデムでもテスト済み)、メガホンSIMカードを使用できます。 ソフトフォンは電話とSJphoneを使用していました。



すでに述べたように、 MultifonはSIPをメガホン番号に接続するためのサービスです。これにより、複数の独立した回線を維持し、IP-PBXを使用して解決できます。 サービスの接続とアスタリスクとの連携についてはすでに述べたので、簡単に説明します。



SIMカードを電話機に挿入し Multifon クライアントをダウンロードします 。LinuxおよびMac OS Xのディストリビューションはベータ版で利用できます。



クライアントを起動し、登録し、コード付きSMSを受信し、コードを入力し、パスワードを設定し、すべてがクライアントで機能することを確認します。



マルチフォンクライアントをオフにします(2つのクライアントを同時にマルチフォンに接続できないため、重要です)。



Multifon * 137#のすべての機能を接続するUSSDコマンドを送信し、サービスの包含を確認します。



/etc/rc.confまたは/ etc / default / kannelに追加します

kannel_bearerbox_enable="YES" kannel_smsbox_enable="YES" asterisk_enable="YES"
      
      





アスタリスクをインストールして構成する



 cd /usr/ports/net/asterisk make install clean service asterisk start
      
      





インターネットには多くの説明がありますので、公式のメガホン設定に基づいて、いくつかの修正と説明を加えた設定のみを提供します。



アスタリスク構成:

 ;#/usr/local/etc/asterisk/sip.conf [general] tcpenable=yes allow=all register => 79271111111@multifon.ru:paSSwoRD:79271111111@193.201.229.35:5060/79271111111 [multifon-out] dtmfmode=inband username=79271111111 type=peer secret=paSSwoRD host=sbc.megafon.ru fromuser=79271111111 fromdomain = multifon.ru port=5060 context=multifon-in insecure=port,invite canreinvite=no ;#           [100];#   sip-       type=friend host=dynamic secret=pass100 context=phones username=100 nat=rfc3581 ;#         [101] type=friend host=dynamic secret=pass101 context=phones username=101 nat=rfc3581
      
      





 ;#/usr/local/etc/asterisk/extensions.conf ;#      [multifon-in] exten=> 79271111111,1,Dial(SIP/100,60,t) ;#  ,   [out] exten=>_7XXXXXXXXXX,1,Dial(SIP/multifon-out/${EXTEN}) exten=>_8XXXXXXXXXX,1,Dial(SIP/multifon-out/${EXTEN}) ;#   8 exten=>_+7XXXXXXXXXX,1,Dial(SIP/multifon-out/${EXTEN}) ;#   +7 ;#exten=>_7XXXXXXXXXX,1,Dial(SIP/${EXTEN}@multifon-out,30,r) ;#  ;#    SIP  [local] exten=>_1XX,1,Dial(SIP/${EXTEN},60,rt) [phones] include => multifon-in ;# ,         include => local include => out
      
      





 ;#/usr/local/etc/asterisk/rtp.conf [general] rtpstart=6001 ;# ,   RTP   6001  rtpend=20000
      
      





コンソールを起動します。

 asterisk -vvvvr
      
      





コンソールを使用して構成を再起動します。

 reload
      
      





マルチフォンとソフトフォンへの接続の確認:

 sip show registry sip show peers
      
      







次のURLを要求して、SIPとともに電話を有効にする必要があります。

https://sm.megafon.ru/sm/client/routing/set?login=79XXXXXXXXX@multifon.ru&password=PASSWORD&routing=2



通話が内外で通過することを確認します。



モデムの準備



電話からSIMカードを取り出し、モデムに挿入します。

サーバーにモデムを挿入し、デバイスが見つかったことを確認します。

 ls /dev | grep cuaU ls /dev | grep ttyU
      
      





デバイスが表示されない場合は、追加してカーネルを再構築します

 device u3g
      
      





Kannelのインストールと構成



SVNからkannelをインストールすることをお勧めしますが、このバージョンでは問題が発生していないため、ポートからインストールします。

 cd /usr/ports/www/kannel make install clean service kannel start
      
      





Kannelはユーザー自身を作成し​​ないことに注意する価値があるので、私たちは自分で作成します。

 adduser
      
      





また、彼はPIDファイル用のディレクトリの作成を気にしません。自分で作成します。

 mkdir /var/run/kannel chown kannel /var/run/kannel
      
      





Kannelの構成:

 #/usr/local/etc/kannel.conf group = core admin-port = 13000 admin-password = " paSsWoRd " log-file = "/var/log/kannel/bearerbox.log" log-level = 1 access-log = "/var/log/kannel/access_kannel.log" store-file = "/var/log/kannel/store_sms" smsbox-port = 13001 dlr-storage = internal sms-resend-retry = 1 group = smsc smsc = at smsc-id = huawei0 modemtype = huawei0 device=/dev/ttyU0.2 #  /dev/ttyU0.3,    sms-center="+79271111111" my-number="+79271111111" keepalive=5 group=modems id=huawei0 name="huawei0" group = smsbox bearerbox-host = localhost sendsms-port = 13003 global-sender = "+79271111111" log-file = /var/log/kannel/smsbox.log log-level = 0 access-log = /var/log/kannel/access_smsbox.log group = sendsms-user username = "user" password = "paSsWoRd" concatenation = true max-messages = 20 # sms  php  group = sms-service keyword = default post-url = "http://localhost/service.php?tel=%p&time=%t&coding=%c&smsc=%i" concatenation = true max-messages = 0 #    sms    smssend
      
      







kannelを再起動します

 service kannel restart
      
      





SMSCへの接続がアドレスでオンラインであることを確認します

ローカルホスト :13000 /ステータス



ロシア語のsmsはucs-2beエンコーディングで行き来するので、変換します。 たとえば、PHPの場合:

 $text=urlencode(iconv("utf-8","ucs-2be",$text));#
      
      





SMS送信:

 file_get_contents("http://localhost:13003/cgi-bin/sendsms?smsc=$smsc&username=user&password=paSsWoRd&coding=2&to=$to&text=$text");#
      
      





コーディング= 2は、コーディングucs-2beに再び対応します。



ipfwが有効になっている場合は、ポートを開くことを忘れないでください(RTPのポートを含む、そうでない場合は音声/ビデオはありません)。

 ipfw add allow tcp from any to ${IpOut} 5060 via ${LanOut} #SIP ipfw add allow udp from any to ${IpOut} 5060 via ${LanOut} #SIP ipfw add allow udp from any to ${IpOut} 6000-20000 via ${LanOut} #RTP
      
      







したがって、1つの番号に機能するSMSゲートウェイとコールセンターがあります。 さらに、アスタリスクを使用してIVRを整理し、SMSだけでなく、エンドユーザーとのインタラクティブな音声対話を通じてデジタル形式で情報を受信できます。



SIMカードのアスタリスクへの直接接続についてはここで説明しますが、最初にモデムが接続されると、モデムが「モデムのみ」モードに切り替わり、デバイスが再接続されるとデバイスが消えるため、モデムをゆがめて設定を変更することに注意してください

 audio=/dev/cuaU0.1 ;#    data=/dev/cuaU0.2 ;#   
      
      





大きすぎる場合は、設定を変更します

 rxgain=0 txgain=0
      
      





アスタリスクに関する良い本

Kannelの素晴らしい公式マニュアル

メガホン接続手順

メガホンからの設定ファイル (それらを使用すると、発信コールで問題が発生しました)

FreeBSDでデバイスが検出されない場合のカーネル構成ファイル



All Articles