ラインキー 1番に電話
日本の電話で一番多いラインキーの使い方は『○○さん、1番に××さんから電話~!』だと思うのですが、パッチ(Asterisk 1.2)または設定のみ(Asterisk 1.4)と特定の電話機でこれが出来るので、まとめておきます。
現在この機能が使える電話機として、以下の機種で動作確認が取れています。
Snom 220
AASTRA 9133i
Grandstream GXP-2000
目次
Asterisk 1.2の場合
Asterisk 1.2系の場合にはMeterMaidと呼ばれるパッチが必要です。パッチ適用後に再コンパイルしてインストールしなおします。
パッチ
http://bugs.digium.com/view.php?id=5779
ここからmertermaid v3を落とします。書かれているようにAsterisk 1.2.7.1(1.2.11まではパッチ可能なことを確認しています)にpatch -p0 でパッチをかけると1箇所、パッチに失敗しますので手動パッチします。
--res/res_features.c
parking_start = 701; parking_stop = 750; parkfindnext = 0; adsipark = 0; parkaddhints = 0; <--パッチ後の2095行目のはず transferdigittimeout = DEFAULT_TRANSFER_DIGIT_TIMEOUT; featuredigittimeout = DEFAULT_FEATURE_DIGIT_TIMEOUT;一旦、make cleanしてからmakeでAsteriskをビルドし直し、make installします。
extensions.confの設定
extensions.confにinclude => parkedcallsを指定してはいけません。自分でextenを記述します。サンプルは次の通りです。
exten => 700,1,Park() exten => 701,1,ParkedCall(701) exten => 701,hint,Local/701@parkedcalls exten => 702,1,ParkedCall(702) exten => 702,hint,Local/702@parkedcalls
exten => は必要な数だけ記述します。
snom 220の場合
snom 220でテスト(バージョンは3.56y ALS)しました。360でも大丈夫だそうです。以下の例を参考に設定します。
各設定は700とか701と書けば後はsnomの設定が勝手に補完しますので、sip:とかIPアドレスは書かなくてもかまいません。
この例の場合キーの一番下(P5)を押すとワンタッチでコールパークに飛ばします。P1とP2を押すとそれぞれ、701または702にパーキングされている呼と接続します。パーキングの数がもっと欲しい場合にはextensions.confに設定を追加し、snomのキー設定も追加します。
そして、ここがミソ。701または702にコールパークがあるとキーのLEDが光ります。点灯状態でそのキーを押せば、パーキングされているものと繋がるわけです。
Aastra 9113iの場合
Snom220等と同様にこの機能でラインキーっぽくコールパーキング機能を使うことができます。
まず9133i側の設定ではプログラマブルキーを"BLF"(Busy Lamp Field)に割り当て、Valueにはパーキングロットの番号(701,702..)を割り当てます。このときのLineの設定は、パーキングロットにダイアルする際の発信ラインを設定します。
キーの7番(一番下)あたりの設定を"Park"で700に設定しておくと、ワンタッチでコールパーキングに飛ばせます。
Asterisk側の設定は以下の例のようにsip.confにSubscribecontextを入れます。
[501] Subscribecontext=default type=friend username=501 secret=password context=default canreinvite=no host=dynamic dtmfmode=rfc2833 callgroup=1 pickupgroup=1 mailbox=501 canreinvite=no
このときSubscribecontextには701,hint,...のように、パーキングロットのhintを記述したextensions.confのコンテキストを記述しておきます。
Asterisk 1.4
Asterisk 1.4以降ではMerterMaidパッチが統合されており、SnomやAastraのファンクションキーのLEDを点灯させることができます。ただし、どうも実装に若干の問題があるのか手動で設定しないとうまく動作しません。 解決方法を発見された方は補足をお願いします。
現象
Asterisk 1.4のfeatures.confにはparkinghintsという設定があり、これをyesにするとパーキングロットのhintが自動的に登録されます。
このhintは[parkedcalls]コンテキスト内に701@parkedcallsのように登録されていますが、電話機側がこれに対してSUBSCRIBEしようとすると、SIP Authエラーではねられてしまい登録できません。
解法
手動でhintを登録します。従来のやり方と同じですが、hintの指定方法が若干異なります。 まずfeatures.confではparkinghintsを設定しません。
[general] parkext => 700 ; What ext. to dial to park parkpos => 701-710 ; What extensions to park calls on context => parkedcalls ; Which context parked calls are in ;parkingtime => 45 ; Number of seconds a call can be parked for ; (default is 45 seconds) ;parkinghints => yes ;transferdigittimeout => 3 ; Number of seconds to wait between digits when transfering a call ;courtesytone = beep ; Sound file to play to the parked caller
次にextensions.conf内でもinclude=>parkedcallsを設定しません。明示的にextenとhitを記述します。
; Ext. 700 for Parking ;include => parkedcalls exten => 700,1,Park() exten => 701,hint,park:701@parkedcalls exten => 701,1,Wait(1) exten => 701,2,ParkedCall(701) exten => 702,hint,park:702@parkedcalls exten => 702,1,Wait(1) exten => 702,2,ParkedCall(702) exten => 703,hint,park:703@parkedcalls exten => 703,1,Wait(1) exten => 703,2,ParkedCall(703) exten => 704,hint,park:704@parkedcalls exten => 704,1,Wait(1) exten => 704,2,ParkedCall(704)
park:701@parkedcallsのように記述する点に注意してください。
sip.confのsubscribecontextはこれを書いたコンテキスト(例:default)を指定します。
これで以前のMerteMaidのようにファンクションキーのランプを点灯させることができます。
電話機の設定
Asterisk 1.2の場合と同じですので参照してください。
疑問点
自動的にhintを登録(parkinghints)した場合、subscribecontext=parkedcallsを指定すればSUBSCRIBEできそうなものだが、この箇所の認証を行う/無視する方法がわからない。
仕組み
Asterisk 1.2系から実装されたSIPのSUBSCRIBE/NOTIFYを使っています。SIPクライアントがSUBSCRIBEしているとAsteriskはそのクライアントに対してNOTIFYでチャネルの状態を投げます。これに反応してLEDを点灯/点滅などの機能を備えた電話機が動作します。
対応可能なSIP電話機はSnom,Polycom(500以上),Aastra,Grandstreamのようです。
注意
Asterisk側を再起動するとSUBSCREIBEされている情報を忘れてしまうので、Asteriskを再起動(あるいはreload)した場合にはAsterisk再起動の後に電話機を再起動する必要があります。
参考
snomのリブートはAsterisk CLIから行えます。/etc/asterisk/sip_notify.confが入っていればCLIから
sip notify reboot-snom ピア名
を実行するとsnom電話機はリブートします。sip_notify.confがない場合にはソースのディレクトリを漁ってみてください。