外線からの着信時に内線を呼び出しつつ、外線には音声ガイダンスを流しながらダイヤルボタンを受け付けるには?

165 views
Skip to first unread message

関谷友邦

unread,
Feb 28, 2020, 9:28:11 AM2/28/20
to 日本Asteriskユーザ会
最近、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 -V
  Asterisk 16.2.1~dfsg-1+deb10u1  (debianのapt installでインストールしたもの)
OSの種類とバージョン:
 $ uname -a
  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

高橋隆雄

unread,
Mar 2, 2020, 10:57:05 PM3/2/20
to 日本Asteriskユーザ会
できるのは出来ますが、結構、書かないとだめです。

呼の『端』をどう扱うかで、一旦、Asteriskが受けておいて(着信させる)、その上で内線
呼出を行えばいいので、書き方のサンプルというよりextenでの開発が必要になるという
感じですかね。

簡単に使える「かも」なものとしてはSLAがありますが、あまり人気ないようです。

大体のことはexten書けば実現できるのですけども。 

2020年2月28日(金) 23:28 関谷友邦 <muno...@gmail.com>:
--
このメールは Google グループのグループ「日本Asteriskユーザ会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには asterisk-ug...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/asterisk-ug/928005fd-9622-4ee4-854a-54e5daa83ec4%40googlegroups.com にアクセスしてください。


--
Takao Takahashi

Makoto Hamano

unread,
Mar 3, 2020, 1:39:24 AM3/3/20
to 日本Asteriskユーザ会
FollowMeでできないかな?
あまり馴染みがないですけどね、日本だと。

https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+Application_FollowMe
https://www.voip-info.org/asterisk-cmd-followme/

Hamano

2020年3月3日(火) 12:57 高橋隆雄 <t...@gapj.net>:
> このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/asterisk-ug/CAOz1eaiVf6KaU%2B5Y9A8TxEH-qsDWObdmy9u0n4b4XMbbFOJ%3DQA%40mail.gmail.com にアクセスしてください。

関谷友邦

unread,
Mar 5, 2020, 8:12:28 PM3/5/20
to 日本Asteriskユーザ会
ご返信ありがとうございます。

端というのは、Asteriskにおけるトランク(ひかり電話の固定電話)や内線という意味で良いでしょうか?

特定の固定電話番号または特定の内線番号に着信が合った時に、期待動作を行いたいと思っています
動作のポイントは着信先(PJSIPの内線) が電話に出るまでの間、発信元にアナウンスとDTMFの入力が行える状態にすることだと思っており、
この動作のためには、非同期?で行う必要があると考えています。

extenでは同期的に1つ1つの動作が必要かと思っておりましたが、
書き方次第では、非同期的に行える可能性があると言うことですね。

もう少し、調べてみたいと思います。


2020年3月3日火曜日 12時57分05秒 UTC+9 高橋隆雄:
このグループから退会し、グループからのメールの配信を停止するには aster...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/asterisk-ug/928005fd-9622-4ee4-854a-54e5daa83ec4%40googlegroups.com にアクセスしてください。


--
Takao Takahashi

関谷友邦

unread,
Mar 5, 2020, 8:14:17 PM3/5/20
to 日本Asteriskユーザ会
ご返信ありがとうございます。

FollowMeという機能でも出来る可能性があるのですね。
どのような機能なのか良く分かっておりませんでしたので、調べてみたいと思います。


2020年3月3日火曜日 15時39分24秒 UTC+9 Makoto Hamano:
>> このグループから退会し、グループからのメールの配信を停止するには aster...@googlegroups.com にメールを送信してください。
>> このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/asterisk-ug/928005fd-9622-4ee4-854a-54e5daa83ec4%40googlegroups.com にアクセスしてください。
>
>
>
> --
> Takao Takahashi
>
> --
> このメールは Google グループのグループ「日本Asteriskユーザ会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには aster...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/asterisk-ug/CAOz1eaiVf6KaU%2B5Y9A8TxEH-qsDWObdmy9u0n4b4XMbbFOJ%3DQA%40mail.gmail.com にアクセスしてください。

tiger jp

unread,
Mar 5, 2020, 9:51:54 PM3/5/20
to 日本Asteriskユーザ会
Dialでは同期的に呼び出すため、裏で外線側に音声ガイダンスを流したり、ダイヤルボタンの検出ができない。

DTMFはわかりませんが、DIALコマンドのmオプションで音声ガイダンスは流せたかと思います。
流したいガイダンスを保留音としてクラス定義しておきます。

例)
Dial(SIP/201,30,m(ここに定義したガイダンスのクラス名))


2020年3月6日金曜日 10時14分17秒 UTC+9 関谷友邦:

関谷友邦

unread,
Mar 13, 2020, 10:01:34 AM3/13/20
to 日本Asteriskユーザ会
保留音の代わりにメッセージを再生するという方法は思いつきませんでした。
ご教示頂いた方法で、やりたいことが実現できました。
ありがとうございました。

exten => 309,1,Dial(IAX2/309,90,dm(AnnounceSharp))
のような記載でアナウンスとDTMFの検知が行えました。


2020年3月6日金曜日 11時51分54秒 UTC+9 tiger jp:
Reply all
Reply to author
Forward
0 new messages