利用者:Gima
目次
HQ-100
- HQ-100はナカヨのOEM製品。したがって例のコマンドが効く。
変更が効くのは固定IPやHGWのアドレス程度 - FTPの口がある。しかしIDは****_***ではない模様
- telnetを喋る。ログイン方法やコマンド体系はナカヨ製電話機と一緒
- NTPを喋らず、ひかり電話ルーターが吐くSIPヘッダから、時間を取得する
ひかりパーソナルフォン WI-200
NTT東西から出ていたWiFi(クセの強さが半端無い)SIP電話機
パケットから見る起動シーケンスは下記の順のとおり
- DHCPサーバーからIPアドレスを取得
変わったDHCPオプションの要求は特に無し。 - ファームウェアのバージョンアップを確認
"http://www.cpeinfo.jp/?product=WI-200&version=01.02" ←こんなURL - ひかりGWに対し、HTTPのPOSTを投げる
http://10.0.2.62/cas_tel_conf/ ←こんなURL
自局のIDや内線番号、SIPポートなどをゲートウェイに対して送信する - ひかりGWに対しSIP REGISTERパケットを投げる
Asteriskにつなげる為には
以上の挙動を見る限り、Asteriskにつなげる為にはDHCPサーバーとHTTPサーバーが必要。
- WI-200用のDHCP設定
- 固定IP不可。
電話がデフォルトデートウェイにHTTPリクエストを投げるので、DHCPサーバーを新たに設けるか、電話機用のDHCP設定を加えること
デフォルトゲートウェイのIPを変更できるタイプが望ましい - HTTPサーバーの設定
- 電話機が設定ファイルを要求してくるので、POSTで電話機の設定を返す
Biglobeの050
Asteriskからレジストできるけど着信しない時は、ルーターのSIP-NAT機能を使うこと。
Biglobeの050はSIPヘッダのContactを判別してINVITEの投げ先を判別している模様
sipsak
sipsakは内線登録したり大量のSIPパケットを投げつけたりできるSIPのコマンドラインツールである
registerテスト(内線登録)
Asteriskに対してレジストしてみる
sipsak -UI -a pass -s sip:203@127.0.0.1
負荷試験
-Fオプションをつけると、相手先に大量のSIP OPTIONリクエストを投げつける。
sipsak -F -s sip:@10.0.2.1
着信するとZabbixに通知が行くexten
Zabbixのエラー発報をAsteriskにやらせると
「この電話が鳴ったら不幸が起こる」状態になるので、別のアプローチで遊んでみた
extension
着信時と終話時(Hangup後)にシェルを叩いてZabbix senderを使ってZabbixに通知するexten。
発IDをZabbixに通知する事もできる。
exten => ${Fusion},n,Answer exten => ${Fusion},n,Wait(1) exten => ${Fusion},n,SYSTEM(zabbix_sender -z 172.30.255.10 -s OpenWrt -k IncomingCalls -o "Call Start") exten => ${Fusion},n,Dial(SIP/201&SIP/202,60) exten => h,1,SYSTEM(zabbix_sender -z 172.30.255.10 -s OpenWrt -k IncomingCalls -o "Call End")
Zabbix
Zabbixに通知が行ったら、Ejectしたり警子ちゃんを泣かすなり、なんなりと。
詳細(または仕事でZabbix連携させたい場合)はZabbixおじさん™に聞いてみてください
音声ファイルを流す
Quintumねた
NTTとの契約オプションについて
TenorをNTTにつなげるときはP-P接続にしておくこと。
P-MP接続にしておくとTenorBXがつながらないので注意。
Softbankのおとくラインでも同様に注意すること。
Ciscoの場合
- 参考資料:外線接続に利用するNTT ISDN回線 契約オプションについて
- Ciscoの場合
https://supportforums.cisco.com/docs/DOC-11847
発信者IDと着信先ID
ev quの出力結果 ch |01/01| 2011/01/04|21:35:18:520 |OBCSM[108]: Release from peer=0x9680c41c cause=0x22 redir=. TBCSM [108]: Release complete from peer=0x9683d158. OBCSM[108]: pRouteInfo 9689eee8 state 6 ivrType 0 h323RetCode -1 cause 0x22. OBCSM[108]: Trying another route. channel allocated: slot=2 device=0 line=4 chan=2. PRI() newTermCall pSG 96970af8 pPort 96aef708 pPeer 9683d158 deviceId 20000000 line 3 chan 1. TBCSM[108]: Setup from peer=0x9683d158 NP=0x0 NT=0x0. OrigNum= NormNum=0268296204 TranNum=8296204 OrigDest= callingParty=0363676370. PRI(2,0,4,0x8024): sending SETUP_REQ to L3
- callingParty=0312345678.
- 発信者ID
- ev l3 sproto
- SIPプロトコルのロギングレベルを最大にする
- ev l3 ch
- 論理的回線ステータス
- ev l3 cas
- 物理的回線ステータス
- ev c
- ログバッファを消去する
- ev qu
- ログバッファを全表示する
テスト
- debug test r ポート番号(1~6)
- debug test e
- リングテスト
SIPp
ソースはSIPp 入門
下記は勉強会の内容をメモしたもの
SIPpとは
HPのエンジニアが作成した XMLでシナリオ作る PCAPらいぶらりでRTPのストリーミングを流すことができる
いんすこ
ぐぐれ WIndowsにもいんすこOK INVITEやReggisterのテストをやる場合は、OpenSSLライブラリが必須 PCAp playサポートする場合は、libpcapもぶち込むこと
簡単な使い方
sipp -uac (XMLシナリオ) sipp [おぷしょん] 遠隔サイト:ポート
-l 同時発呼数 -r 一秒当たりの通話数
シナリオ
鯖とのSIPのやりとりをXMLで表現
<send></send>→パケットぶちこむ <recev></recev> →パケットげっと
動作としては基本的に二つある
- UAC クライアント
- UAS サーバー
正規表現OK 分岐OK メディア再生OK
PCAP Play
- PCAPライブラリを使うため、root権限が必要となる
- こちら(SIPp使ってる方)でPCAPで補足したパケットをつかって音声を発生させることもできる。
認証付き
- Asteriskが相手のINVITEおよびRegist時には(MD5による暗号化文が混ざるので)組み込みシナリオだけでは無理
- [authentication username=Uha password=OKewwwwwwwwwww というモノをシナリオにぶち込む
CSVファイルから値を挿入
- "inf"オプションで指定したファイルから、シナリオに値をぶち込むことができる。
- 一行目に、ファイルから、データをどのように読むかを記述する(順番に。テキトーにランダム、ユーザー指定)
- デフォルトのデリミタは";"(セミコロン)になっているので注意すること
負荷をかけてみる
- csvで準備した番号に対して順にはっこする
- 単一の番号に(Asteriskで保留音サービスさせてみる。とか)
SIPpで負荷をかけながら、人が通話を行って、通話品質を評価してみる。
- (Asteriskの)MillWattコマンドを使っみて途切れを検出してみる
- 音声の途切れ、かすれなどを実際に聞いて評価する。
- sipp側でレスポンスタイムをcsvにて表示させることができる
ぐるぐる
どーやってググッたか覚えてないものの、有用な資料。
電話機関連
- Cisco SIP IP Phone アドミニストレータ ガイド トラブルシューティング
- CiscoのIP電話はTelnet経由でCLIに入れるらしく、デバッグコマンドがいくつか用意されているそうな。
ステータス確認には良さげなガイド
- Configurable Parameters for the SIP IP Phone
- SIPDefault.cnfのいぢり方。CP-7940GおよびCP-7960G用かと思われ。
- Cisco Unified IP Phone 7970G/7971G-GEアドミニストレーション ガイド for Cisco Unified CallManager Release 5.0 (SIP)
- 長いタイトルでちょっと引く
CP-7970G/7971G-GEの設定マニュアル SIP版
OpenblocksAX3ネタ
- OpenBlocks AX3でasteriskのパフォーマンス測定
- sippを使用したasteriskのパフォーマンス測定が乗ってるのでオススメ
KPML
- SIP のダイヤル規則設定
- CP-7940,CP-7960のような古いタイプの電話機と、CP-7911、7941、7961、7970および7971に代表される比較的新しい電話機では、発信やDTMFの挙動が違うらしい
- Cisco Unified Communications Manager システム ガイド Cisco Unified Communications Manager Business Edition 対応 Release 6.0(1)
- SIP ダイヤル規則では、番号のパターンを電話機でローカルに収集してから、Cisco Unified Communications Manager に送信できます。SIP ダイヤル規則が設定されていない場合、KPML が使用されます。らしい。
- KPML(keypad markup language)?
- Cisco公式のBBSに投稿された質問
ルーター関連
- ロード バランシングの機能のしくみ
- 「OSPFはロードバランシングに云々」の、実際の設定色々。
- NBAR によって認識されないトラフィックの識別
- IAXをQoS サービス ポリシーとかに紐付けたりとか、そのあたりに役立つ鴨。
- ゾーンベースのポリシーのファイアウォールの設計およびアプリケーションのガイド
- SDMに出てくるファイアウォール設定のマニュアルと思いねえ。
例によってCisco語
- Getting Started with Cisco IOS IPS with 5.x Format Signatures
- 最近のIOSに付属するIPS機能の設定方法。
実はAsterisk周りのパターンもチョット掲載されていたりする。
電話機用XMLアプリ
- HTTP Requests and Header Settings
- Voice系ではなくて、CiscoIP電話機でできる付加サービス(XMLアプリなど)の解説。
電話機のスクリーンショットの撮り方も書いてあるが、試したら失敗してしょんぼり(´・ω・`)
- CiscoIPPhone XML Object Quick Reference
- CiscoIP電話機のXML関連資料(クイックリファレンス)プログラムネタ
Registerについて
Asteriskにおけるレジストというのは、サーバーにログインすることを指す。(ぶっちゃけ表現)
sip.confやiax.confの[general]の項目の直下に書いておくこと。
register => 2345:password123@mysipprovider.com:5060/1234
書き方の例は下記の通り
- 2345
- ユーザーIDとして「2345」でログインしようとしている
- password123
- パスワードとして「password123」を指定している
- mysipprovider.com
- ログイン先サーバーとして「mysipprovider.com」を指定する。
- 5060
- SIPパケットのあて先ポートを指定する。
通常はUDPの5060番ポートを使用する。ポート番号は省略可 - /1234
- SIPサーバーから着信する際の番号(外線番号など)として、「1234」を指定する。
SIPパケット中のContactヘッダに、この番号が追加される。デフォルトでは"s"が入る。
他には、下記のような形でレジスター設定する
register => user[:secret[:authuser]]@host[:port][/extension] register => fromuser@fromdomain:secret@host register => fromuser@fromdomain:secret:authuser@host:port/extension
IAXデバッグ
IAXデバッグで頻繁に出てくるACKとかの単語は
http://www.rfc-editor.org/authors/rfc5456.txt を調べるヨロシ
日本語ドキュメントなんぞ無い(´・ω・`)
デバッグ開始(Asterisk1.6)
Halphas*CLI> iax2 set debug on IAX2 Debugging Enabled Halphas*CLI>
IAXデバッグ終了(Asterisk1.6)
Halphas*CLI> iax2 set debug off IAX2 Debugging Disabled Halphas*CLI>
あじるほんにQualfyしてみた
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX Subclass: POKE Timestamp: 00008ms SCall: 00006 DCall: 00000 [122.103.236.237:4569] Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX Subclass: PONG Timestamp: 00008ms SCall: 00046 DCall: 00006 [122.103.236.237:4569] Tx-Frame Retry[-01] -- OSeqno: 001 ISeqno: 001 Type: IAX Subclass: ACK Timestamp: 00008ms SCall: 00006 DCall: 00046 [122.103.236.237:4569]
あじるほんにRegistしてみた
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX Subclass: REGREQ Timestamp: 00002ms SCall: 00005 DCall: 00000 [122.103.236.237:4569] USERNAME : 858??? REFRESH : 60 Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 001 Type: IAX Subclass: REGACK Timestamp: 00003ms SCall: 00008 DCall: 00005 [122.103.236.237:4569] USERNAME : 858???? DATE TIME : 2009-06-17 13:43:42 REFRESH : 60 APPARENT ADDRES : IPV4 222.149.22.251:60003 MESSAGE COUNT : 0 CALLING NUMBER : 858??? Tx-Frame Retry[-01] -- OSeqno: 001 ISeqno: 001 Type: IAX Subclass: ACK Timestamp: 00003ms SCall: 00005 DCall: 00008 [122.103.236.237:4569]
Qualify
Qualify(生存確認:王大人パケット)はAsteriskのバージョンおよびプロトコル(SIP or IAX)により
設定内容が異なったりする。
SIP
sip.confに書くとOK
- qualify=yes
- 生存確認パケットを投げる
- qualify=4000
- 生存確認パケットを投げ、4000ms(4秒)以上遅れた場合は王大人により、死亡が認定される。
WiFi電話機はこの値を大きめにしておくこと。(5000ms位でも良いかもしれない) - qualify=no
- 生存確認パケットを投げない。王大人をクビにする。
- qualifyfreq=1
- 生存確認パケットを秒刻みで設定する。王大人が1秒毎に出現する。デフォルト値は60000 ms(60秒)
Asterisk1.6以降で使用可能
IAX
iax.confに書くとOK
内容としてはSIPと大して変わらないものの、古いバージョンから生存パケットの間隔を設定できるので、パケット増幅スキーな人にIAXオススメ
- qualify=yes
- 生存確認パケットを投げる
- qualify=4000
- 生存確認パケットを投げ、4000ms(4秒)以上遅れた場合は死にかけと判断される。(Status:LAGGEDになる)
- qualifyfreqok=400
- 生存確認パケットをミリ秒刻みで設定する。1に設定すると、アクセスランプが素敵な状態になる。
- qualifyfreqnotok=3
- 生存確認パケットを投げ、3ms(3ミリ秒)以上遅れた場合は王大人により、死亡が認定される。
声優さん
voip-info.jpで配布している日本語音声は竹田えり さんなのはよく聞くが、他の声優さんに頼んだ場合は、いくらかかるのだろうか
という訳で、ぐーぐる先生に聞いてみた。
Asteriskに投資するぜ!イエア!!!という意味で、竹田えりさんバージョン以外に、日本語音声ファイルを作ってみるのも悪くないかもしれないですな!
- STARS SYSTEM Ltd.
- 「電話用音声メッセージをAsterisk等で即利用可能な形式で録音いたします。」らしい。
で、いくらなんだろう。 - 音響・声優事務所 Sham.Studio.
- 1日/8時間 \100,000~ らしい。
- はてな
- Q.声優さんの相場を教えてください。 A.相場はありません。
- AtelierPeach-FAQ-
- 5万円くらいか? 判りやすい。
- ネット声優(wikipedia)
- その存在を初めて知ってしまった。
個人ベースで依頼するなら、こっちかな(´-`)
余談
- 某コールセンターでは、声に定評のある社内オペレータさんにIVRの音声を吹き込んでもらっていたそうな。
- 外資系では、有名どころの声優さんに吹き込んでもらったそうな。
- 音声カスタマイズの際、(数年経過しても)同じ人に声を吹き込んでもらえるかどうか。が難点らしい。
sip.confのpermit/deny
IPアドレスによるACLが組めるっぽいので試してみた。
書いてみる
こんな感じでsip.confに書いてみた
[503] ; Snom300 type=friend fromdomain=dynamic username=503 secret=************** host=dynamic canreinvite=yes language=jp qualify=3000 insecure=very deny=0.0.0.0/0 permit=10.0.5.0/255.255.255.192 permit=192.168.0.0/24
確認
ACLで接続制限ができたかどうかを確認してみた。
許可されてないIPアドレス帯からregisterしようとすると、下記のような結果になった。
[Jan 25 20:06:13] NOTICE[1904]: chan_sip.c:15236 handle_request_register: Registration from '"503" <sip:503@Asterisk>' failed for '192.168.5.57' - Device does not match ACL
書き方のコツ
まずはALL Denyで全部不許可にした上で、接続を許可するIPアドレス帯をpermitで指定するのが良さげな感じ
下記のような書き方が宜しい
deny=0.0.0.0/0 permit=10.0.5.0/255.255.255.192 permit=192.168.0.0/24
playtones遊び
テンポ120で四分音符の箔を打つ場合、60000ms(1分)の中で120回リズムを刻むわけで
60000/120=500となる
テンポ120で8分音符の箔を打つ場合は、箔がその倍なので(240個のリズム)
60000/240=250となる
簡単な曲をPlaytonesで演奏する場合は、このような形で書くことになる。
exten => _5,1,Answer exten => _5,n,Wait(1) exten => _5,n,Playtones(!293/1000,!440/1000,!391/500,!349/500,!329/500,!261/500,!293/1000, !523/500,!391/250,!440/250,!349/500,!391/250,!349/250,!329/500,!261/500,!293/8000) exten => _5,n,Wait(16) exten => _5,n,StopPlaytones exten => _5,n,Busy(5) exten => _5,n,Hangup
実際に書くとしたら、旋律しかない曲(FFの最初の曲とか)に絞って書いてみるとか、
複数の内線(exten複数)に分けて書くとか、そのあたり。
Wait( )でタイミングの同期を取るのは難しいと思われる訳で。
CP-797Xの壁紙設定
Cisco電話機の、SIPファームウェア設定で活きて来るっぽい「壁紙設定の有無」
SCCP電話機にて設定したものの、反応なし。
<commonProfile> <phonePassword></phonePassword> <backgroundImageAccess>true</backgroundImageAccess> <callLogBlfEnabled>2</callLogBlfEnabled> </commonProfile>
IP-24N-ST101Aとテプラ
IP-24N-ST101Aの示名条片をテプラで作成する場合、次の設定でやると上手くいくぽ
- SS4K(白の4ミリ)を使用する
- 文字サイズは一行→「大」を設定
- スペースキーをたくさん入れる
こんな感じで↓
代表1 代表2 代表3 代表4 外線代表 内線代表
スペースは9つくらい挿入しておく
ボタンを4つ使用する場合は、もうちょっと緩めでも気にならない
ぱーく1 ぱ~く2 はーぐ3 ばーく4
AutoAnswer(Astlinux0.4.8限定)
まずは、extension"300"にはモーニングコールなり、MoHなりの処理を設定しておく。
まずは、テキトーに下記のようなテキストファイルを作成しておく
Forneus tmp # cat outband.txt Channel: sccp/512/aa1w Callerid: 511 MaxRetries: 1 RetryTime: 5 WaitTime: 3 Context: default Extension: 300
次に/var/spool/asterisk/outgoing/ に先ほどのファイルをコピーするとOK
Forneus tmp # cp outband.txt /var/spool/asterisk/outgoing/
cronに、コピー処理を埋め込めば定時発信(モーニングコールなど)することができる。
Remote UNIX connection
CLIコンソールに出てくる、下記のメッセージは一体何者か。不届き者か。
-- Remote UNIX connection -- Remote UNIX connection disconnected
で、さっそく調べてみた。
どうやら、他のユーザー、もしくは監視サービス(Zabbix他)がCLI接続したときに出るログらしく、原因は下記の通りとなる
- 他のユーザーがCLIに入ったかもしれない。
- asterisk manager (manager.conf)がつなげてるかもしれない。
- Nagios(のプラグイン)が繋げているかもしれない。
対応策としては、下記の通り。
- こいつは無害なんで気にするな。
- vの数を減らせ(asterisk -vvvvvvvvvvvvvvvvvvvvvrのこと)
- CLIからログオフしてしまえ