各種サーバとして稼働中のRaspberry Pi 2BにインストールしたIP PBXなAsteriskに050 plusを収容、複数のF-Droid版baresip+をインストールしたAndroidスマホ、GitHub版baresipをインストールしたLinuxパソコン、1台のGrandstream社製ATA Handy ToneシリーズHT813+アナログ電話Panasonic VE-GD27-W間などで内線はもとより、同時着信・外線着信転送などなどできるようにしてみた話。
sip.confじゃなくてpjsip.confで。
ちなみに、このRaspberry Pi 2Bは、長らく常時稼働ではなかったものの、あと2ヶ月ほどでサーバとして稼働満11年で12年めに入っても尚、現役バリバリ、とは言え、Asteriskを入れた時点でさすがにスペック的に厳しそうなので手持ちのラズパイ400か、新たにSBCを調達しようかと。
4年ほど前から、ひかり電話ルータPR-400KI/HT813/電話機2台でひかり電話と050IP電話のように勘違いもあってMNP番号と050番号の固定電話2台構成となってしまったものの、かけ放題プランのスマホ、着信専用のひかり電話、提携先無料通話目的で発信専用にHT813+固定電話機+050 plusで050IP電話機を使ってきました。
前者では、ひかり電話ルーターの内線機能と同ルータ内蔵R11ポートに電話ケーブルを挿した、ひかり電話用固定電話機、VoIPフォンとしてLinphoneをインストールしたスマホやパソコンを使って無料でひかり電話/スマホ/タブレット/PCで外線着信・内線・転送等を行っていたのですが、ひかり電話から050 IP電話に差し替え、固定電話1台で同様以上の運用をしようかと思った次第。
これに伴い、SIPフォンを、いつの間にか、すっかり使いづらくなってしまっていたLinphoneからスマホは、F-Droid版baresip+、PCは、アプリ名は同様も開発者が異なる模様のGithub版baresipに替えることにしました。
ひかり電話や休止中のNTT回線の解約理由は、常時留守録にはしていたものの、固定電話と言えば、ご多分にもれず、ほぼ、営業電話や詐欺っぽい電話ばかりだった中、ようやくというか、いよいよというか固定電話番号を手放しても問題ない状況になったこと。
今となっては、発信専用の050電話もほぼほぼ不要となっているのですが、一部050ではダメなケースもありそうも従前のひかり電話(MNPしたNTT回線契約の番号)に代え、何らかのサービス等の登録用として使おうかと。
また、従前も知人・友人・親族以外にスマホ番号を伝える必要がある場合であっても可能な限り、基本、固定電話にかけてもらうようにしており、詐欺や営業電話など迷惑電話対策を考慮するとスマホ番号になんでもかんでもというのも微妙なので着信用にもしようかと。
これまでも、これが功を奏してか、スマホに迷惑電話がかかってきたことは皆無なので。
050 plusも素直にアプリを使えば、スマホ番号と050をそれぞれの電話アプリを使うことで切り替えられ、固定電話要らずのスマホ1台で完結させることもできることでしょう。
が、Wi-Fiスマホやパソコンは子機として使うにしても、外出先で050番号への着信を受ける気は全くなく、通信SIM入りでカケホーダイなスマホと050番号への着信は完全に切り離したいですし、せっかく、改めて用意するまでもなく、まだ新しいHT-813も固定電話もあるからには、活用したいので。
他方、ひかり電話の解約においては、どうやらプロバイダに関わらず、ひかり電話契約がないと電話線ポート付きのひかり電話ルーターからONUになる模様。
ついでにプロバイダ乗り換えも見据え、というか、ほぼ決定済みな中、事前に、この構成変更構想が実現できることがわかるなら、尚良いなと。
ルーターは、常々、レンタル・買い取り・自前が選択できるなら、自前かなと思っていましたが、電話ポート付きルータとなると結構高価、ただ、今回は、既にHT-813があるのでルーターにアナログ電話用のR11ポートは不要、その環境でも内線や転送をするならIP PBXがあればよく、先駆けにして実績があり、オープンソースで無料なAsteriskを導入してみることに。
AsteriskベースのGUI実装FreePBXの存在にも気づきましたが、別にGUIじゃなくても良いかなと。
従前のひかり電話での内線化における構成検討段階で、もしかしてAsteriskもいる?とか思って少しばかり、設定したことはあったので抵抗はなく、単独の固定電話であったこともあり、HT-813に設定することで電話機側に紐づけていた050 plusもAsteriskに収容してみることに。
尤も自身も最初トライしたものの、成功には至っていない050 plus + アナログ固定電話をそのままAsteriskに収容することもできる?らしい噂もありますが、SIPサーバともなるAsteriskに050 IP電話サービスを収容し、固定電話であるHT813+アナログ電話機は、内線端末とした方が安定した運用ができるっぽいので。
というわけで固定電話機が1台余るわけですが、ひかり電話に接続していたFAX付き電話機SHARP UX-D16CLは少なくとも15年以上前...と相当古く、子機もとうに、結局使うことのなかったFAXも壊れ、ここ1年ほど、すっかり快調ですが、たまにディスプレイ表示が文字化けしてリセットしたことも何度かあり、今回検証した際にもこの機種では未だ内線通話には至っていません。
他方、HT-802/HT-812/HT-814/HT-818など複数FXSポートのあるものと異なり、HT-813は、PSTN(メタル回線/壁面などの電話線ポート)とR11ケーブル接続するFXOポートが1つあるものの、FXSポートは1つで何れにせよ、接続できるアナログ電話機は1台なので興味本位の検証が終わったら、UX-D16CLは廃棄しようかと。
とは言え、前掲リンク先のメリットとしても挙げた2段階認証用に同時着信機能でパソコンで電話を受ける以外は、こうした機能を使う機会は、ほとんどありませんでしたし、今後、頻繁に使う見込みもないんですけどね。
興味本位と、使わないのにあるのは無駄ですし、邪魔、かと言って捨てるのは気が引け、ある物を使わないのはモッタイナイという思いの方が先行してる感じ?
先月初旬10日あたりからこの構想を実現させてみようと思い立った当初、Raspberry Pi OS(Debian)のリポジトリにあったバイナリのAsterisk 20.1.0~dfsg+~cs6.12.40431414-1をapt installしていました。
が、内線は、あっさりできたものの、050 plusを使った外線にチャレンジしてみるとsip.confは、また、他の050サービスであれば、pjsip.confでも情報はあれど、050 plusについて通話できているという情報は検索しても英語圏含め皆無な中、試行錯誤してみてもなかなか...。
これってpjsipだからって話じゃなく、chan_sipだとしても、今となっては、昔の設定そのままでは、いや、設定はいけたにしても、要件やセキュリティ面など時の経過と共に何か変化があったとか、どの情報も何か重要な他の要件が抜けているんじゃ?という疑念がフツフツと湧いてきました。
そこで、まずは、sip.confで試してみるにあたり調べてみるとAsteriskバージョン20では、まだ、chan_sipも同梱はされているものの、make menuselectしないと有効にできないらしいということでビルドすることにしました。
公式を見ると、その時点の最新は、22.7.0(LTSバージョン)でしたが、Asterisk 16からsip.confからpjsip.confがデフォルトとなってAsterisk 21では、いよいよchan_sipは同梱されなくなったとのこと。
そんな中、Downloadボタン下の[All Asterisk Versions]からAsterisk 20.17.0 LTS/Long Term Support版があったので、これを使うことにし、検証時はもとより、運用後も今のところ、当該バージョンのまま使っています。
リンクをクリックしてダウンロードしたら、伸長、展開してAsteriskのディレクトリトップに移動、./configure、make menuselect、make、make install(結局全部要rootっぽかったのでsuして実行)、ユーザーをdialout、audio、asteriskグループに追加、必要各所のディレクトリ以下の所有を全てasterisk:asteriskとします。
なお、端末|ターミナルから実行する際、デフォルトが80x24と思われる中、サイズは最小80x25にする必要がある(そうしないとその旨が表示され、make menuselectの再実行となる)ご愛嬌を乗り越える必要があります。
尚、今日見たら、既に最新22.8.0、バージョン20のLTSは、20.18.0となっていました。
あれ?asterisk -Vしたら、OSリポジトリのバージョンになってる...なんで?
groupaddというか、groupdelしないでOSリポジトリのままのasteriskグループ使ってたり、asteriskのグループ名が5060になってたり、なんか、混在環境だったからかも...。
[2026/02/09] AGIでPostgreSQL使ってみたくなってみるとmake menuselectでcdr_pgsqlを選択(するにあたり、CentOSとかRedHat系でyumだとpostgresql-devとからしいものの、Debian系では、libhq-devをインストール)しないといけなくなったので改めて20.17.0をmake installしました。
自分memo: この時、systemdサービスはあるのに何かの拍子にlibsystemd-devが消失したらしく、なくてmakeしたら、asterisk.serviceユニットファイルがなくてAsterisk Startup systemdでそうらしいと知るという...。
Asteriskは、serviceコマンドも使えますが、近年のLinuxでは、systemd/systemctlで操作可能。
Asteriskコマンドの一例としてasteriskは、新規プロセス生成、asterisk -cは、新規プロセス生成・接続と制御用コンソール(Asterisk CLI)起動、-rは、新規プロセスではなく、実行中のプロセスへの接続を試み、リモート制御コンソール起動、-Rは、-rの機能に加え、プロセス消失時、30秒間、再接続を試み、-vは、-cや-r、-Rと併用で、より多くの情報を表示させるための、よくある冗長化オプション。
多くの操作は、基本管理者権限がいるので必要ならsudoを前置するか、su/su -します。
例えば、systemctl stop asteriskした後、sudo asteriskでプロセスを生成することが可能、プロセス起動できるのは1つのみなようで既にプロセスが起動しているとsudo asterisk -cとしても[Asterisk already running on /var/run/asterisk/asterisk.ctl. Use 'asterisk -r' to connect.]となり、そこにあるように-rオプションの場合は、既存プロセスのAsterisk CLIに入ることができます。
Asterisk CLIを抜ける場合は、quitと入力して[Enter]か、[Ctrl]+[c]キーを押します。
また、サーバコンソール上から直接Asterisk CLIを操作できる-x/-Xオプションを実行中のプロセスに接続する-r/-Rなどと併用で-rxなどとし、スペースに続けてクォーテンションでくくったAsterisk CLIコマンドを渡すと(例: sudo asterisk -rx "pjsip reload")、OSコンソール上でAsterisk CLIコマンドを実行・完結することも可。
Asteriskに050 plusを収容するに当たり、050 plusの必須要件であるTLS用認証証明書導入、オーディオコーデックG.729導入とcodec_g729のロード、セキュアなSRTP用res_srtp.soのロードが必要となります。
あまりに050発着信できなかった検証時、ふと設定した認証証明書の鍵が違うのかな...と気になっていました。
また、050 plusのトランク設定においてコーデックが混在していて、その中にG.729もあるケースはあるにはあったものの、混在ではなく、G.729一択(にしないと050 plusを介して通話できない)という例もAsteriskについては、G.729の導入が別途必要というか必須と明記された情報はなかった...(G.729が必須であること自体はHT-813で050 plusを設定していた際、そうだったので知ってはいましたが)。
HT-813に050 plusを組み込んで050IP電話として使っていた際は、確かにオーディオコーデック指定でG.729のみにしていた一方、認証証明書については、設定項目自体はあったものの、設定しなくても(カラでも)機能していたのですが。
途中、要件や状況が変わったのでしょうか?
そんな中、証明書については、気にはなっていたものの、数日前に初めて設定可能なパラメータを調べてみようとAsterisk pjsip parametersを眺めていてTransportとEndpointにそれぞれ認証ファイル指定項目があることに気づきました。
更にSRTP用res_srtp.soのロードについては、(タイトルに060plusと誤記で見つけにくい)PJSIP(Registered)による060plus接続のエラーについてで必要性がありそうなことに気付かされました。
また、G.729がAsteriskではサポートされていないことについては、Perplexity、Copilot、ChatGPT、Geminiなど複数のAIエージェントの内、唯一、この言及があったCopilotとの対話で知るに至りました。
が、そのCopilot、あろうことか、同一トーク画面上で遡れば会話も残っていて見られる状態にも関わらず、G.729導入後、それなら先に進めるねと言ったかと思ったら、急転直下、一転して、そんなものは要らない、それがあったらむしろ通話できなくなるとか言い出し、暴走、さっきいるって言ってたし、HT-813ではG.729のみ指定してできてたんだよ?と言うと、なぜ、さっきそんな誤解を与えることを言ったかというと...と、しどろもどろ...、あまりに矛盾したことばかり言うので無視して導入、設定して成功するに至りました。
それは別としても本件だけに関して言うとCopilotは、役立ったか否かなんとも言い難い感じ、PerplexityとGeminiは、そもそも新規サービスを終了した050 plusをpjsipでなんて早々に諦めるのが精神衛生上良いとか言って早々に切り上げようとする始末、ChatGPTは、これに関しての知見が少ないのか、情報も一様に薄めで頼りにならずでした。
ここで成功例をネット上にアップしたことで各AIエージェントの反応も変わるでしょうが。
本件に限らずですが、少なくとも現状のAIエージェントについては、熟考タイプを選んだとしても往々にして前提条件を無視してまでも回答しようとする節があり、指摘して初めて、あ、それは昔の設定で今は違うとか、違う機種の話だったとか、勝手に状況を想定してしまったとか、勘違いだったとか言って無駄話が多くなったり、話が二転三転したり、堂々巡りになったりすることも少なくなく、気づいて指摘しなかったらミスリードにしかならず...、その必要はないでしょと言ってみても、要らぬ試行錯誤を、まずは、やってみろとばかりに連発しながら、これが最終回答!決定版!原因は1つに絞られた!...とか、どの口が言うんだというほど何度も何度も平気で繰り返し、答えに至るまでに時間がかかること含め、微妙だと常々感じています。
その膨大な情報量と高速な計算能力を活かして「その前提で数パターン検証した結果、これが最良」という完成形というか全体像を示してほしいと思うのは、無理があるようです。
まぁ内容にもよるでしょうけどね。
もしや、今回の一連のAIエージェントの反応は、そもそも050 plusスマホアプリでの利用のみ想定していている、加えて既に新サ終済みで既存ユーザーのみ利用中な050 plusをAsteriskに収容しようという話だからなのか、G.729にしてもパテント絡みで微妙だからなのか、実装させたくない、助言して実装できてしまうことを危惧した結果なのでしょうか?そうだとしたら最初に言ってよって話ですけどね。
そう言えば、言動急変一転する前のCopilotもAsteriskに050 plusを収容するにあたっては、G.729の導入は不可避で必須、G.729はライセンス購入するしかない、オープンソース実装もあるものの、絶対おすすめしないと言っていましたし...。
050 plusは、プロトコルTLS/SRTP必須のため、認証用署名が必要とのこと、ここでは、とりあえず、自己証明書を用意することにします。
Asterisk公式Wikiを実行すべく、証明書作成スクリプトast_tls_certをダウンロードし、実行することで証明書を作成します。
ただ、最初に実行するast_tls_certの方は、-b 2048を指定すると、失敗したので自身は外しました(結果?認証キーが短すぎるとのことでpjsip.confで対処する必要がありました)。
2つめに実行しているのは、クライアント認証ですが、あれこれ、4回、同じパスワードを入力することで完了します。
これらは、後にpjsip.confで指定することになります。
尚、-C/-O/-oの指定値は、任意のURIや文字列でよさ気です。
050 plusでは、Asteriskには標準で入っていないオーディオコーデックG.729を使い、050 plusには必須なのでをAsteriskに収容する場合には、G.729を導入する必要があります。
が、どうもライセンスを購入する必要があるとか(ないとか)でAsteriskに同梱されておらず、購入する場合、asteriskの生みの親の会社Digium,Inc.からも購入できる模様。
一方で当時からオープンソース実装が複数あったものの、ライセンスの壁から多くが撤退した過去もあったようながら、Asterisk登場から20年以上経っている今、AsteriskオープンソースPBX用 G.729ビルドでも触れているように、そろそろ、ライセンス期限も切れ始めているという話もチラホラ...。
というわけで、そこに期待しつつ、そうじゃないにしても商用でもない家庭で利用してみたい個人にそこまで負担をかける意図はないよねと「勝手に妄想を膨らませて判断、自己責任」でリンク先の通り、G.729のライブラリとコーデックのオープンソース版を利用させて頂くことに。
依存関係上必要なパッケージをapt install、G.729用ライブラリの圧縮ファイルをダウンロード、展開、トップディレクトリに移動して./configure --libdir=/lib、make、make installまでは全く一緒。
ただ、一点、後でldconfigを実行しなかったことでライブラリが見つからないエラーが出たのでmake installのあとbcg729のディレクトリでldconfigを実行しておきます(make cleanしてしまった後ならmakeをやり直しかと)。
このようにライブラリをmake install後、ldconfigしておくと正常に登録されます。
続いてG.729オーディオコーデックもダウンロード、展開、トップディレクトリに移動、./autogen.sh、./configure --with-bcg729、make、make installまでは一緒。
ただ、ここも2点、コピーをしなかったことでcodec_g729.soがastersik -rx "module show" | grep 729で見当たらなかったのでキョロキョロしながら探してみるとmakeしたディレクトリ以下の.libにあったcodec_g729.soを/usr/lib/aseterisk/modules以下に予めコピーし、所有者も変更しておきます。
また、サーバがラズパイだった自身の場合、/usr/lib/arm-linux-gnueabihf/asterisk/modules/にもcodec_g729.soがないよエラーに遭遇したので、ここにもコピーしておきます(他のファイルを見るとこのパスでは所有者はrootのままでも良さ気)。
更にAsteriskに読み込ませるべく、/etc/asterisk/modules.confに[load codec_g729.so]行を追記しておく必要があります。
で、asteriskを再起動。
050 plusは、単なるRTPではなく、セキュアなSRTP必須ということで、res_srtp.soもいるのでcodec_g729.soと併せて/etc/asterisk/modules.confに[load res_srtp.so]行を追記しておく必要があります。
尚、バージョン20.17.0では、res_srtp.soは、/usr/lib/asterisk/modulesにありました。
SRTPのためにも認証証明書の導入が必要な旨、触れていましたが、そのために何かする必要がある、Asteriskではデフォルトで有効になっているものではなさそうだ等ということにPJSIP(Registered)による060plus接続のエラーについてを見て気づきました(しかもタイトルで060plusとなっているからか050plus|050 plusをキーに検索しても上位にこず...)。
Asteriskをインストールすると/etc/asterisk以下には、現時点100以上に及ぶ構成ファイルがあります。
ただ、050番号サービスの収容含め、一部もしくは、一斉の同時着信や内線通話を設定したい場合には、pjsip.conf(Asterisk 15までのデフォルトはsip.conf)とextensions.conf、これらに加え、留守電を設定するには、voicemail.confがあれば十分です。
また、外線着信の転送方法やモニタリング機能を設定するには、features.conf、パーク保留を設定したい場合は、Asterisk 12からは、res_parking.confを追加すればOK。
Asterisk全体に反映させたいオプション設定は、その名もasterisk.conf、Asteriskの設定上、追加でモジュールなどが必要となった場合には、modules.confに編集・追記、RTPポート範囲設定などは、rtp.conf、ログファイルの作成や既存ファイルのログレベルを変更するには、logger.confを編集します。
尚、Asteriskの設定ファイルにおけるコメント行先頭には、;(セミコロン)か#(ポンド|シャープ)が使用されます。
pjsip.confは、AsteriskをSIPサーバとして使う場合の基本設定ファイルです。
尚、Asterisk 15までは、この用途にsip.confが使われており、Asterisk 16からは、pjsip.confがデフォルト、Asterisk 21ではchan_sipは同梱もされなくなったとのこと。
pjsip.confの一例がこちら。
最終的に雛形にさせて頂いたのは、別の050サービスのものながらAsterisk pjsip trunk @niftyフォン-C、これに050 plus情報を反映させつつ、前述の各セクションにおけるパラメータの確認、サーバ・クライアント認証情報をTransport、Endpoint共にそれぞれの項目で追記、都度、通話を試みることにより、表示されるWarning/Notice/Errorやpjsip set logger onにより表示される通話状況、pjsip show aors|auths|endpoints|registrationsなどAsterisk CLI上でのログや情報、複数のAIエージェントととの対話ログなどを参照しながら過不足を発見、修正で完成した感じです。
このpjsip.confの内容は、Asteriskに050 plusを収容、[1001]-[1004]と4台のVoIPアプリやSIPフォンをインストールしたスマホやタブレット、パソコン、いわゆる固定電話である前述のGrandstream Handy ToneのようなATA+アナログ電話、生まれながらのIP電話といった各内線端末からの050外線発信、050番号にかかってきた外線をexptensions.confで指定の全てもしくは指定内線端末で着信、各内線端末間での内線、extensions.confにおけるDial()のtやTオプションと併せて外線転送、また、留守電(ボイスメール)を含みます。
一方、パーク保留は実装というほどではなさ気ですが、機能する様子を未確認なので書いていません。
[transport-tls]セクション内の"cipher=DEFAULT,@SECLEVEL=1"は、認証証明書の導入でサーバ認証証明書作成において-b 2048を設定できなかったのに起因しているようでAsterisk CLI上に認証コードが短すぎるぞエラー?通知?が出たので、世知辛い...、そんな堅いこと言わないでとばかりの、甘々、ゆるゆる設定。
同セクション内のbindは、ログを見ていると複数のポートが使われているようでAIの助言によりポートも:0に設定。
同じくverify_server=noは、yesでもnoでも先方が決めることでしょと思わなくもありませんが、sip.confのnoと同義かなと。
[reg050plus]セクションのline=yesは、Asterisk CLI上のログでlineがないとか意味不明なWarningだかErrorが出たので追記。
同じくoutbound_proxy=sip:kar-f2fcp.050plus.com:443;transport=tlsは、HT-813構成の時、そうだったポート:433までの表記に加え、AIの助言で;transport=tlsの追記がないとtls送信されないから必要とのことで追記。
[end050plus]セクションのdiallow=allがある前提でallow=設定は、g729のみとしないと050 plusの場合、通話できないというAIの助言で他と併記することなく、単独指定。
[ident050plus]セクションは、AIの助言により追記。
内線端末用セクションの内、[1001]はHT-813+アナログ電話、[1002]と[1003]はbaresip+なスマホ、[1004]はbaresipなパソコンで試した結果です。
その中でHT813+アナログ電話な[1001]では、Asterisk CLIに[... could not codec audio:audio ...]のようなエラーが表示され通話できず、もしやと思い、allow=ulawに加え、他の内線端末では不要なallow=g729行を追加してみたらエラー解消・解決、Asteriskと違い、HT-813ではG.729対応な一方、コーデック変換はしない?からかも?
また、頻繁に検証に使っていた[1003]のスマホでは、何かと追加設定が必要になった一方、あまり使わなかった方は、その必要がないわけですが、[1003]の方は、Contactが複数件登録され、期限切れしつつ、最新の1件が残るはずと思われるものの、何らかの設定が必要なのか、そこがうまく機能していないのか、それが影響してか、都度、max_contactsを増やさないと端末が見つからないエラーが出る、増やしたままだと、それも具合が悪そうに感じるので頃合いを見て1に戻したりすることも...、これを解消する方法は、まだ不明もtype=aorのセクションにremove_existing=yesを設定すればよいのかも?
<>で括ったのは、curlで取得した自分の050 plus情報のxmlタグ値(xmllint --formatで整形可)、<sipID>、<sipPwd>、<nicNm>([fmc+050を除いた電話番号])、タグ値を書いていない[kar-f2fcp.050plus.com]のタグ値は<tranGwAd>です。
<tranGwAd>である[kar-f2fcp.050plus.com]は、負荷分散なのか、人によっては、[kar2-f2fcp.050plus.com]となることもあるようです。
セクション以外で値として仮に例として[ ]で括ったものの内、[自WAN側IP]は、固定が望ましいですが、変動IPであっても、とりあえず、登録(asterisk -rx "pjsip show registrations"実行時のStatusをRegisteredに)するにあたっては、その時点のIPを入れておけばOK、運用後、必要なら固定IPにするか、無料のものもあるダイナミックDNSサービスを利用するか検討すると良いでしょう。
この4年全く気づきませんでしたが、残念ながら、050 plusは、2023年には新規サービス受付終了、既存ユーザーのみ利用可となってしまっていました。
そんな050旋風が嘘のような今更感、同じIP電話である、ひかり電話や050のみならず、03/06サービスなどもあって、むしろ050サービスの利点を見つける方が難しい感が漂い、Asteriskはと言えば、数年に渡るsip.confからpjsip.confへの移行期にあってバージョン21からはchan_sipが含まれなくなった...。
そんな中、Asteriskに050 plusを収容、内線・外線含め、内線端末から発着信できるpjsip.confを書いたという人は、タイミング的にいないか、いても情報公開していない模様、あ、1件、前提や詳細には全く触れることなく、AIエージェントに聞いてsip.confからpjsip.confに変換できたという結果報告のような情報はありましたが、詳細については、検索しても日本のみならず英語圏でも皆無と言ってよく、レア中のレア(って050 plusが日本以外にないのは当然か)。
そんな050 plus+pjsip.conf版を完成させることができたのは、嬉しい限り。
もちろん、pjsip.confのみでは実現できず、res_srtp.soのロードや認証証明書の導入やオーディオコーデックG.729をAsteriskに取り込むほか、SRTP用res_srtp.soもロードさせる必要もあるわけですが。
とは言え、この情報を発信してみたところで、背景からして、この情報に関心がある方は、いらしても古いバージョンのまま運用中、ここにきてpjsipに乗り換えようと思い立つ方の中でも一部...と極々少数かと思いますし...、時の経過とともにAsteriskバージョンが変われば、ないとは思うものの、050 plusの仕様変更なんかがあれば、ましてサービス自体終了してしまうことがあったら...という懸念すらある状況下では、尚更...ですが、記事にしてみました。
昨日、[WARNING[15596] res_pjsip_endpoint_identifier_ip.c: Identify 'ident050plus' provided address 'kar-f2fcp.050plus.com' did not resolve to any address]という警告が出て発着信とも外線がつながらなくなりましたが、最終的にWarning解消、復活しました。
Warningメッセージにもあるように設定済みの[match=kar-f2fcp.050plus.com]について名前解決ができなかったようです。
名前解決なのでインターネット上のDNSの一時的な不具合だろうから放っておけば、その内、直るかなとも思いましたが、一応、検索すると4件ほどしかヒットせず、同状況ではないものの、めぼしそうな1件に倣ってみたら?それともDNS障害があって、時間を置いたから?内外線ともにつながるようになった次第です。
仮にDNS障害で時間をおけば直ったものだったとしても、以後そうなった時にも有用だよねと念の為、倣ったのは、(サンプルの場合、[endpoint=end050plus]な)050plusで[type=identify](サンプルの場合、メッセージにもある[ident050plus])の[match=]行を追記し、050 plus側のIPアドレス/マスク長を設定すること。
追記したのは、Asterisk CLIでpjsip show endpoints(pjsip show endpoint end050plusでも可)で確認できた2つのIPアドレス/マスク長です。
[media_encryption = sdes]は、pjsip.conf+050 plusで発着信できるまでの試行錯誤中に既に設定済みで[transport]についてもnat指定はしておらず、既に[protocol=tls]にしてあったので前述の追記以外は、何もしていません、
pjsipで050 plusにRegistered(登録)でき、発着信できるようになってから今日までの2週間ほどは、これがなくても何ら問題なかったのでネット上のDNSに起因することなんでしょうね。
extensions.confは、外線、内線に関わらず、任意の電話番号にかけられるよう、また、かけた場合、何をするかを決めるダイヤルプランを設定するファイルです。
extensions.confの例は、極めてシンプル。
このextensions.confで今回設定したのは、内線端末による内線・外線の発着信、複数内線での外線同時着信とfeatures.confと併せて外線着信転送、発着信ともに国際電話をしない前提の対処、外線着信時、指定内線端末が一定時間内に電話に出ない際の留守電機能です。
[]は、セクションを表し、pjsip.confの[type=endpoint]を持つセクションの[context=]行で右辺に中の文字列が指定されることになります。
ここで[default]は、050発信用セクションを表し、[from-050plus]は、050着信用、[internal]は、内線端末用で内線用については、Dial()機能でpjsip.confに設定されているセクションに接続される設定です。
外線発信は、[internal]の最後の行に[include default]とすることで、そこに設定された内線端末から050番号を発信した場合には、[default]セクションで指定された挙動をとるようになります。
外線着信は、[from-050plus]の内容に沿って実行され、アンパサンド(アンド)でつなぐことで複数の内線端末を指定できるので1002と1003が着信するようになっています。
内線用[internal]においては、内線端末から100をダイヤル(というか、端末によりプッシュ|クリック|タップ etc.)すると英語で「ハロー!ワールド!」と発するだけで通話が切れるので通話テストにもなります。
また、1008は、pjsip.confで定義していないセクションで1008をダイヤル(というか、端末によりプッシュ|クリック|タップ etc.)すると日本語で「おかけになった電話番号は現在使われておりません。番号をお確かめの上、おかけ直しください。」というメッセージが流れます。
1008の場合、日本語ディレクトリ込みのフルパスで指定していますが、asterisk.confでdefaultlanguage=jaとすれば、それをデフォルトとすることでパスを省略できるようですが、今のところ、その設定はしていません(日本語をデフォルトとした場合、100にダイヤルした場合、「ありがとうございます」とメッセージが...)。
日本語翻訳メッセージの種類は、ディレクトリ名をどうしたかにもよりますが、jaとした場合、/usr/share/asterisk/sounds/ja下のcore-sounds-ja.txtに記されています。
尚、海外にも外国人にもアレルギーがあるわけではありませんが、国際電話の発着信は禁止にしてみました。
Dial()/API DOCによるとrは着信音設定、tとTは、転送オプションでfeatures.confで指定された記号番号にダイヤルした時に機能するオプションでtは発信者が着信者への転送を、Tは、逆を許可、最初のrは、これまた、まだピンと来ないので転送できて着信音が鳴れば...と3つとも設定していたりします。
features.confは、2種類ある転送において着信転送方法として指定する#や*と数字などから成る内線番号の前に付与するダイヤルや録音指定用ダイヤルなど、これらに関わる設定をするファイルです。
Asteriskでは、これは、ブラインド転送とアテンド転送として実装されており、何れにしてもextensions.conf(においてtやT)と併せて設定することで有効になります。
それぞれダイヤル時に前置するボタンは(今回仕様のバージョンでは、前者:#1、後者:*2に)デフォルト設定されているので変更する必要がなければ、確認すればよく、編集するまでもありません(が、前述のextensions.confのオプションは必要)。
前者は、転送時、呼び出し音が鳴った時点では既に転送元は自動切断され、転送先が出た場合、外線がつながる(出なかった場合、ダイヤルプランに準じる)方式。
後者は、転送元も転送先が出て転送元が受話器を置くまでは、外線と切断されず、転送先が出たら、直接声が届く範囲にいて声掛けするか否かに関わらず、外線がかかっている旨や用件を伝え、転送元が切った時点で転送先と外線がつながり、転送先が出ることができない場合、転送元が呼び出しをやめるか、時間設定してあれば期限がきた場合、再び転送元と外線がつながる方式です。
例えば、こんな風にfeatures.confを設定すると#1でブラインド転送、#2でアテンド転送できます。
具体的には、#1や#2を押すと相手番号を押せというメッセージが流れ、続けて相手先番号を押し、前者は転送者が電話を切る切らないに関わらず、後者は転送先が受話器を取ってから話すなり、話さないなりして転送者が電話を切れば、転送先で出た人と発信者の通話がつながります。
ちなみに外線の転送のみで内線の転送はできないようです、内線の転送って実用的な使い方想像つかないから良いですけどね。
ちなみに、この2種類の転送に関して以前、英語圏を含め、調べた際は、日本語圏では呼称が共通化、一般化されていないっぽいと感じ、他方、英語圏のコールド転送、ブラインド転送、アテンド転送、ウォーム転送などが理解しきれずにいましたが、改めて調べてみると少しだけ理解が進んだ気がします。
まず、英語圏のコールド転送とブラインド転送、また、アテンド転送とウォーム転送は、それぞれ同義で、前者は外線着信を受けた人が、転送先を判断し、企業・団体であれば、その相手が誰であろうが、関連部署などに転送、後者は、転送先に内線を通じて事情を説明の上、適切な担当者につないで転送するというニュアンスであると、自身は、認識しました。
適切な担当者が不在など、そうしたくてもできない状況もあるという点を踏まえると、英語圏における、こうした微妙なニュアンスの違いが、同義と思えたコールド転送とブラインド転送...はともかく、アテンド転送とウォーム転送の間にあるのかもしれませんね。
他方、日本では、仮にこれらをブラインド転送とアテンド転送と呼ぶとしてもパーク保留か、アテンド転送の2択で、少なくとも人同士では、ブラインド転送するケースはないのではないかと。
直接声が届かない状況でのブラインド転送は、転送先が電話をとれなかった場合、あまりに無責任ですし、仮に直接声が届く範囲に相手がいる場合、外線の先方に聴こえないように受話器を覆い隠すように抑えながら、もしくは、ビジネスホンでは基本ありえませんが、電話機固有の保留ボタンがあるなら、それを押して声がけでブラインド転送という可能性はゼロではありませんが、個人でも法人でも、パーク保留とアテンド転送という機能があるなら、仮に機能としてあったとしても、あえてブラインド転送を選択する必要性は...?
これが人同士ではなく、自動応答システムだった場合、日本だと呼び出し音を聴いている時間が長いこともあれば、短い場合もあるにせよ、つながったと思ったら、選択肢が提示され、かけた方が、選択、状況によっては、次の選択肢から選択...と次々続くケースもあったりし、もう切ろうかなと思うタイミングはいくらでもあったりしますが、英語圏も同様なのか、違うのか...。
何れにせよ、どちらも、これを以てアテンド転送と認識されるものなのかまでは究明していませんが、強いてどちらかと言えば、消去法でアテンド転送でしょうし、だとすれば、ブラインド転送の自動応答システムとは、どれだけ、ぶっきらぼうなんだということになりますが、果たしてそのような自動応答システムは存在するのでしょうか?
個人的用途でAsteriskを設定する場合に関しては、res_parking.confで設定しなくてもfeatures.confだけで済むなら、簡単だし、ブラインド転送でいっか!という動機もあり得る?
あ、ブラインド転送も登場人物1人で固定電話で取った電話を、ながら電話したいから、スマホで話たいなーといったケースなら...でも、それだってパーク保留でいいですよね...。
もしや、自動応答とか、スクリプトで使い道がある?
というわけで少しだけ理解は進んだものの、見てみぬふりをしていたブラインド転送を使う具体的なシーンを思い描くことができない壁に激突してしまいました。
voicemail.confは、留守電設定するファイルです。
ただ、voicemailなので読んで字のごとく、留守電を聴く時は、所定のダイヤルで確認するか、メールで送信される音声ファイルを読むことになります。
通知のみで音声ファイルを送信しないオプションもあります。
自身は、外線のみ留守電機能を持たせ、留守電アリの確認方法は後で考えるとしてメールや通知は不要、全内線端末で共有するボックスを1つ用意、電話でのみ留守電メッセージを確認することにしました。
その場合のvoicemail.confの設定がこれでコーデックwav49、メール添付はせず、ボックスへのアクセス時のダイヤルは2000として、併せてextensions.confの設定も必要となります。
extensions.confはこんな感じでどの内線端末でも受話器を取らなかった場合、Voicemail(2000@default)でvoicemail.confで設定した[default]の2000番への設定を指定。
2000番をダイヤルした時の指定をextensions.confの内線用セクション(ここでは[internal])で2000番にダイヤルした時の指定、VoicemailMain(2000@default,s)のようにしてsオプションをつけるとパスワード不要でアクセスできるようになり、登録済み内線端末ならどこからでもかかる固定のボックスを共有できるようになっています。
ただ、このままだとpjsip.confのtype=endpointな050plusセクションでlanagure=jaを設定している場合、発信者の留守電メッセージは日本語になるでしょうが、ボックス確認用ガイダンスの方は、英語になるので個別ならextensions.confでもいくつか方法はあるものの、次のようにasterisk.confで全部日本語にしてしまうのが、手っ取り早いでしょう(既にそうしている場合は、どちらも日本語)。
Asterisk全体を日本語対応にするなら、asterisk.confの[options]セクションでdefaultlanguageにjaを設定。
パーク保留|取次保留の設定は、Asterisk 12から、res_parking.confになったとのこと(features.confに当該記載あることからして、それ以前はfeatures.confだった?)。
パーク保留|取次保留とは、一内線端末で行った外線の保留を全内線端末で共有でき、かつ、保留を保持できる番号が1つならそれを、複数指定してあるなら、その番号を知っていれば、それをダイヤルすることで、どの内線端末でも保留を解除して、その外線を受け取ることができる機能です。
実際の流れとしては、外線を受けた端末でパーク保留の番号(デフォルトでは700)をダイヤルすると外線との通話が保留となるのと同時に空きのあるパーク番号がアナウンスされるので、直接声が届く範囲なら声で、直接声は届かないが、居場所がわかり、内線が通じる場合は、内線で、または、社内・構内・校内放送等で「〇〇さん、701番にお電話が入ってますので...」と伝える方法などと併用で当該番号をダイヤルすることで保留が解除され、外線電話を受けることができるようになります。
modules.confは、Asteriskの設定中、各種の動的・共有ライブラリモジュール(.soファイル)が必要になったり、不要になったりした場合に使用されるファイルです。
/usr/lib/asterisk/modules以下に必要な.soファイルが存在する前提で
必要になった場合は、load = モジュール名、不要になった場合は、noload = モジュール名のように一行ずつ挿入、追加、保存終了後、Asteriskを再起動(systemctl restartやAsterisk CLIでcore reloadなど)することで反映され、Asterisk CLIのmodule showで反映されていることを確認できます。
当然、/usr/lib/asterisk/modules以下に必要なモジュールが存在しない場合は、手作業でとか、ソースのダウンロード、所定の手順に沿って、make installするなどした後、ldconfigするなどして当該ディレクトリに.soファイルをコピーしておきます。
例えば、050 plusに必須のcodec_g729.soやres_rtp.soを読み込ませるには、前述の通り、このように設定します。
logger.confは、/var/log/asterisk以下の既存ファイル、もしくは同.confファイルで追記した新規ファイルにログレベルなどを設定できるファイルです。
Asteriskをインストールした直後は、ガイダンスは英語、多国語対応はなされているので日本語化することもできます。
Asterisk公式サウンド圧縮ファイルリストから[ja]とあるものの内、何れかをダウンロード。
ちなみに自身は、wav版を選択(確認時点では、alaw/ulaw/gsm/g722/g729/sln16/siren7/siren14/wavがありました)。
どっちのパスが妥当なのか?/usr/local/share/asterisk/sounds、もしくは、/var/lib/asterisk/soundsの下に任意の名前で例えば[ja]ディレクトリを作ってダウンロードしたサウンド圧縮ファイルをそこに展開。
そして/usr/share/asterisk/soundsにソフトリンクを張るだけ。
他の選択肢としてAsterisk 日本語音声によれば、github.com/takao-t/asterisk-sound-jaもあるとのことで、Asterisk 日本語音声(旧情報)にバージョン1.4までは、フルパス指定することなく、日本語を反映させるのに併用すべき、設定もありますが、その効果は未確認。
自身は、日本語音声ファイルについては、前段の方法をとったわけですが、日本語の反映については、今のところ、extensions.confのPlayback()などでフルパス指定して運用しています(asterisk.confの[options]セクションでdefaultlanguageにjaを設定すればAsterisk全体で日本語対応となります)。
尚、/usr/share/asterisk/soundsに張られていたcustomディレクトリは元が/localで間違っているようだったので何に使うかわからないままに気になったので直してみたり。
今回、SIPクライアント・SIPフォンとしてスマホには、F-Droid版baresip+、パソコンには、barsipをインストールしてみました。
尚、F-Droidには、音声及び映像通信対応のbaresip+の他、音声通信のみのbaresipもあり、パソコン用はGitHub版で同名ながら、これらとは開発者が異なるようですが、baresipで音声・映像どっちも対応とのこと。
ちなみにAsteriskでは、内線や外線の着信時、ナンバーディスプレイを契約しなくても発信元の電話番号等を表示させることができます。
F-Droid版baresip+参照。
尚、F-Droid版baresip/baresip+のベースはGitHubにあり、ミニマム版やフル機能版などビルドできたり、なんならバイナリの.apkも配布されている模様、また、Google Play版もあり、これは割と多機能版な模様(AIエージェント談)。
baresip+のデフォルト画面(画像左)と画面右上のハンバーガーメニューをタップしたところ(画像右)。
尚、後掲含め、スマホ用baresip+画像は、左右2面結合してあり、下にスクロールできます。
baresip+のトップ画面のハンバーガーメニューをタップして表示されるメニューリストの[アカウント]をタップすると表示されるのが、アカウント一覧パネル(画像左)、画像右は、同じく[設定]をタップした際に表示される設定パネル下段。
変更していない設定パネル上段は、画像省略、下段は唯一、[Battery Optimizations]をOFFにしました。(デフォルトでONだった[Proximity Sensing]は、よくわからないので、今のところ、そのままにしています)。
電池消耗が早くなることは覚悟の上で[Battery Optimizations]をOFFにしたのは、Asteriskに何かと影響があるかなと思ったからですが、今後、折を見てON/OFFの違いを観察してみたいと思っています。
スクショ3枚になったbaresip+のアカウント設定パネル上段(画像左)と下段(画像右)。
前掲のアカウント一覧パネルは、インストールした直後は、当然何もなくカラであり、下部にあるボックスにpjsip.confにあるtype=endpointを指定したセクションの内、任意の内線端末用の名称とAsteriskサーバのIPアドレスかドメインを[ユーザー@IPアドレス( or ドメイン)]の要領で入力後、[+]をタップするとアカウントが追加されます。
アカウント設定パネル上段では、[SIP URI]として[sip:]が前置された状態でアカウントを追加した際に入力した[ユーザー@IPアドレス( or ドメイン)]が表示され、ニックネーム/表示名については必要に応じて入力、認証ユーザー名/認証パスワードについては、pjsip.confのtype=authを設定したセクションのusername/passwordを入力します。
アカウント設定パネル下段の[Telephony Provider]は、アカウント追加時に入力した内、IPアドレスまたはドメイン名がデフォルトで自動設定されます。
アカウントは複数追加可能であり、1つなら、また、複数ある場合、優先させるべきアカウントについては、アカウント設定パネル下段の[既定のアカウント]トグルをタップしてONにします。
スクショ3枚になったbaresip+のアカウント設定パネル中段(画像左)とそこにある[オーディオコーデック]をタップすると表示されるオーディオコーデック画面(画像右)。
Asteriskに内線端末として認識されるようにするためには、[登録]トグルをタップしてONにしておきます。
オーディオコーデックパネルでは、一覧の各コーデック右側の横4本線をタップしたまま上下に動かすと移動できるようになっています。
ただ、並び順が優先順位なのか?と思い、2台あるスマホでそれぞれデフォルト順と050 plusで使うとされるG.729コーデックをトップ、また、PCMU、PCMAを上位に移動してみたものを比べても違いはわかりませんでした。
baresip+で内線発信中(画像左)と通話中(画像右)の画面。
baresip+でダイヤルパッドを表示して内線発信する最中の様子(画像左)と外線発信通話中の画面(画像右)。
baresip+で外線着信中(画像左)と通話中(画像右)の画面。
このように最上部のアイコンからモバイル回線を要することなく、無線LAN(扇型のアイコン)を有効にするだけで、0で始まる日本国内の電話から050 plus番号への外線、内線ともにpjsip.confで指定したtype=endpointの内線端末の内、extensions.confで指定した内線端末で着信及び相手先番号を表示することができ、同様に内線や050 plus番号を介して0で始まる外線へ発信できていることがわかります。
AGIで電話番号から紐づく名前を表示させる過程でPCならOSがUnicodeでもいけることもあって可能も、バージョン12からはすっかりSIPサポートすらなくなったAndroidスマホでは尚更、どうやらCID nameに「かなカナカナ数字アルファベット漢字混じり」ですら表示できるアプリは極々限られるっぽいことに気づき、Linphoneに出戻ることに。
そのLinphoneもAsteriskで仕込んだ名前を表示できるというわけではなく、Google連絡帳でどうかは不明も(G社電話アプリの連絡帳なりでエクスポートしたファイルを使うなり、インポートするなりした)Linphone自前の連絡帳があり、連絡先名を漢字など「アルファベット数字カナかな漢字混じり」登録してある前提で登録済みの連絡先なら、着信時にその通り表示できるということではありますが。
あ、着信応答ポップアップでは、AGIでセットしたCALLERID(name)が表示され、着信履歴画面には、CALLERID(all)つまり、名前&電話番号が残っていることが判明、Linphoneでは、スマホであっても自前の電話帳によるものではなく、AGIによるこれら外部設定が有効、受け入れてくれることがわかりました。
さすが、Linphone。
ダイヤルしやすければ(ダイヤルパッド表示までの手順が多くなければ)、言うことなしなんですが...こんなに面倒だったかな...前。
パソコン版baresipのインストールについては、Install: Stable Releaseの通り。
サポート済みOS(Linux/macOS/Windows/Android/iOS)とバージョンについては、https://github.com/baresip/baresipのSupported platformsの通り。
baresipをインストールするとLinuxならホームディレクトリに~/.baresipディレクトリが作成され、accountsやcontactsなどの構成ファイルが配置されます。
これら2つのファイルに必要なアカウントと連絡先情報を登録すれば、手動なら、端末でbaresipと入力してEnterで起動、[d]キーを押すことで内線番号や外線番号(Asteriskに収容の050 plusの050番号を介して発信)を入力した後、[Enter]で発信でき、着信時は、外線・内線に関わらず、後掲画像の通り、ログ中に表示されるように[a]キーを押すことで通話できるようになります。
baresipのロングコマンドとショートコマンドの一覧を参照。
デスクトップ版baresip(Asterisk内線端末)と他Asterisk内線端末による内線端末同士の発信・着信から電話を切るまでのログ。
デスクトップ版baresip(Asterisk内線端末)から050 plusの050番号で外線へ発信した際の電話を切るまでのログ。
外線から050 plusの050番号への発信、着信を受けたデスクトップ版baresip(Asterisk内線端末)における電話を切るまでのログ。
Pythonでbaresipを操作可能なbaresipyもpipにあります。
あ、baresipのbaresip-gtkでGUI操作できた → GUI baresip-gtk/CLI baresipでパソコン用SIP電話 with Asterisk。
baresipyにはまだ触れておらず、baresip+も使いこなしているほどではなく、Qtとか使って自作もできるか?と思いつつ、パソコン用ソフトフォンも最初からGUIなのがあれば、なお良いかなと探したら、あまりない中、Comparison of VoIP softwareでマルチプラットフォームなSIPクライアントBlink by icanblink.comを発見、darcs cloneって見慣れないコマンドながらapt searchするとあったものの、やや躊躇しつつ、flatpakで発見したのでインストールしてみました。
パソコン用はOSがUnicode対応しているのでbaresip+でもですが、BlinkでもAGIで仕込んだ「かなカナカナ数字アルファベット漢字混じり」なCallerID(name)すらも普通に着信時に表示できたので、これもありかなと。
と思いきや、Blink、発信ができない!?かも。
キーボードがあるじゃんってことでオリジナルのダイヤルパッドは装備していないそうで、そのキーボードも数字キーがあるものだと、できそうな雰囲気ですが、持ってないし、USBテンキー買っても配置に困るし...。
baresip、baresip-gtkでGUI操作できたので、これを使用することに。
謹製アプリとしてAndroid版、iOS版、Windows版があり、Windowsユーザーなら050plusWinInstaller.exeでインストールできる謹製の050 plus Winという050 Plus専用アプリもあり、LinuxならwineでもPCデスクトップ上でインストール・使用できます。
050 Plus、その変遷から、今では、契約内容、支払方法等の変更、解約含め、一部アプリからブラウザに遷移するものはあれど、URLが表示されるわけではなくアプリからしかできなくなっていたことから、結局、050 PlusをAsteriskに収容した自身も、スマホにもAndroidアプリを入れることにしました。
とは言え、050 Plusアプリには権限は与えず、強制終了状態にして、スマホはLinphone、パソコンは、bareip-gtkを使いますけどね(050 Plusアプリに権限を与えると、というか権限なくても起動させておくとアプリが優先されアプリで着信となる結果、Asterisk側の050 Plusで着信できず、アプリのみしか利用できくなり、このページの意味が皆無になるので)。
と思ったら、1〜2度はアプリではなく、Asterisk側050 Plusで着信できたものの、権限を一切与えていない050 Plusアプリ側で着信するようになり...、pjsip.confの050 Plus ident設定でマスク長(IPはasterisk CLIでpjsip show endpoints等で表示されるもの)を入れることで、もしくは、DNS待ちの時間経過か不定も後に安定した[Identify 'ident050plus' provided address 'kar-f2fcp.050plus.com' did not resolve to any address]となり、同様にして、1時間ほど経過しても、050 Plusアプリを強制終了させても、asteriskをsystemctl stop(/daemon-reload)/startさせても、サーバマシンを再起動しても改善せず...、050 Plusアプリは鬼門...。
AIエージェントCopilotに相談したら、解決、間接的に起因する可能性はあるも謹製アプリは直接の原因ではない、様々な状況から順不同ながら、Asterisk CLIでリモート操作できないからと手動でasterisk -cしたり、結果、systemctl start asteriskと被ってAsterisk多重起動状態となったり、transport-udpが認識されなかったり、[Address already in use]になったり、自動生成されるはずの/var/run/asteriskがなかったり、最終的にsudo killall -9 asterisk|sudo pkill -f asterisk、mkdir /var/run/asterisk、からのsystemd (re)start asteriskで正常に。
尚、なんとなく、複数のスマホにインストールすることを遠慮していたのですが、これら謹製アプリを使う場合は、たぶん何台でもインストールしてよいんですよね...。
と思いきや、先の相談の過程でCopilotに聞いてみると050 Plusアプリの想定する「同時ログイン」は1台だけらしい...とすれば、実質1台でしか運用できないってことか、複数運用できれば便利なのに...って1台1番号って考えれば、まぁそうか...、だとしたら同時発着信は1台だとしても着信転送はできるし、発信しない前提なら尚更、050 Plusは、Asteriskに収容された方が幸せな気がする。
Android版050 Plusアプリ設定一覧、画像では見えませんが、上にスクロールすると電話番号が表示されています。
Debian GNU/LinuxとwineでWindows版050 Plusアプリをインストール・実行。
Debian GNU/Linuxとwineで実行中のWindows版050 Plusアプリ。
wineだと、なぜか、動作がというか、ボタン押下から画面遷移時、ボタンが点滅したようになり、カクカクしてるように見えますが。
というわけでWindows版をwineでも試してみたわけですが、とある管理メニューでwineの設定が足りないようでブラウザが開けず(ブラウザをインストールすれば解決?)、PCにもbaresip-gtkがあるし、管理メニュー操作もAndroidスマホからで良いかなと。
そのために買ったとは言え、Panasonic VE-GD27-W用としたのは、ひかり電話で使っていたSHARP UX-D16CLと単に差し替えてみたところ、少なくとも、そのままでは通話できなかった、まぁできたとして既に購入から15年以上は経過したものでもあり、ひかり電話も解約予定で固定電話機は1台あれば良いので。
HT-813のWebUIには、[STATUS]/[BASIC SETTINGS]/[ADVANCED SETTINGS]/[FXS Port]/[FXO Port]/[STATIC DNS SETTINGS]と計6画面(6ページ?)あります。
[STATUS]はシステム情報のダウンロードボタン以外は、状態確認項目のみ、[BASIC SETTINGS]では、HT-813 WebUIのIPを固定IPとすべく設定した静的IP Address、Subnet Mask、Default Router、DNS Server1のみ、[ADVANCED SETTINGS]は、従前設定したFirmware Sever Path/Config Server Pathを共にfm.grandstream.com/gsへURL修正、ntpサイト指定、System RingとCall Progress Tonesを指定したものをそのまま、[FXO Port]/[STATIC DNS SETTINGS]はデフォルトのまま触れておらず、Asteriskとの通信設定としては、[FXS Port]の設定のみでいけました。
050 plusを収容したAsteriskの一内線端末としてのHT-813 WebUIの[FXS Port]は、今回、こんな感じの設定でいけました。
デフォルトのスクショを撮ってないのでなんですが、変更点はそれほど多くないと思います(画像はスクロールでき、もっと続きがあります)。
一番上のAcount Activeは、Yesにしないと設定が反映されません、Primary SIP Serverは、AsteriskをインストールしたサーバのIPアドレス...です(画像はスクロールでき、もっと続きがあります)。
尚、検証時、当初は、そんなことはなかったのですが、なぜか、発信から呼び出し音がなるまで18秒程度かかるようになり、何度も試行したものの、毎回、待ちきれず切っていたため、「呼び出し音が鳴らない」とか、「発信できない」とことごとく勘違いしていたほどで、現在、原因調査中です。
着信は早く、他の内線端末は、全て発着信ともに早いのでHT-813の設定の問題か?と思っています。
検証着手時に最も時間がかかったのも、このHT813+VE-GD27-Wとほか内線端末との間で通話できるようになるまでの調整でしたから。
ただ、その時は、これまで使用の「050 plusを収容していたHT-813」の設定を書き換えていた場合の話であって初期化、再設定後は、通話できるまで早かったので、それまでの試行錯誤が功を奏した結果なのか、初期化が肝だったのかについては、定かではありませんが、やはり、初期化が近道なのかもしれません。
ファイアウォールについては、Asteriskをインストールしたサーバでは、通常のSIP用ポートとRTPポートを開いておく必要が、インターネットとLANの間に設置するルーターにおいては、本件に関し開くべきポートはありませんでした。
今回、Asteriskをインストールしたラズパイサーバには、ファイアウォールを導入しており、SIP用にUDPポート5060(デフォルトを使用の場合)、RTP用にUDPポート10000から20000を開放しておく必要がありました。
ufwなら、こんな感じ。
そうしないとSIPクライアントの一部、というか、HT-813+アナログ電話やパソコンは大丈夫なのに、スマホ(2台)だけが、延々とSIP登録に失敗、HT813+アナログ電話やパソコンへの発信はできても、もう1台のスマホへの発信はできず、着信に至っては、どこからもできない状態となり、運用に支障が出たのでスマホも内線端末として参加させているため、これらポートを開放する必要がありました。
安定して内線通話できる状態になってから、試しにこれら開放していたポートを閉じてみると、しばらくは、そうした事象はなかったかに思えたものの、ほどなくして先の事象が発生、改めてポート開放して、少しすると解消され、全端末と発信・着信できるようになりました。
詳細は割愛しますが、AIにATA+固定電話機やPCに影響がなくて、スマホだけ影響するのはなぜ?と聞いてみたら、結構複雑に絡み合うその事情をわかりやすく教えてくれました。
尚、ポート開放で解決した...、と思いきや、必要ではありながらも、一時的で、更に聞いてみた中から、当然バッテリの消耗は激しくなるでしょうが、最も簡単な[設定]アプリでスマホのSIPアプリの省電力機能をオフにする方法をとってみたところ、安定しているので、それ以上は確認しませんでしたが、AIによれば、スマホとSIPに関するおすすめ設定もあるようです。
Asteriskで050 plusを収容して外線発着信するにあたり、ルータのファイアウォールで設定すべきことはありませんでした。
AIエージェントにRTPポートだけは開けろと言われて一時開けました(「静的IPマスカレード設定」やこれに類する設定で[宛先IPアドレス]に[AsteriskサーバのLAN側IP]、 [変換対象IPアドレス ]に[自WAN側アドレス]、[変換対象プロトコル]に[UDP]、[変換対象ポート]と[宛先ポート]に[10000-20000](Asteriskのrtp.confの設定による))が、閉じても外線発着信できたので速攻で閉じました。
ルータのポートなんて開けなくてもHT-813に050 Plusを収容して050電話機として使えていたし、検証の過程で今更登録されなくなったのかと思い、初めて050 plusアプリに登録してみたら外線発着信は問題なくできたから、そんな必要なくない?って言ったんですけどね...、Asteriskでは事情が違うんだ云々カンヌン...、あと切り分けのためとは言え、NATをさておくためにルータの外、インターネットと直のDMZ(非武装地帯)にAsteriskサーバ置いてみろとか...。
ふぅ、言いなりにならなくて良かった...。
通信会社とナンバーディスプレイのサービスを契約することなく、HT-813+050 plus+アナログ電話構成の際はHT-813の設定により、Asterisk+050 plus構成の際は、Asteriskの設定により、(通知拒否していなければ)発信者番号を表示させることができます(Asteriskの場合、もちろん、VE-GD27に限らず、スマホやパソコンでも)。
また、まだやってみてはいませんが、Asteriskならスクリプトも使えるので、たぶん、名前と番号のテキストのリストやRDBがあれば、番号ではなく名前を表示することもできるかと...
[2026/02/13] やってみたところ、HT-813自体はFSK仕様とやらで送信、ASCII前提で全角カタカナや半角カタカナがいける可能性はあっても漢字は無理っぽく、それを受ける電話機側の機能で...というのも土台無理な話で電話機側でできるとしたら、電話機自体に電話帳登録でき、かつ、漢字対応なケースのみな模様でAsteriskから設定できる類のものではない模様。
約4年前、ATAとの相性など知る由もなく、HT-813+050 plusによる050 IP電話とすべく、名の知れた日本メーカー製で最も安価だったからという理由一択でAmazonで買った(転売された品だったのか)子機なし親機のみであることも承知していたPanasonic VE-GD27-W。
今どき当たり前なのか、特殊なのか、別途オプションが必要な[テレビドアホン]、[ホームテレホン]への接続の他、「[構内交換機]に接続する場合の設定(アリ・ナシの2択でナシがデフォルト)]が含まれていました。
Asteriskを使った今回、内線通話ができるに至っていなかった検証時、もしや電話機になにかあるか?と取説を眺めて見つけたものの、この設定をアリにしてもナシにしても今のところ、違いがないように見受けられます。
取説には詳細が書いていないのでなんですが、ON Hook/OFF Hookなどフッキングとか、電圧とか周波数とかの感度調整とか、何か変化するのかも?
検証時、ナシで内線通話できたものの、気分的にアリにして使用中ではありますが。
運用においてVE-GD27については、着信時、ディスプレイに着信中な旨の表示、続いて着信音が鳴ると同時くらいでディスプレイに相手(発信者)番号が表示され、そこから少し(1〜2秒)待ってから受話器を取る必要がありました。
そうでないとオフフックを(固定電話機が送信できないようで?)Asteriskで検知できず、通話に切り替わらず、スマホなどは発信中が継続、そのまま少し経つと改めてVE-GD27が着信状態となり、2度めに受話器を取った時に(オフフックが送信されるようで検知され)通話状態になったりします。
この辺りは、HT-813の設定を調整する余地もあるのかもしれませんが、これについても前述のVE-GD27本体機能の[構内交換機]アリ・ナシでは変化はなさ気。
ちなみに内線通話できる前までの挙動は似たようなものだった一方、VE-GD27-Wで内線通話できるようになった直後に前述のUX-D16CLと差し替えてみたのですが、その時点では、内線通話できなかったので同じトーン信号発信のアナログ電話機でもモノによってHT813の設定が変わる模様。
[2026/02/13] AGIでCallerID(name)を仕込んで送信を試している過程で取説を眺めてみたら、ATAからの送信がどうあれ、電話機自体の電話帳に登録してあるもののみ、かつ、VE-GD27の場合、子機にしか電話帳登録機能がなく、子機にはカタカナ(たぶん半角)表示、買った際に子機は付属しておらず、これがない親機では、そもそも番号表示のみな模様、意味はないものの、番号の書き換えはできても文字は無理ということでAsteriskから文字を仕込むのは諦め、番号表示のみで。
ビデオ通話やテキストチャットもできますが、まだ試していません。