SSブログ

DTMF判別 [asterisk]

chan_mobileを使用してのIVRで通信径路によって差が有ることに気がついた
以前述べたようにsoftbankのプリペイド携帯を受信に使用しているのですが
softbank携帯からは内線に掛けられるのですが事務所の電話からはしばらく無音が続いてその後話中音になってしまいました。事務所の電話はNTT回線t直接では無くどこかのIP電話ですが

さてどうやって調べようか

1.NTT回線から直接掛けてみる
2.ドコモ、AU携帯から掛けてみる
3.sip.confのdtmfmode=を変更してみる
くらいしか思いつかない 


svnコマンドをproxy経由で使う [asterisk]

asteriskを再度インストールしようと思い、どうせなら最新版にしておこうとwgetし、パッチをあて、get_mp3_source.shを行ったらsvn: OPTIONS of 'http://svn.digium.com/svn/thirdparty/mp3/trunk': could not connect to server (http://svn.digium.com)といわれてしまった。
wgetもできなかったのでexport....とした記憶があるがlinuxではproxy経由に設定するのは1箇所ではすまないのか

google先生に聞いたら

nano ~/.subversion/servers
[global]
http-proxy-exception = プロキシを通さないホスト名
http-proxy-host = プロキシサーバのホスト名
http-proxy-port = プロキシサーバのポート番号
だってさ
http-proxy-exception は関係ないからコメント付きのままにしてサーバーのIPアドレスとポート番号を設定した

上記の設定でscriptの中のsvnコマンドが実行できるようになりました。 


chan_mobileが動かなくなった [asterisk]

金曜日に事務所にcubieboardを設置した。
しかしchan_mobileが正常に動かなかった

ペアリングはできているのでbluetoothは事務所でも正常に動いていると思われる
chan_mobileが正常な場合
root@Cubian:~# asterisk -vvvvcr
Asterisk 11.10.2, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
Connected to Asterisk 11.10.2 currently running on Cubian (pid = 1972)
    -- Bluetooth Device 101DL has connected, initializing...
    -- Bluetooth Device 101DL initialized and ready.
Cubian*CLI>
となるはずだが
    -- Bluetooth Device 101DL has connected, initializing...
    -- Bluetooth Device 101DL initialized and ready. 
この2行が表示されない。

我が家と事務所とどこが違うのだろうか 


androidアプリの3CXPhoneがasteriskで使えなくなっていた [asterisk]

久しぶりにGooglePlayにある3CXPhoneをプリスマにインストールしようとしたらバージョンがが新しくなっていてasteriskで使えなくなっていた。

3CXPhone for Phone System v12(v11用もあるけれど)になっていて説明欄にも”3CXPhone for 3CXPhone requires 3CX Phone System v12 It will not work with a voip provider or any othe PBX"と明確に書いてある。要は交換機に俺のところの3CX Phone System専用だぜ,他のプロバイダやオープンソースのasteriskでは使えないぞということだ。

インストールしてみたけれど確かにon hook表示にならずunsuported PBXと表示した。

別のを探さねばならない CSipSimpleかなあ


chan_mobile経由で携帯から内線につなぐ [asterisk]

chan_mobile.confで
[101DL]
context=incoming-mobileとしたので携帯に着信するとextensions.confの[incoming-mobile]を実行します。

extensions.conf
前略
[incoming-mobile]
exten => s,1,Answer()
exten => s,2,Wait(1)
exten => s,n(try-again),Background(vm-enter-num-to-call)
exten => s,n,WaitExten(60)
exten => s,n,Hangup

exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(s,try-again)
; 3桁の番号だったら社内内線番号へ
exten => _XXX,1,NoOp
exten => _XXX,n,Set(TO_DIAL2=${EXTEN})
exten => _XXX,n,Goto(OfficeExtension,8100,1)

[OfficeExtension] (昨日と同じです)

exten => 8100,1,NoOp
exten => 8100,2,Dial(SIP/${TO_DIAL2}@2010,120,T)
exten => 8100,3,Hangup
exten => 8100,4,Congestion
exten => 8100,102,busy
exten => 8100,103,congestion 

携帯に着信するとアナウンスが流れて事務所の内線を呼び出すようになりました。
ただしこのアナウンスが英語なのです。他のメッセージは日本語なのになぜincoming-mobileのところだけPlease enter the number you wish to callなのだ

事務所の交換機につなぐ [asterisk]

事務所の交換機ははたぶんSIPをしゃべることができると思うのですが勝手に接続しようと思っているのでasteriskをregistする訳にはいかない。かといって内線電話は固定機でなくPHSを各人が持っているのでasteriskにつなぎこむこともできず、いろいろ考えてFAXに目をつけた。もちろんFAXだから外線番号を持っていますが交換機を経由しているのだから内線番号もあるはずだと見当をつけてFAX機のlineの下、電話機マークの口金にアナログ電話をつないでみた。受話器を上げると発信音が聞こえる。内線番号に掛ければPHSが反応した。
このFAXは送信も受信もほとんど使用していないのでここにasteriskのアナログラインをつないでも事務所の機能に影響は無いだろう。
 ということでSPA3102を接続します。

Cisco Systems Linksys SPA3102

Cisco Systems Linksys SPA3102

  • 出版社/メーカー: CISCO SYSTEMS - ENTERPRISE
  • メディア: Personal Computer

 

 

SPA3102に関しては日本のasteriskの総本山http://www.voip-info.jp/ここにあります。
SPA3102の設定については暇があったら後日記録します。注意点としては着信をしない設定にすることです。そうしないと大事なFAXを受信できなくなりますから

sip.confとextensios.confを修正します。 
sip.confにSPA3102を内線番号2010として追加
;LYNKSYS adapter
[2010]
port=5061
type=friend
secret=passward
username=SPA-3102
nat=yes
host=dynamic
reinvite=no
qualify=2000
callerid="SPA-3102" <2010>
dtmfmode=rfc2833
canreinvite=yes
disallow=all
allow=ulaw
musicclass=default
restrictcid=yes
context=default

port=5061は5060タイプミスではありません。これについてもここに詳しく書かれています。

extensions.conf
[default]
途中省略
exten => _8.,1,NoOp
exten => _8.,n,Set(TO_DIAL2=${EXTEN:1})
exten => _8.,n,Goto(OfficeExtension,8100,1)
途中省略

[OfficeExtension]

exten => 8100,1,NoOp
exten => 8100,2,Dial(SIP/${TO_DIAL2}@2010,120,T)
exten => 8100,3,Hangup
exten => 8100,4,Congestion
exten => 8100,102,busy
exten => 8100,103,congestion

上記設定でasteriskのIP電話から8123へ電話すると事務所の内線123へ電話を掛ける事ができます。 

;;;;;;;;;;;;;;;;;;
 家で実験していたときはうまくいったのに事務所に設置したらうまくいかなかった。理由は電圧の極性でした
今の電話機は極性関係なく作動しますが SPA3102はオンフック時に+電圧でないと作動しません。
しょうがないのでFAXと SPA3102をつないでいる電話線を切断して中の芯線を逆接続してクロス接続にしたらうまくいきました。 

 


プリペイド携帯購入その2(chan_mobile.conf修正) [asterisk]

昨日書きかけを保存するつもりが投稿してしまった。
[101DL]部分を追加してasteriskをリスタートします。
携帯側から
デバイスのスキャン→この設定をペアとして設定する→最初のうちはペア設定、非接続の表示になるが
そのうちペア設定の承認を問い合わせてくるのでOKすると携帯電話の音声に接続となる

一度ペアリングが完了するとあとは携帯の電源オフーオン、asteriskの再スタートどちらでも自動的にペアリングする。

以前apt-get install blumanしたけれどlinuxもX画面にはぜんぜん表示せずにBTのペアリングできたからblumanは必要なかったか。後でremoveしてみよう。


プリペイド携帯購入(chan_mobile.conf修正) [asterisk]

固定電話-携帯でasteriskの実験をしていたら固定電話の電話代が高額になったのでプリペイド携帯を購入した。プリモバはbluetoothがついていないのでプリスマしか選択肢が無くdellの101DLを買った。
ソフトバンクのWEBで、プリスマ開通手続き後bluetoothをオンにする。あれ?画面の上部を下向きにドラッグしてもbluetoothのオンオフスイッチが出てこない。nexsus7にもgalaxy sにもあったのに。メニューキーから設定へと進まなければオンできないのか
bluetooth オン
検出可能にチェックして

asteriskから
Cubian*CLI> mobile searchを実行

Cubian*CLI> mobile search
Address           Name                           Usable Type    Port
00:16:D4:A5:CC:4E 101DL                          Yes    Phone   10
Cubian*CLI>

root@Cubian:/etc/asterisk# pico chan_mobile.conf
下記を追加 
[101DL]
; DELL STREAK PRO
address=00:16:D4:A5:CC:4E
port=10
context=incoming-mobile
adapter=corega
group=1
dtmfskip=50
 
conf-foleを変更したらasteriskをリスタート 
Cubian*CLI> core restart now
Cubian*CLI>
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups
root@Cubian:~#

asteriskからchan_mobile経由で外線に掛ける [asterisk]

携帯は受信専用にする予定ですがextensions.confの書き方の練習として実験してみた

extensions.conf
[general]
writeprotect=no
priorityjumping=no

[globals]
USEVOICEMAIL=YES
SPEAKINGCLOCK=1117
ECHOTEST=1333


[default]
; 途中省略

; 携帯への発信は電話番号の先頭に”9”を付け加える事にする。(03-1234-5678に掛けるときは90312345678)
; 変数TO_DIALには先頭の数値を削除しているので
;Mobile
exten => _9.,1,Set(TO_DIAL=${EXTEN:1})
exten => _9.,2,Goto(outgoing,9100,1)

; 途中省略

[outgoing]
exten => 9100,1,NoOp
exten => 9100,2,Dial(Mobile/108SH/${TO_DIAL},60,T)
exten => 9100,3,Congestion
exten => 9100,102,Busy
exten => 9100,103,Hangup

Cubian*CLI>
    -- Bluetooth Device 108SH has connected, initializing...
    -- Bluetooth Device 108SH initialized and ready.
  == Using SIP RTP CoS mark 5
    -- Executing [90312345678@default:1] Set("SIP/2002-00000004", "TO_DIAL=0312345678") in new stack
    -- Executing [90312345678@default:2] Goto("SIP/2002-00000004", "outgoing,9100,1") in new stack
    -- Goto (outgoing,9100,1)
    -- Executing [9100@outgoing:1] NoOp("SIP/2002-00000004", "") in new stack
    -- Executing [9100@outgoing:2] Dial("SIP/2002-00000004", "Mobile/108SH/0312345678,60,T") in new stack
    -- Called Mobile/108SH/0312345678
    -- Mobile/108SH-be64 is making progress passing it to SIP/2002-00000004
       > 0x8ed180 -- Probation passed - setting RTP source address to 192.168.1.24:7106
    -- Mobile/108SH-be64 is ringing
  == Spawn extension (outgoing, 9100, 2) exited non-zero on 'SIP/2002-00000004'
Cubian*CLI>

 
 

chan_mobileの使い道 [asterisk]

このasteriskを設置しようとしているところは残業時間には電話を交換する人がいなくなります。いろいろ不都合があるので正規のPBXに手を入れることなく自動応答システムを勝手に作ろうという試みです。これにはPBXにasteriskを接続する部分と外部からの電話を asteriskに取り込む部分が必要で,chan_mobileはasteriskと携帯を接続するaddonです。
softbankのプリペイドサービスはチャージ後1年間は電話番号が有効なので受信専用として使用できますので、この目的にはぴったりです。
外部からプリペイド携帯に電話後asteriskからの音声ガイダンスに従って内線番号を入力すれば内線電話へ接続してくれます。

なお、電話からDTMFを通すためにgoogleでいろいろ検索しましたが日本語のサイトでは成功した例が無かったのですが(DTMFはキャリアが通していないという書き込みさえあった)携帯で通話中に相手にボタン押して貰って確認したらちゃんと ピポパ音が聞こえたので何とかなるかと思ったのです。
https://wiki.asterisk.org/wiki/display/AST/Mobile+Channel+DTMF+Debouncing

DTMF detection varies from phone to phone. There is a configuration variable that allows you to tune this to your needs. e.g. in mobile.conf
 
[LGTU550]
address=00:12:56:90:6E:00
port=4
context=incoming-mobile
dtmfskip=50

change dtmfskip to suit your phone. The default is 200. The larger the number, the more chance of missed DTMF. The smaller the number the more chance of multiple digits being detected.
とあったのでraspberry-piでできなかったのはCPU能力の関係で出コードができなかったのではとの考えからcubieboardを再度購入してみたわけです。 


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。