FreePBX/Asteriskからブラステルのアナウンスをスキップする。
■前置き
ブラステル(Brastel)から発信する場合、「●分、ごりようできます。ブラステルのご利用ありがとうございます。」とかいうアナウンス(ガイダンス)が流れます。これ、先人の知恵では「**」を2度入力するとスキップ(中断・省略)することが出来るというものです。Asterisk経由で発信する場合も手動で「**」を2度入力するとスキップすることが出来ますが、面倒なのでAsteriskのダイヤルプランで解決したいと思います。
つまり、自動化。
ちなみに、私はこれで解決しないと、上手くFAXが送信出来ませんでした(;^ω^)。
■考え方
■送信記号について
考え方としては至ってシンプルで、発信の際に「ポーズ信号」+「**」を2回送信することが出来れば解決します。
問題は、その送信方法です。
アスタリスクはダイヤルプランのDial()で発信する記号の定義があり、「*」は発信することが出来ます。あとは、「ポーズ信号」ですが「w」で0.5秒のポーズ信号となります。
つまりは「w**」で「0.5秒ポーズ+**」が発信できます。
■出来ない送信方法
ここまでわかれば、どうやって送信するか・・・ということになります。FreePBXで管理しているextensions.confなどはいろいろと分割して書かれています。複雑にincludeされており、中身をたどっていくと、ダイヤルするセクションあたりでSUFFIX(最終的に${TDIAL_SUFFIX}とか)をつけることが出来るのがわかります。
しかしながら、このSUFFIXで設定する方法では「おかけになった〜」というブラステルの残念なアナウンスを何度も聞く(拝聴する)こととなります。
つまりこの方法では使えないです。
あとは、ダイアル後にSendDTMF()で送出する方法もありますが、これも同様に不可でした。
■できる送信方法
書き方や海外フォーラムなどを参考にしていると、Dial()内でD()で信号を送出する方法があり、SUFFIXはこれで送出した方が良いという記載を見かけます。
あとは、この方法で数パターン試して無事に送出することに成功しました。問題はポーズ信号の数とタイミングも関係しているようでした。
■具体的な方法
ということで、具体的に送出する方法を記載していきます。
個人的にブラステル直接発信する内線番号を決めていますので、その内線からブラステル外線発信の際にスキップするような記述です。つまり、他の内線からでしたら分数を聴けると言うことです。ブラステル専用内線として、音声用1回線、FAX送信用1回線(HylaFAX)という考え方です。
■ダイヤルプランの作成(コンテキスト)
FreePBXの場合、 アドミン→CONF_EDIT→extensions_custom.confを開いて、次のようなコードを入れます。なお、メール送信のコードなど一部は削除してあります。
[from-brastel-internal]
include => from-internal
exten => _00990XXXXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _00990XXXXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},force))
exten => _00990XXXXXXXXXX,n,Set(_ROUTEID=3)
exten => _00990XXXXXXXXXX,n,Set(_ROUTENAME=outbounds-ob)
exten => _00990XXXXXXXXXX,n,Set(INTRACOMPANYROUTE=YES)
exten => _00990XXXXXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _00990XXXXXXXXXX,n,ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=0099))
exten => _00990XXXXXXXXXX,n,Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)})
exten => _00990XXXXXXXXXX,n,Set(_CALLERIDNUMINTERNAL=${CALLERID(num)})
exten => _00990XXXXXXXXXX,n,Set(_EMAILNOTIFICATION=TRUE)
exten => _00990XXXXXXXXXX,n,Set(_NODEST=)
exten => _00990XXXXXXXXXX,n,Dial(SIP/trunk-out/${EXTEN},,D(w**w**))
exten => _00990XXXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _00990XXXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},force))
exten => _00990XXXXXXXXX,n,Set(_ROUTEID=3)
exten => _00990XXXXXXXXX,n,Set(_ROUTENAME=outbounds-ob)
exten => _00990XXXXXXXXX,n,Set(INTRACOMPANYROUTE=YES)
exten => _00990XXXXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _00990XXXXXXXXX,n,ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=0099))
exten => _00990XXXXXXXXX,n,Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)})
exten => _00990XXXXXXXXX,n,Set(_CALLERIDNUMINTERNAL=${CALLERID(num)})
exten => _00990XXXXXXXXX,n,Set(_EMAILNOTIFICATION=TRUE)
exten => _00990XXXXXXXXX,n,Set(_NODEST=)
exten => _00990XXXXXXXXX,n,Dial(SIP/trunk-out/${EXTEN},,D(w**w**))
exten => _0XXXXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _0XXXXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},force))
exten => _0XXXXXXXXXX,n,Set(_ROUTEID=3)
exten => _0XXXXXXXXXX,n,Set(_ROUTENAME=outbounds-ob)
exten => _0XXXXXXXXXX,n,Set(INTRACOMPANYROUTE=YES)
exten => _0XXXXXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _0XXXXXXXXXX,n,ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=0099))
exten => _0XXXXXXXXXX,n,Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)})
exten => _0XXXXXXXXXX,n,Set(_CALLERIDNUMINTERNAL=${CALLERID(num)})
exten => _0XXXXXXXXXX,n,Set(_EMAILNOTIFICATION=TRUE)
exten => _0XXXXXXXXXX,n,Set(_NODEST=)
exten => _0XXXXXXXXXX,n,Dial(SIP/trunk-out/${EXTEN},,D(w**w**))
exten => _0XXXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _0XXXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},force))
exten => _0XXXXXXXXX,n,Set(_ROUTEID=3)
exten => _0XXXXXXXXX,n,Set(_ROUTENAME=outbounds-ob)
exten => _0XXXXXXXXX,n,Set(INTRACOMPANYROUTE=YES)
exten => _0XXXXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _0XXXXXXXXX,n,ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=0099))
exten => _0XXXXXXXXX,n,Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)})
exten => _0XXXXXXXXX,n,Set(_CALLERIDNUMINTERNAL=${CALLERID(num)})
exten => _0XXXXXXXXX,n,Set(_EMAILNOTIFICATION=TRUE)
exten => _0XXXXXXXXX,n,Set(_NODEST=)
exten => _0XXXXXXXXX,n,Dial(SIP/trunk-out/${EXTEN},,D(w**w**))
この中で、outbounds-obはアウトバウンドルート名を、trunk-outは使用するトランクのOutgoing名に書き換えてください。(上記の0099は発信用プレフィックスとして各環境に読み替えてください。)
肝は、
exten => _0XXXXXXXXX,n,Dial(SIP/trunk-out/${EXTEN},,D(w**w**))
の「D(w**w**)」です。いろいろ試して、一周まわって、やっぱりこれに落ち着きました(;^ω^)。状況にってwの数を増やすなりしてください!
FAXを送信する場合は、別のプランをつくり次のような1行
exten => _0XXXXXXXXX,n,Wait(4)
を追記してください。桁数やパターンマッチは各環境に合わせてください。
■内線の設定
このコンテキストはfrom-brastel-internalを指定した内線のみ有効です。
よって、ブラステルの音声ガイダンスをスキップしたい内線のcontextに「from-brastel-internal」を指定します。
■どうでもいいから全てスキップしたい場合。
「from-brastel-internal」ではなく、「from-internal-custom」に書けば上手くいくのかも知れません。ためしてないからスマソ。
■注意点
FreePBXで生成するものと違いますので、各種反映がされません。つまり、外線発信パターン一致の場合のメール通知などがされませんから必要な処理は自分で入れてください。
■試験
設定が終わったら、内線間通話が出来るかどうか。
ブラステル経由の発信の場合、アナウンスがスキップされるかどうかを確認しましょう。
モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?
Related Posts
https://kshigeyama.dreampresenter.info/2021/04/04/5500/https://i0.wp.com/kshigeyama.dreampresenter.info/wp-content/uploads/2021/03/4392246_m.jpg?fit=1024%2C683&ssl=1https://i0.wp.com/kshigeyama.dreampresenter.info/wp-content/uploads/2021/03/4392246_m.jpg?resize=150%2C150&ssl=1FreePBX/AsteriskAsterisk,FreePBX,ブラステル■前置き ブラステル(Brastel)から発信する場合、「●分、ごりようできます。ブラステルのご利用ありがとうございます。」とかいうアナウンス(ガイダンス)が流れます。これ、先人の知恵では「**」を2度入力するとスキップ(中断・省略)することが出来るというものです。Asterisk経由で発信する場合も手動で「**」を2度入力するとスキップすることが出来ますが、面倒なのでAsteriskのダイヤルプランで解決したいと思います。 つまり、自動化。 ちなみに、私はこれで解決しないと、上手くFAXが送信出来ませんでした(;^ω^)。 ■考え方 ■送信記号について 考え方としては至ってシンプルで、発信の際に「ポーズ信号」+「**」を2回送信することが出来れば解決します。 問題は、その送信方法です。 アスタリスクはダイヤルプランのDial()で発信する記号の定義があり、「*」は発信することが出来ます。あとは、「ポーズ信号」ですが「w」で0.5秒のポーズ信号となります。 つまりは「w**」で「0.5秒ポーズ+**」が発信できます。 ■出来ない送信方法 ここまでわかれば、どうやって送信するか・・・ということになります。FreePBXで管理しているextensions.confなどはいろいろと分割して書かれています。複雑にincludeされており、中身をたどっていくと、ダイヤルするセクションあたりでSUFFIX(最終的に${TDIAL_SUFFIX}とか)をつけることが出来るのがわかります。 しかしながら、このSUFFIXで設定する方法では「おかけになった〜」というブラステルの残念なアナウンスを何度も聞く(拝聴する)こととなります。 つまりこの方法では使えないです。 あとは、ダイアル後にSendDTMF()で送出する方法もありますが、これも同様に不可でした。 ■できる送信方法 書き方や海外フォーラムなどを参考にしていると、Dial()内でD()で信号を送出する方法があり、SUFFIXはこれで送出した方が良いという記載を見かけます。 あとは、この方法で数パターン試して無事に送出することに成功しました。問題はポーズ信号の数とタイミングも関係しているようでした。 ■具体的な方法 ということで、具体的に送出する方法を記載していきます。 個人的にブラステル直接発信する内線番号を決めていますので、その内線からブラステル外線発信の際にスキップするような記述です。つまり、他の内線からでしたら分数を聴けると言うことです。ブラステル専用内線として、音声用1回線、FAX送信用1回線(HylaFAX)という考え方です。 ■ダイヤルプランの作成(コンテキスト) FreePBXの場合、 アドミン→CONF_EDIT→extensions_custom.confを開いて、次のようなコードを入れます。なお、メール送信のコードなど一部は削除してあります。 [from-brastel-internal] include => from-internal exten => _00990XXXXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,) exten => _00990XXXXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},force)) exten => _00990XXXXXXXXXX,n,Set(_ROUTEID=3) exten => _00990XXXXXXXXXX,n,Set(_ROUTENAME=outbounds-ob) exten => _00990XXXXXXXXXX,n,Set(INTRACOMPANYROUTE=YES) exten => _00990XXXXXXXXXX,n,Set(MOHCLASS=${IF($['${MOHCLASS}'='']?default:${MOHCLASS})}) exten => _00990XXXXXXXXXX,n,ExecIf($['${KEEPCID}'!='TRUE' & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=0099)) exten => _00990XXXXXXXXXX,n,Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)}) exten => _00990XXXXXXXXXX,n,Set(_CALLERIDNUMINTERNAL=${CALLERID(num)}) exten => _00990XXXXXXXXXX,n,Set(_EMAILNOTIFICATION=TRUE) exten => _00990XXXXXXXXXX,n,Set(_NODEST=) exten => _00990XXXXXXXXXX,n,Dial(SIP/trunk-out/${EXTEN},,D(w**w**)) exten => _00990XXXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,) exten => _00990XXXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},force)) exten => _00990XXXXXXXXX,n,Set(_ROUTEID=3) exten => _00990XXXXXXXXX,n,Set(_ROUTENAME=outbounds-ob) exten => _00990XXXXXXXXX,n,Set(INTRACOMPANYROUTE=YES) exten => _00990XXXXXXXXX,n,Set(MOHCLASS=${IF($['${MOHCLASS}'='']?default:${MOHCLASS})}) exten => _00990XXXXXXXXX,n,ExecIf($['${KEEPCID}'!='TRUE' & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 &...しげっち法師さん kshigeyama@gmail.comAdministratorドリームプレゼンター&サポータ&アドバイザです。こっちは比較的マジメ系w。ありとあらゆるコトをフュージョンした感じで生きていこうかな。 文房具やガジェット、家電屋さん巡り、バスに乗ってふらふらなどもしています。 Bot作者でもあります。システム構築(Web/PHP/Javaとか)・IT/ビジネスコンサル系です。しげっち@ドリームプレゼンターWeb
コメントを残す