Loading...

2025-04-05(土) 11:00

☎️ UbuntuにAsteriskをインストールして内線通話を行う

AsteriskUbuntu
UbuntuにAsteriskをインストールしてセットアップし、内線通話を行うまでの手順を解説します。

目次

前提と注意事項

  • Ubuntu 24.04 LTS にインストールした時の設定を解説しています。
  • インストールする Asterisk のバージョンは 20.6.0 です。
  • SIP クライアントと Asterisk が同じ LAN や VPN 内にあることを前提としています。

この記事のゴール

この記事では、Ubuntu に Asterisk をインストールして設定し、実際にスマートフォンにインストールした SIP クライアント同士で内線通話ができるところまでゴールとします。

Asterisk をインストールする

まずはじめに、apt を使用して Ubuntu に Asterisk をインストールします。

ターミナル
$ sudo apt update
$ sudo apt install asterisk

上記を実行後、以下のコマンドで Asterisk の CLI を起動します。必要に応じて sudo を使用してください。

ターミナル
$ asterisk -vvvcr

以下のように表示されれば Asterisk が正常にインストールされ、使う準備ができています。

Asterisk CLI
'c' option is not compatible with remote console mode and has no effect.
 
Asterisk 20.6.0~dfsg+~cs6.13.40431414-2build5, Copyright (C) 1999 - 2022, Sangoma Technologies Corporation and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 20.6.0~dfsg+~cs6.13.40431414-2build5 currently running on ritabase (pid = 731158)
username*CLI>

上記の状態で、以下を実行すると Asterisk のバージョンが表示されます。

Asterisk CLI
username*CLI> core show version
Asterisk 20.6.0~dfsg+~cs6.13.40431414-2build5 built by nobody @ buildd.debian.org on a unknown running Linux on 2024-04-15 00:13:12 UTC

CLI を終了するには Ctrl + C を押します。exit を入力して Enter でも終了できます。 以上で Asterisk のインストールが完了です。 続いて、内線通話を行うための Asterisk の設定をします。

Asterisk の設定をする

pjsip.conf の設定

pjsip.confは Asterisk で SIP(Session Initiation Protocol)通信を設定するための構成ファイルです。このファイルでは以下のような重要な設定を行います:

  • SIP 端末(IP 電話機やソフトフォンなど)のアカウント設定
  • 認証情報(ユーザー名、パスワード)の定義
  • 音声コーデックの設定
  • SIP トランクの設定(他の PBX や SIP プロバイダーとの接続)
  • ネットワーク関連の設定(ポート番号、転送プロトコルなど)

なお、pjsip.confは従来のsip.confの後継として導入された、より新しい設定方式です。PJSIP は性能と柔軟性が向上しており、現在の Asterisk では推奨される設定方式となっています。

以下のコマンドで設定ファイルpjsip.confをバックアップしてから編集します。

ターミナル
$ sudo mv /etc/asterisk/pjsip.conf /etc/asterisk/pjsip.conf.backup
$ sudo vi /etc/asterisk/pjsip.conf

pjsip.confの設定を以下のようにします。なお、[1001][1002]はそれぞれ 3 つの設定ブロックに分かれており、それぞれ異なる役割を持っています:

/etc/asterisk/pjsip.conf
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
 
# エンドポイントの設定 - SIPクライアントの基本的な動作を定義
[1001]
type=endpoint
transport=transport-udp
context=internal
disallow=all
allow=ulaw
auth=1001
aors=1001
 
# 認証情報の設定 - ユーザー名とパスワードによる認証
[1001]
type=auth
auth_type=userpass
username=1001
password=1001test
 
# AoR(Address of Record)の設定 - 連絡先情報の管理
[1001]
type=aor
max_contacts=10
 
# 以下、1002も同様の3つの設定ブロックで構成
[1002]
type=endpoint
transport=transport-udp
context=internal
disallow=all
allow=ulaw
auth=1002
aors=1002
 
[1002]
type=auth
auth_type=userpass
username=1002
password=1002test
 
[1002]
type=aor
max_contacts=10

各設定ブロックの役割:

  • type=endpoint: SIP クライアントの基本設定(コーデック、コンテキストなど)を定義します
  • type=auth: クライアントの認証方法とクレデンシャルを定義します
  • type=aor: クライアントの連絡先情報を管理し、同時接続数などを制御します

このように同じ名前で 3 つのブロックが必要なのは、PJSIP の設定が機能ごとに明確に分離されているためです。これにより、設定の管理が容易になり、より柔軟な構成が可能になります。


ちなみに、context=internalはエンドポイントがどのダイヤルプランを使用するかを指定します。この設定はextensions.conf[internal]セクションと対応しており、このエンドポイントが実行できる通話処理の範囲を定義します。例えば、内線用のコンテキストと外線用のコンテキストを分けることで、特定のエンドポイントからの外線発信を制限するといった制御が可能になります。

extensions.conf の設定

続いて、extensions.conf の設定をします。 extensions.confは Asterisk のダイヤルプランを定義する設定ファイルです。ダイヤルプランとは、着信や発信の通話をどのように処理するかを定義する「通話の流れ」を設定するものです。例えば:

  • 特定の番号に電話がかかってきた時の応答方法
  • 内線番号の割り当て
  • IVR(自動音声応答)のメニュー構成
  • 通話の転送ルール
  • 時間帯による着信制御

以下のように、extensions.conf の設定ファイルをバックアップしてから編集します。

/etc/asterisk/extensions.conf
$ sudo mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup
$ sudo vi /etc/asterisk/extensions.conf

extensions.conf の設定を以下のようにします。

/etc/asterisk/extensions.conf
[internal]
exten => 100,1,Answer()
same => n,Wait(1)
same => n,Playback(hello-world)
same => n,Hangup()
 
exten => 1001,1,Dial(PJSIP/1001,30,r)
same => n,Hangup()
 
exten => 1002,1,Dial(PJSIP/1002,30,r)
same => n,Hangup()

上記の設定では、10011002の内線番号に電話をかけることができます。 上記の[internal]は、pjsip.confcontext=internalと同じ名前を指定します。

また、exten => 100,1,Answer()から始まる部分は、100という番号に発信した時に、hello-worldという音声を再生するだけのものになります。 このように、内線通話だけでなく、任意のガイダンス音声を再生したり、時間に基づいて接続先を変更したりすることも可能です。


Asterisk の設定ファイルを更新したら、以下で再起動して設定を再読み込みします。

ターミナル
$ sudo systemctl restart asterisk

なお、pjsip.confextensions.conf の設定内容については、以下のサイトに詳しく記載されており大変参考になりました。

SIP クライアントをインストールする

2つの iPhone に適当な SIP クライアントアプリをインストールして、Asterisk と内線通話を行うまでの手順を解説します。 ここでは、AGEPhone というアプリを使用しました。

AGEPhone

AGEPhone の設定はpjsip.confで設定した[1001][1002]の設定を使用します。

  • ドメイン:192.168.1.100
  • ユーザー ID: 1001
  • パスワード:1001test
AGEPhone の設定

AGEPhone で正しい設定ができると、以下のように「ダイヤルできます」という表示になります。

AGEPhone の認証成功時

同様に、1002の設定をした SIP クライアントを用意すれば、10011002の内線通話を行うことができます。

まとめ

Ubuntu に Asterisk をインストールして内線通話を行うまでの設定を解説しました。Asterisk を使用することで、内線通話環境を簡単に実現できます。SIP クライアントと Asterisk を同じ VPN 環境に配置すれば、外出先などの社外でも内線通話を受けることができます。また、最近だと Asterisk とローカル LLM を組み合わせて、社内のナレッジに基づいた通話を行うことも可能です。

参考文献