序論
先日、こんな記事を書きました。
筆者がFreePBXを(真面目に)触るのは多分四年ぶりぐらいなのですが、7、8年ぐらい前に遭遇して自分でも自分用マニュアルに記載するぐらいハマったのにまたしても同じ罠にかかってしまったので、戒めと知見共有のために備忘録として残しておきたいと思います。
案外Asterisk界隈では既知の現象かもしれませんが……
転送電話とは
要は電話番号Aに着信したら別の電話番号Bに着信を転送する。という機能のことです。
条件付転送や無条件転送など、設定可能なパターンは色々ありますが、この記事で遭遇する罠について設定パターンは関係ありませんので割愛します。
以下、特別に断りのない限り、本記事での転送電話とは「NTT東西およびNTT東西とのコラボによって提供されるひかり電話での転送電話機能「ボイスワープ」を指す」ものとします。au? SoftBank? 知らない子ですね……
ことの発端
今は亡き「OCNモバイルONE」のかけ放題を契約したSIMを入れたスマホから、FreePBXに収容された電話番号宛に発信すると、「おかけになった電話番号は現在使われておりません。番号をお確かめください」というガイダンスが流れる。という話を聞かされました。
このスマホについては色々トラブルが起きているのですが、結論から言うとスマホ自体に問題があるというわけではありません。
※別にNTTが販売してた機種のくせに0ABJ電話番号を正確に区切れないのは根に持っていません
調査
兎にも角にも先ずは何が起きていたのかを知る必要があります。
該当スマホからFreePBXに収容された電話番号宛に発信してみて100%現象が再現するのを確認。
徐にFreePBXの管理画面を開いてCall Event Loggingを確認します。
Call Event Logging(FreePBXの通話履歴)上では発信電話番号、着信電話番号、共に正確な値が取得されていました。
正確な値が取得されているにも関わらず、より詳細なログを見ると、着信がfrom-pstnに落ちた後に行き先不明となってHang Upが記録されていました。
さらに詳細なログを知るべく、Asterisk Logfilesを開いて該当着信部分にまつわるAsteriskの挙動を調べます。
その結果、FreePBXに設定されていない詳細不明な電話番号宛の着信がダイヤルイン番号としてAsteriskまで到達しており、(当然そんな未知の電話番号からの着信ルートなど設定していないので)インバウンドルートが存在しないためFreePBXが「おかけになった電話番号は現在使われておりません。番号をお確かめください」というガイダンスを流していることが判明しました。
更にこの予期しない電話番号を調べたところ、下掲の様なOCNモバイルONEの公式情報に行き当たりました。
着信側の端末によって、着信履歴の表示に「272038027」がついてしまう場合があります。
発生する機種においては回避する方法はありません。
つまりどういうことだってばよ……
Asterisk的にはこの末尾に付与された未知の(OCNでんわのものと思われる)電話番号「272038027(厳密には027-203-8027)」をダイヤルインされた番号(FROM_DID)として認識している。
当たり前だが普通のPBXは「設定されていない番号宛の着信も無条件で応答する様な設定(にするとアホほど着信攻撃を受けるので)には普通しない(と思う。きっと。メイビー)。
そのため着信ルートが存在せず、PBXの対応としては「おかけになった電話番号は現在使われておりません。番号をお確かめください」というガイダンスを流すことになる。
そういえば……
ここまで情報が出揃ったところで、漸く何年も前、ボイスワープで別の電話番号宛の着信をFreePBXに収容している電話番号宛に転送すると、「何か知らん英語のガイダンスが流れるねんけど!」 という問題に行き当たったことを思い出しました(遅過ぎる)。
あーなるほど、つまりこういうことだな?
OCNでんわのかけ放題の契約があるSIMからの発信は、発信すると無条件で一旦「027-203-8027」の番号宛に着信するようにルーティングされている。
「027-203-8027」に着信した通話は、NTTのボイスワープ(に似たような何か)によって本来の宛先電話番号に向けて「027-203-8027宛の通話である」という情報を保ったまま再ルーティングされている(※なお、この時点から通話料は027-203-8027側に発生することになるので、(OCNでんわのかけ放題を契約している方から集めた合計の電話料金>実際にOCNが使った電話料金になるため、生まれた差額により)通話料が定額になる)。
普通の日本製メーカーの電話機の場合は、その電話回線に割り当てられた電話番号「ではない」「027-203-8027宛の通話である」という情報を持ったままの着信から「027-203-8027宛の通話である」という情報を切り捨てて処理する。
しかしそうではないメーカーの場合、切り捨て処理が行われないか、そもそも自分宛の着信ではないと見做して扱う。
ちなみにこのボイスワープによる着信はひかり電話ゲートウェイの通話履歴を見ても転送電話のそれと分かる情報は無い。普通にゲートウェイに収容されている番号宛の着信として見えている。
そんなのアリかよォ!?
結論
OCNでんわをお使いの電話番号からの発信が着信しない場合の方は「027-203-8027宛の着信」時のインバウンドルートを作ってやれば解決します。
同様にボイスワープを使って別拠点宛の着信をPBXに転送した場合に上手く着信しない場合の方は、「別拠点で契約している電話番号宛の着信」時のインバウンドルートを作ってやれば解決します。
※そもそもイマドキなPBXならボイスワープじゃなくてVPNなりクラウド化するなりで1台のPBXに収容するだろ常考、というツッコミはないものとします。