ラインキー 1番に電話

日本の電話で一番多いラインキーの使い方は『○○さん、1番に××さんから電話~!』だと思うのですが、パッチ(Asterisk 1.2)または設定のみ(Asterisk 1.4)と特定の電話機でこれが出来るので、まとめておきます。

現在この機能が使える電話機として、以下の機種で動作確認が取れています。

  • Snom 220
  • AASTRA 9133i
  • AASTRA 53i
  • AASTRA 57i
  • 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でも大丈夫だそうです。以下の例を参考に設定します。 Snom220func.jpg
各設定は700とか701と書けば後はsnomの設定が勝手に補完しますので、sip:とかIPアドレスは書かなくてもかまいません。
この例の場合キーの一番下(P5)を押すとワンタッチでコールパークに飛ばします。P1とP2を押すとそれぞれ、701または702にパーキングされている呼と接続します。パーキングの数がもっと欲しい場合にはextensions.confに設定を追加し、snomのキー設定も追加します。
そして、ここがミソ。701または702にコールパークがあるとキーのLEDが光ります。点灯状態でそのキーを押せば、パーキングされているものと繋がるわけです。

Aastra 9133iの場合

Snom220等と同様にこの機能でラインキーっぽくコールパーキング機能を使うことができます。

まず9133i側の設定ではプログラマブルキーを"BLF"(Busy Lamp Field)に割り当て、Valueにはパーキングロットの番号(701,702..)を割り当てます。このときのLineの設定は、パーキングロットにダイアルする際の発信ラインを設定します。
キーの7番(一番下)あたりの設定を"Park"で700に設定しておくと、ワンタッチでコールパーキングに飛ばせます。 9133i-w1.jpg

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のコンテキストを記述しておきます。

GXP-2000の場合

他の電話機と同様に、この機能でラインキーっぽくコールパーキング機能を使うことができます。 下記の設定にします。
キーの7番(一番下)あたりの設定を"Park"で700に設定しておくと、コールパーキングに飛ばせます。

Key Mode
Busy Lamp Field (BLF)に変更します。
Account
特に設定を変更する必要はありません。デフォルト値は"Account 1"です。
Name
LCDディスプレイに表示する「パークの番号」を入力します
UserID
パークの番号を入力します

他の電話機とは若干操作が異なり、下記の手順でコールパーキング機能を使います。

  1. 電話をかける(受ける)
  2. TRNFキーを押す
  3. "Park"で700に割り当てたキーを押す。(見本では一番下のキー)

GXP2000 Basic Setting-2.png

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がない場合にはソースのディレクトリを漁ってみてください。