Asterisk 18

2022年5月12日 (木) 15:01時点におけるTakahashi (トーク | 投稿記録)による版 (サンプル設定ファイル)


Asterisk 18.0.0が2020年10月20日(現地時間)リリースされました。

メンテナンス終了は2024年10月20日
セキュリティフィックス提供終了は2025年10月

目次

概要

Asterisk 18は最新のAsteriskのメジャーリリースで、Asterisk 16同様にLTS(Long Term Support:通常4年)になります。

https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions

Asterisk 16からの変更点で重要なもの

  • chan_sipは廃止予定(標準でコンパイルされるがDeprecated扱い)
  • app_macroは廃止予定のまま(Deprecated扱いで標準ではコンパイルされない)
  • res_config_sqliteは廃止予定のまま
デフォルトではres_config_sqliteはコンパイルされない
res_config_sqlite3に移行のこと
  • app_attended_transferとapp_blind_transferが新規追加(17で追加されたもの)

注意

  • SIPチャネル要注意
SIPチャネルはPjSipが標準となりました。chan_sipはコンパイルされますが廃止予定扱いです。はやい時期にchan_sipからPjSipへの移行をお勧めします。Asterisk 18はconfigureのオプションなしでもbundledでpjsipをダウンロードします。→ Asterisk pjsip
なおAsterisk 16以降ではPjSIPはstatsdに依存しています。上のページの注意点をよく読んで設定してください。
参考情報ですがchan_sipを明示的にコンパイルしないようにするとコンパイル時間が短縮できます。
  • Macro要注意
Macroが廃止予定にされているので注意が必要です。Macroを多用している場合には早い時期にGosub/Returnへの書き換えが必要です。
単純にmake installしてしまうとMacro()もDialのMも動かなくなるのでハマります。
extenでMacroを多用している例は多いので早急に対応してください。


インストール

前提となるパッケージ類

GCC、G++(GNU-C++)、OpenSSL、Ncurses、bison、カーネルソース(DAHDIを使う場合)、libxml2、SQLite3、libuuid-devel
CentOSはじゃまくさいのでDebianで説明(CentOS誰か補記して)
以下の例は Linux pbxdev 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux で、最小インストールからパッケージを追加した例です。

apt install build-essential
apt install libedit-dev
apt install uuid-dev
apt install libxml2-dev
apt install ncurses-dev
apt install libsqlite3-dev
apt install sqlite3
apt install libssl-dev

あったほうが良いもの(MP3を使う場合にはsubversion必要)

apt install subversion
apt install git

これがないとやってられない人は以下も

apt install net-tools
apt install dnsutils

Asteriskの基本的な部分は上記のパッケージ追加で問題ないと思います。なおJanssonはAsteriskのバンドルでインストールしますので、configure時に指定します。

Asteriskソースの入手

Asterisk 18のソースは以下からダウンロードできます。なお asterisk-18-current.tar.gz が最新バージョンへのシンボリックリンクとなっていますので、これをダウンロードすれば最新バージョンが入手できます。

http://downloads.asterisk.org/pub/telephony/asterisk/

展開するディレクトリはどこでもかまいませんが、ここでは/usr/src/とします。

# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz

入手したら展開しておきます。展開すると現在のAsteriskのバージョンのディレクトリに展開されます。以降それぞれの作業は、それぞれの展開したサブディレクトリで行います。

# tar zxvf asterisk-18-current.tar.gz
# cd asterisk-18.x.x

Asteriskのコンパイルとインストール

基本的にconfigureしてmakeするだけですが、Janssonをバンドルで行うので以下のオプションでconfigureします。。

# ./configure --with-jansson-bundled

日本語音声ファイルをインストールする場合には./configureの後 make menuselectを実行します。

# make menuselect

メニュー画面から Core Sound PackagesCORE_SOUND-JA-....の必要なフォーマットのファイルを選択し、[Save & Exit]でmenuselectを終了します。(ただし、日本語音声が18に対応しているのかどうかは不明です)
extenでMacro()を使用している場合、デフォルトではコンパイルされなくなったので注意してください。make menuselectでappのMacroを明示的にON指定してください(deprecatedの下にあります)。

以前のバージョンからアップグレードを行う場合、変更されたモジュール類が多いので、一旦、以前のモジュールをディレクトリごと名前変更してバックアップしてからインストールしてください。

mv /usr/lib/asterisk/module /usr/lib/asterisk/module.16.bak

あとはコンパイルとインストールを行うだけです。

# make
# make install
# make samples
# make config

これで新規インストールは完了します。最後の make config で起動時に自動起動するようになります。

『何か』が足りない場合のヒント

Asteriskのモジュールでコンパイルされないものが出てきた場合には以下の方法で対処してください。Asteriskの機能アップとともに依存するパッケージも増えているので『新しい機能を使いいのに動かない』ような場合には要チェックです。
make menuselectを実行します。コンパイルされていないモジュールを探します。例えば以下はLUAが使いたいけど、使えない場合に調べてみると'pbx_lua'がコンパイルされていない例です。

                              **************************************************
                                  Asterisk Module and Build Option Selection
                              **************************************************

                                       Press 'h' for help.

                                       --- Core ---
                                   [*] pbx_config
                                   [*] pbx_loopback
                                   [*] pbx_spool
                                       --- Extended ---
                                   [*] pbx_ael
                                   XXX pbx_dundi
                                   XXX pbx_lua
                                   [*] pbx_realtime

XXXで表示されるものは『何か』が足りないのでコンパイル/インストールされないものです。カーソルを該当する箇所に移動すると、画面の下の方をみると次のような表示があるはずです。

                              Lua PBX Switch

                              Depends on: lua(E)

                              Support Level: extended

Depends onが何に依存しているかの情報で要するに"lua"に依存していることがわかります。
ではluaのパッケージを追加すればOKかというと、それだけでは不足で、Asteriskはソースからコンパイルするので、単純なパッケージ追加だけではなく-devも追加する必要うがあります。なので、例えばLUAならば。

apt install lua5.3
apt install lua5.3-dev

のように、devパッケージも併せてインストールします。
インストールが終わったら再度configureとmake menuselectをしてみましょう。

# ./configure --with-jansson-bundled
# make menuselect

再度確認すると次のようになっているはずです。

                                       --- Extended ---
                                   [*] pbx_ael
                                   XXX pbx_dundi
                                   [*] pbx_lua
                                   [*] pbx_realtime

これで表示が[*]となったので、コンパイル/インストールされることがわかります。このようにして何のパッケージが不足しているかを確認/追加します。
ただしAsteriskのmake menuselectで表示されるパッケージ名称は『一般的な』ものなので自分のディストリでそれが何に相当するのかは調べてください。

SIPチャネルとしてPjsipを使う場合

Asterisk 18はPjSIPはデフォルトでbundled扱いでダウンロード/コンパイルが行われます。このためconfigureを実行するだけでPjSIPも組み込まれます。

サンプル設定ファイル

単純な使用ならばAsterisk 13用の設定ファイルが使えますが、chan_sipが廃止方向にあるので今後この設定ファイルのchan_sip内線を使うことは推奨しません。

Asterisk 13 サンプル設定ファイル

内線接続等は今後、PjSIPを使用して電話機を収容する以下のファイルを使って動作確認を行ってください。

PjSIP用サンプル設定ファイル https://www.voip-info.jp/images/8/87/Conf-sample-pj.zip

ただし、少々悩ましいのはトランク側はchan_sipを使いたいけれども内線はPjSipという混合のケースです。トランクをPjSipで接続する例を増やしていきたいと思っていますので、ご協力をお願いします。

日本語音声

Asteriskとともに配布されている(menuselectで入る)ものは古いので以下をお使いください。 Asterisk日本語音声

ひかり電話ホームの使用

  • chan_sipは今後サポートされなくなりますので、PjSIPを使ってください。
pjsip ひかり電話HGWを参照してください。
chan_sipをどうしても使いたい場合にはMACアドレス認証を使ってください。
chan_sip用パッチはもはや提供しません。chan_sipが廃止方向なのでpjsipを使ってください。