BLF Panasonic拡張

PanasonicのIP電話機(KX-UT,KX-HDV)でBLFを持つものは独自の属性(I-use)を持つ。
これをAsteriskのdevstateで扱えるようにする。

目次

問題点

KX-HDVではキー属性がBLFの場合に"I-use"を投げてもLEDが点灯しない。キー属性のがパークならば青点滅する。(バグ?仕様?)
KX-UT136ではキー属性がBLFでI-useを投げると緑点灯になる。HDVのこの挙動のドキュメントが見つからない。

現在のパッチではexten内から"IUSE"状態をreadしようとするとAsteriskが落ちるので注意。 修正済

対象となるソース

  • PBX本体(devstate)関連
main/devicestate.c
main/pbx.c
funcs/func_extstate.c
funcs/func_devstate.c
include/asterisk/pbx.h
include/asterisk/devicestate.h
  • チャネル
channels/chan_sip.c
pjsip対応はまだ

パッチファイル

  • Asterisk 13用
ファイル:Pana blf13.patch
  • Asterisk 15用
ファイル:Pana blf15.patch
  • Pjsip (13も15も同じ)
*** ./res/res_pjsip/presence_xml.c      2018-05-07 10:16:46.216486617 +0900
--- ./res/res_pjsip/presence_xml.c.org  2018-05-07 10:16:41.336497600 +0900
***************
*** 126,137 ****
                *pidfstate = "busy";
                *pidfnote = "On hold";
                break;
+       case AST_EXTENSION_IUSE:
+               *statestring = "I-use";
+               *local_state = NOTIFY_INUSE;
+               *pidfstate = "busy";
+               *pidfnote = "I-use";
+               break;
        case AST_EXTENSION_NOT_INUSE:
        default:
                /* Default setting */
--- 126,131 ----

LED挙動

Panasonic BLF
Park BLF
<state> KX-UT KX-HDV KX-UT KX-HDV DEVSTATE
terminated 消灯 消灯 消灯 消灯 NOT_INUSE
early 無反応 無反応 赤点滅 赤点滅 RINGING
confirmed 赤点滅 赤点滅 赤点灯 赤点灯 INUSE
I-use 緑点滅 青点滅 緑点灯 無反応 IUSE

実機による挙動を確認。

使用方法

Devstateの項目として"IUSE"が使用できるようになる。
devstate change Custom:hoge IUSE を実行するとI-useでNOTIFYを投げる。
exten => 9999,hint,Custom:hoge のようにするとこのdevstateにSUBSCRIBEできる。