お問い合わせ

ブログ

これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。

Asteriskでコールパーク設定

okuda Okuda 3 years

Asteriskサーバにコールパーク設定をしてみます。
Asterisk13以降は features.conf でパーキング設定ができなくなっているので res_parking.conf を使用します。

res_parking.confの編集

[general]
;hintも自動生成するようになっていますので、

;デフォルトのパーキングロット
[default]
;パークさせる番号は700
parkext => 700
;パークされる位置は700-709
parkpos => 701-709
;パーキングのhintを自動生成する
;BLFを持つ電話機では701~709をBLFに設定することでパークロットの使用中確認とピックアップが行えます。
parkinghints = yes
;タイムアウトしたら元を呼び返す設定
parkingtime => 60
comebacktoorigin = yes

その他の設定は

オプション名 タイプ デフォルト値 説明
context String parkedcalls コールパークのコンテキスト名前
parkext String このパーキングロットへの内線番号
parkext_exclusive Boolean no yesの場合、parkextで登録されている内線は、このパーキングロットにのみパークされます
parkpos Custom 701-750 パーク中の通話を取得するために使用できるパークスペースの数値範囲
parkinghints Boolean no yesの場合、パーキングスペースのヒントを自動的に追加します
parkingtime Unsigned Integer 45 通話が保留されるまでの時間(秒単位)
parkedmusicclass String パーク中の通話に使用する音楽クラス
指定されていない場合は、デフォルトを使用します
comebacktoorigin Boolean yes yesの場合は、誰も応答しなかった場合はタイムアイト、noの場合は転送をおこなった番号に返す
comebackdialtime Unsigned Integer 30 保留中の通話がタイムアウトしたときにパークした番号にコールバックする内線のタイムアウト
comebackcontext String parkedcallstimeout comebacktoorigin = noの場合、パークされたコールがタイムアウト時にPBXに入るコンテキスト
courtesytone String サウンドファイルの名前が提供されている場合は、これをトーンとして使用します
parkedplay Custom caller Who we should play the courtesytone to on the pickup of a parked call from this lot
parkedcalltransfers Custom no パークされたコールがピックアップされたとき、またはタイムアウトしたときに、DTMF転送機能を誰に適用するか
parkedcallreparking Custom no パークされたコールがピックアップされたとき、またはタイムアウトしたときに、DTMFパーキング機能を誰に適用するか
parkedcallhangup Custom no yesの場合、パークされたコールがピックアップされたとき、またはタイムアウトしたときに、DTMFハングアップ機能を適用する
parkedcallrecording Custom no yesの場合、コール中の通話がピックアップまたはタイムアウトしたときに、DTMFMixMonitor録音機能適用する
findslot Custom first 通話をパークする必要があるパーキングスペースを特定するときに使用するルール

extensions.confの編集

[general]
;CLIによるextenの変更を許可するか禁止するかを指定
writeprotect = no

[globals]

[default]
exten => _20XX,1,NoOp(内線呼出)
exten => _20XX,n,Dial(PJSIP/${EXTEN},60,r)
exten => _20XX,n,NoOp(アンサー)
exten => _20XX,n,Answer()
exten => _20XX,n,NoOp(ハングアップ)
exten => _20XX,n,Hangup

;700番台はコールパーキング用です
;コールパーキング
exten => 700,1,NoOp(コールパーキング)
exten => 700,n,Park()

;パーキングロットをインクルード
;パーキングロット名はデフォルトなので「parkedcalls」
include => parkedcalls

設定の反映

service asterisk restart

CLIで確認

asterisk -cvvvvr

dialplan show parkedcalls

#output
[ Context 'parkedcalls' created by 'res_parking/default' ]
  '700' =>          1. Park()                                     [res_parking]
  '701' =>          hint: park:701@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,701)                    [res_parking/default]
  '702' =>          hint: park:702@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,702)                    [res_parking/default]
  '703' =>          hint: park:703@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,703)                    [res_parking/default]
  '704' =>          hint: park:704@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,704)                    [res_parking/default]
  '705' =>          hint: park:705@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,705)                    [res_parking/default]
  '706' =>          hint: park:706@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,706)                    [res_parking/default]
  '707' =>          hint: park:707@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,707)                    [res_parking/default]
  '708' =>          hint: park:708@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,708)                    [res_parking/default]
  '709' =>          hint: park:709@parkedcalls                    [res_parking/default]
                    1. ParkedCall(default,709)                    [res_parking/default]

確認手順

attendedで転送

  1. 2002 が 2001に発信
  2. 2001 が 応答
  3. 2001 が attended で 2003 に発信
  4. 2003 が 応答
  5. 2001 が 2002 に伝える
  6. 2001 が 2003 に転送
  7. 2002 と 2003 が通話

blindで転送

  1. 2002 が 2001に発信
  2. 2001 が 応答
  3. 2001 が blind で 2003 に発信
  4. 2002 と 2003 が通話

パークコールのコンテキストを分ける場合

defaultのコンテキストがない場合はdefaultコンテキストが初期値で自動で生成されます。
defaultコンテキストのparkextの初期値は700となっています。

res_parking.confの設定

[general]

[default]

[park700]
context => park700
parkext => 700
parkpos => 701-709
;通話をパークする必要があるパーキングスペースを特定するときに使用するルール
findslot => next
;yesの場合、parkextで登録されている内線は、このパーキングロットにのみパークされます
parkext_exclusive=yes
;転送をおこなった番号に返す
comebacktoorigin = no
;パークされたコールがピックアップされたとき、またはタイムアウトしたときに、DTMF転送機能をcallerに適用する
parkedcalltransfers = caller
;パークされたコールがピックアップされたとき、またはタイムアウトしたときに、DTMFパーキング機能をcallerに適用する
parkedcallreparking = caller

[park710]
context => park710
parkext => 710
parkpos => 711-719
findslot => next
parkext_exclusive=yes
comebacktoorigin = no
parkedcalltransfers = caller
parkedcallreparking = caller

extensions.confの設定

[default]

...

;コールパーキング
exten => _70X,1,NoOp(コールパーキング)
exten => _70X,1,ParkedCall(park700,${EXTEN})
exten => _70X,n,Hangup()

exten => _71X,1,NoOp(コールパーキング)
exten => _71X,1,ParkedCall(park710,${EXTEN})
exten => _71X,n,Hangup()

;パーキングロットをインクルード
include => park700
include => park710
Asteriskでコールパーク設定 2021-08-23 14:02:55

コメントはありません。

4046

お気軽に
お問い合わせください。

お問い合わせ
gomibako@aska-ltd.jp