[FreePBX] CDR problemen na upgrade

freepbx

Wanneer je gebruik maakt van AsteriskNOW en wilt gaan upgraden naar FreePBX distro, dan is er een mogelijkheid dat na de upgrade de CDR functie niet meer werkt. De gemaakte gesprekken zullen niet meer worden gelogd, wat in sommige gevallen erg lastig kan zijn. Ditzelfde probleem ondervond ik ook en na lang zoeken de oplossing gelukkig kunnen vinden. Weten hoe? Lees dan verder!

Wanneer de CLI van Asterisk wordt geopend en onderstaande commando wordt uitgevoerd zal je zien dat ODBC module niet (meer) aanwezig is. Dit is de module die ervoor zorgt dat de koppeling tussen Asterisk en MySQL tot stand kan worden gebracht.

pbx*CLI> cdr show status
Call Detail Record (CDR) settings
----------------------------------
  Logging:                    Enabled
  Mode:                       Simple
  Log unanswered calls:       No
  Log congestion:             No
* Registered Backends
  -------------------
    cdr-custom

Er van uitgaande dat er gebruik wordt gemaakt van de FreePBX Distro, moet eerst de ODBC module worden geïnstalleerd. In mijn geval moest de module voor Asterisk 11 worden geïnstalleerd, dit kan met onderstaande commando.

yum install asterisk11-odbc.x86_64

Na het installeren van de module is het wel van belang om Asterisk te herstarten (amportal restart), zodat de ODBC automatisch wordt ingeladen. Wanneer nu nogmaals het commando cdr show status wordt uitgevoerd zal je zien dat ODBC te zien is bij register backend.

pbx*CLI> cdr show status

Call Detail Record (CDR) settings
----------------------------------
  Logging:                    Enabled
  Mode:                       Simple
  Log unanswered calls:       No
  Log congestion:             No

* Registered Backends
  -------------------
    ODBC
    cdr-custom
    Adaptive ODBC

Echter zal je merken dat hierna de logging nog steeds niet werkt, de ODBC is nu wel geïnstalleerd maar de koppeling met MySQL werkt nog niet. Via de Asterisk CLI kan dit worden gecontroleerd met het command odbc show all, wanneer er een connectie is zal dit zichtbaar zijn. In onderstaande voorbeeld is er nog geen werkende verbinding met MySQL.

pbx*CLI> odbc show all
ODBC DSN Settings
-----------------
  Name:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Last connection attempt: 1970-01-01 01:00:00

Wanneer er een telefoongesprek wordt gevoerd en je zal in de Asterisk CLI kijken. Dan zal onderstaande foutmelding verschijnen wanneer het gesprek wordt beëindigd. Hierin is duidelijk te zien dat er nog geen connectie gemaakt kan worden met de database.

[1970-01-01 01:00:00] NOTICE[30081][C-00000001]: res_odbc.c:1537 odbc_obj_connect: Connecting asteriskcdrdb
[1970-01-01 01:00:00] WARNING[30081][C-00000001]: res_odbc.c:1562 odbc_obj_connect: res_odbc: Error SQLConnect=-1 errno=0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
[1970-01-01 01:00:00] WARNING[30081][C-00000001]: res_odbc.c:1377 _ast_odbc_request_obj2: Failed to connect to asteriskcdrdb
[1970-01-01 01:00:00] ERROR[30081][C-00000001]: cdr_odbc.c:148 odbc_log: Unable to retrieve database handle.  CDR failed.

In het bestand /etc/odbc.ini moet er namelijk nog een aanpassing worden gemaakt, in dit bestand staat namelijk nog niet de benodigde gebruikersnaam/wachtwoord van de MySQL gebruiker waarmee ODBC verbinding mee moet maken. Hieronder zie je een voorbeeld van hoe mijn /etc/odbc.ini bestand eruit ziet.

[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asterisk' database
driver=MySQL
server=localhost
database=asteriskcdrdb
username=JOUW_GEBRUIKERSNAAM
password=JOUW_WACHTWOORD
Port=3306
Socket=/var/lib/mysql/mysql.sock
option=3

Wanneer Asterisk nogmaals wordt herstart en het commando odbc show all wordt uitgevoerd zal je zien dat de connectie met MySQL nu wel tot stand is gebracht en dat de gesprekken weer worden gelogd!

pbx*CLI> odbc show all

ODBC DSN Settings
-----------------

  Name:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Last connection attempt: 1970-01-01 01:00:00
  Pooled: No
  Connected: Yes