最近、RaspberyPi にAsteriskをインストールしました。
以下のようなことを実現したいな~と考えているのですが、
このようなことは可能でしょうか?
また、実現可能だとしたら、どのような記述を行えば良いでしょうか?
■実現したいこと
1.外線からの着信が発生する。
2.特定の内線(携帯にインストールした Acrobits SoftPhone)を呼び出す。
3.2で内線を呼び出している間に、外線側に音声ガイダンスを流しながらダイヤルボタン#を受け付ける。
(音声ガイダンスが終了したら通常の呼び出し音をならす。)
(音声ガイダンスでは、#を押すことで呼び出しを止めてメッセージが残せることを案内する)
4.3で#を検出したら内線への呼び出しを中止して、VoiceMailにメッセージを録音させる。
5.2で#を検出する前に内線が応答すれば、音声ガイダンスやダイヤルボタンの検出を中止して、外線と内線の通話を開始する。
6.2で規定時間内に内線の応答が無ければ呼び出しを中止して、VoiceMailにメッセージを録音させる。
■実現したい理由
内線(Acrobits SoftPhone)はプッシュ通知を有効にしています。
このため、回線状態?によっては、Asteriskから内線呼出を開始しても、
内線(Acrobits SoftPhone)に着信音が流れ始めるまでにタイムラグがあったり、規定時間に着信が無い場合があります。
そのため、内線を呼び出しながら、外線側にガイダンスを流すことで、外線側の体感的な待ち時間を減らすことが出来きてストレス軽減が期待できる。
また、音声ガイダンスで#押下でメッセージが残せることが分かれば、応答するまで待つか、メッセージの録音で済ますかを選択させることができるため、余計な待ちストレスを与えなくて済む。
■調べたこと?
・Dialでは同期的に呼び出すため、裏で外線側に音声ガイダンスを流したり、ダイヤルボタンの検出ができない。
・BackGroundでは、ダイヤルボタンの検出待ちとなるため、裏で内線を呼び出せない。
・Originateでは非同期に実行で切るっぽいが、使い方のサンプルが見つけられず、どのようにExtensions.confに記述すれば良いか分からないし、
そもそも、上記のような複雑なことを行うことが可能なのかも分からなかった。
■環境
Asteriskバージョン:
Asterisk 16.2.1~dfsg-1+deb10u1 (debianのapt installでインストールしたもの)
OSの種類とバージョン:
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster