利用者:Gima

提供: VoIP-Info.jp
2015年10月27日 (火) 11:46時点におけるGima (トーク | 投稿記録)による版 (Zabbixおじさんにトレードマークを付けてみた)
移動先: 案内検索

やる気を燃料に。技術力をエンジンに。
やる気はけっこう簡単に無くなります。

着信するとZabbixに通知が行くexten 

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おじさん™に聞いてみてください

音声ファイルを流す

IVRとかで「お電話ありがとうございます●●です。本日の業務は終了しました」と流したいなら、ゆっくりボイスを流す方法がある。
そこまで作りこみする必要がない場合は、テキトーに音声ファイルを流したほうが手っ取り早い。

サウンドフォーマットについて

チャンネル数
モノラル1ch
周波数(サンプルレート)
8000Hz
フォーマット
GSM(他でも行けると思うけどGSMが無難だった)

Windowsでファイルを創る

SOX Windows版でWAVファイルを作る場合、DOS窓(コマンドプロンプト)から下記の通り入力。

C:\Program Files\sox-14-4-1>sox rusuden.wav -r 8000 -c1  rusuban_info.gsm
rusuden.wav
変換元のファイル
-r 8000
周波数(サンプルレートを8000Hzに指定)
-c1
チャンネル数(モノラルに指定)
rusuban_info.gsm
ファイル名およびフォーマット(GSMフォーマットにしつつrusuban_infoを作成)

SOX法とダダかぶりなのがうざったい

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に投稿された質問


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とは

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版

ルーター関連

ロード バランシングの機能のしくみ
「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)
その存在を初めて知ってしまった。
個人ベースで依頼するなら、こっちかな(´-`)

余談

  1. 某コールセンターでは、声に定評のある社内オペレータさんにIVRの音声を吹き込んでもらっていたそうな。
  2. 外資系では、有名どころの声優さんに吹き込んでもらったそうな。
  3. 音声カスタマイズの際、(数年経過しても)同じ人に声を吹き込んでもらえるかどうか。が難点らしい。

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( )でタイミングの同期を取るのは難しいと思われる訳で。

壁紙設定

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

で、さっそく調べてみた。
どうやら、他のユーザー、もしくは監視サービス(nagios他)がCLI接続したときに出るログらしく、原因は下記の通りとなる

  • 他のユーザーがCLIに入ったかもしれない。
  • asterisk manager (manager.conf)がつなげてるかもしれない。
  • Nagios(のプラグイン)が繋げているかもしれない

対応策としては、下記の通り。

  • こいつは無害なんで気にするな
  • vの数を減らせ(asterisk -vvvvvvvvvvvvvvvvvvvvvrのこと)
  • CLIからログオフしてしまえ