Ubuntu 24.04 の FreePBX で cdr report 記録されない問題

考えられる原因

原因は、

  1. ODBC-Connector がインストールさて例ない場合
  2. ODBC-Connector の設定ファイルが /etc/ 直下でなく /usr/local/etc/ である場合
  3. odbcinst.ini の内容と odbc.ini の整合性がとれていない場合
  4. odbc.ini で sock ファイルを使っているためアクセスできない場合

が、考えられる。まずは odbcinst にてチェックしてみる

sudo apt-get install -y unixodbc odbcinst
odbcinst -j

ここで
Can’t connect to local server through socket ‘/var/lib/mysql/mysql.sock’
というエラーが出た場合は、 odbc.ini を sock から ユーザー名とパスワードに変更する

Ubuntu 24.04 の FreePBX で cdr report 記録されない問題

ドライバーの認識する odbc.ini と odbcinit.ini が /etc でなく/usr/loca/etc であるのが原因と mariadb-connector の入っていないのが原因の場合

https://mariadb.com/downloads/connectors/connectors-data-access/odbc-connector/ にアクセスし、 Connectors タブから ODBC connector 3.2.5-GA Ubuntu 24.04 Noble(64bit x86) Deb をダウンロード

sudo apt install -y mariadb-connector-odbc_3.2.5-1+maria~noble_amd64.deb
sudo apt-get update
sudo apt-get install unixodbc odbcinst
sudo apt-get update
# これはいらないかも
sudo apt-get install unixodbc-dev

ドライバーの確認

odbcinst -j

結果

unixODBC 2.3.12
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

上記の DRIVERS と SYSTEM DATA SOURCE の設定ファイルを編集する ここで

find /usr -name libmaodbc.so

にて libmaodbc.so の場所を確認しておく

cat <<EOF > /usr/local/etc/odbcinst.ini
[MySQL]
Description=ODBC for MySQL (MariaDB)
Driver=/usr/lib/libmaodbc.so
FileUsage=1

[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.5.so.1.1
UsageCount=1

[MariaDB ODBC 3.0 Driver]
Description = MariaDB Connector/ODBC v.3.0
Driver = /usr/lib/libmaodbc.so
EOF

上記の Driver の場所に libmaodbc.so が存在していること odbcinst.ini の カッコでくくった MariaDB Connector 定義名と odbc.ini の Driver が一致していること

cat <<EOF > /usr/local/etc/odbc.ini
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
Driver=MariaDB ODBC 3.0 Driver
SERVER=localhost
DATABASE=asteriskcdrdb
USER=Mariadb の asteriskcdrdb にアクセスできるユーザー名
PASSWORD=Mariadb の asteriskcdrdb にアクセスできるユーザーのパスワード
PORT=3306
EOF

接続確認

isql MySQL-asteriskcdrdb -v

エラーが表示されないこと。一度

sudo fwconsole restart

で、 Asterisk / FreePBX を再起動。

asterisk -r にて CLI を立ち上げ、

odbc show all
cdr show status

にてエラーがなく、Number of active connections: が 0 でないことと、 Logging が Enable であることを確認。Enable でないときは FreePBX の WEB の高度な設定から CDR を有効にしておく。

cdr show active

を入力し、通話中複数回入れて録音時間が更新されていることと、CDR レポートにて通話記録と音声の再生が可能なことを確認しておく。