Поднят centos-7 на esxi.
Пытаюсь настроить связку asterisk 15.3 + cdr. Настраивал по статье
тыцВ итоге в базу звонки пишет, в директорию для записи они попадают, но нет возможности скачивать или прослушивать записи

Установлены пакеты:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[root@89 ~]# rpm -qa|grep -i unixodbc
unixODBC-2.3.1-11.el7.x86_64
unixODBC-devel-2.3.1-11.el7.x86_64
[root@89 ~]# rpm -qa|grep -i libtool-
libtool-ltdl-2.4.2-22.el7_3.x86_64
libtool-ltdl-devel-2.4.2-22.el7_3.x86_64
[root@89 ~]# rpm -qa|grep -i mysql
perl-DBD-MySQL-4.023-6.el7.x86_64
mysql-connector-odbc-5.2.5-7.el7.x86_64
php-mysql-5.4.16-45.el7.x86_64
[root@89 ~]# rpm -qa|grep -i php
php-pdo-5.4.16-45.el7.x86_64
php-5.4.16-45.el7.x86_64
php-cli-5.4.16-45.el7.x86_64
php-odbc-5.4.16-45.el7.x86_64
php-common-5.4.16-45.el7.x86_64
[root@89 ~]# rpm -qa|grep -i mariadb
mariadb-5.5.60-1.el7_5.x86_64
mariadb-devel-5.5.60-1.el7_5.x86_64
mariadb-server-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64
# vi /etc/asterisk/extensions.conf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[general]
autofallthrough=yes
static=yes
writeprotect=no
clearglobalvars=no
[globals]
[outcoling]
exten => _X.,1,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)}-${EXTEN})
exten => _X.,n,MixMonitor(/records/callrecords/${fname}.wav)
exten => _XXX,n,Dial(SIP/${EXTEN},,m(music1))
exten => _XXX,n,Hangup()
# vi /etc/asterisk/sip.conf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[general]
context=default
nat=force_rport,comedia
allowguest=no
allowoverlap=no
alwaysauthreject=yes
bindaddr=my_ext_ipaddress:9060
dtmfmode=rfc2833
rtpholdtimeout=300
rtpkeepalive=5
canreinvite=no
[local-pattern](!)
type=friend
secret=my_passwd
context=outcoling
host=dynamic
language=ru
callgroup=1
pickupgroup=1
qualify=yes
call-limit=4
disallow=all
allow=alaw
allow=ulaw
[500](local-pattern)
username=500
callerid="500"<500>
[511](local-pattern)
username=511
callerid="511"<511>
vi /etc/odbcinst.ini
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
# Example driver definitions
# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbcw.so
Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/lib64/psqlodbcw.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
# odbcinst -q -d
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[PostgreSQL]
[MySQL]
CLI> cdr show status
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
Call Detail Record (CDR) settings
----------------------------------
Logging: Enabled
Mode: Simple
Log unanswered calls: No
Log congestion: No
* Registered Backends
-------------------
mysql
Adaptive ODBC
cdr_manager (suspended)
cdr-custom
csv
vi /etc/odbc.ini
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[asterisk-connector]
Description=MySQL connection to 'asterisk' database
Driver=MySQL
Database=asteriskdb
User=asterisk_user
Password=asterisk_password
Server=localhost
Port=3306
Socket=/var/lib/mysql/mysql.sock
option=3
# echo 'select 1' | isql -v asterisk-connector
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select 1
+---------------------+
| 1 |
+---------------------+
| 1 |
+---------------------+
SQLRowCount returns 1
1 rows fetched
# mysql -uasterisk_user -p
>> show databases;
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
+--------------------+
| Database |
+--------------------+
| information_schema |
| asteriskdb |
+--------------------+
2 rows in set (0.01 sec)
> show tables;
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
+----------------------+
| Tables_in_asteriskdb |
+----------------------+
| cdr |
| cel |
+----------------------+
2 rows in set (0.00 sec)
> show columns from cdr;
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
+-------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------------------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| calldate | datetime | NO | MUL | 0000-00-00 00:00:00 | |
| clid | varchar(80) | NO | MUL | | |
| src | varchar(80) | NO | MUL | | |
| dst | varchar(80) | NO | MUL | | |
| realdst | varchar(80) | NO | | | |
| dcontext | varchar(80) | NO | MUL | | |
| channel | varchar(80) | NO | | | |
| dstchannel | varchar(80) | NO | | | |
| lastapp | varchar(80) | NO | | | |
| lastdata | varchar(80) | NO | | | |
| start | datetime | NO | | 0000-00-00 00:00:00 | |
| answer | datetime | NO | | 0000-00-00 00:00:00 | |
| end | datetime | NO | | 0000-00-00 00:00:00 | |
| duration | int(11) | NO | | 0 | |
| billsec | int(11) | NO | | 0 | |
| disposition | varchar(45) | NO | | | |
| amaflags | int(11) | NO | | 0 | |
| remoteip | varchar(60) | NO | | | |
| accountcode | varchar(20) | NO | MUL | | |
| peeraccount | varchar(20) | NO | | | |
| uniqueid | varchar(32) | NO | MUL | | |
| userfield | varchar(255) | NO | | | |
| did | varchar(50) | NO | MUL | | |
| linkedid | varchar(32) | NO | | | |
| sequence | int(11) | NO | | 0 | |
| filename | varchar(255) | YES | | none | |
+-------------+--------------+------+-----+---------------------+----------------+
27 rows in set (0.01 sec)
> show columns from cel; //зачем эта таблица я вообще не понял.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| eventtype | varchar(30) | NO | | NULL | |
| eventtime | datetime | NO | | NULL | |
| cid_name | varchar(80) | NO | | NULL | |
| cid_num | varchar(80) | NO | | NULL | |
| cid_ani | varchar(80) | NO | | NULL | |
| cid_rdnis | varchar(80) | NO | | NULL | |
| cid_dnid | varchar(80) | NO | | NULL | |
| exten | varchar(80) | NO | | NULL | |
| context | varchar(80) | NO | | NULL | |
| channame | varchar(80) | NO | | NULL | |
| src | varchar(80) | NO | | NULL | |
| dst | varchar(80) | NO | | NULL | |
| channel | varchar(80) | NO | | NULL | |
| dstchannel | varchar(80) | NO | | NULL | |
| appname | varchar(80) | NO | | NULL | |
| appdata | varchar(80) | NO | | NULL | |
| amaflags | int(11) | NO | | NULL | |
| accountcode | varchar(20) | NO | | NULL | |
| uniqueid | varchar(32) | NO | MUL | NULL | |
| linkedid | varchar(32) | NO | MUL | NULL | |
| peer | varchar(80) | NO | | NULL | |
| userdeftype | varchar(255) | NO | | NULL | |
| eventextra | varchar(255) | NO | | NULL | |
| userfield | varchar(255) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
25 rows in set (0.00 sec)
# vi /etc/asterisk/res_odbc.conf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[asteriskdb]
enabled => yes
dsn => asterisk-connector
username => asterisk_user
password => asterisk_password
pooling => no
limit => 0
pre-connect => yes
*CLI> odbc show
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
ODBC DSN Settings
-----------------
Name: asteriskdb
DSN: asterisk
Last fail connection attempt: 2018-09-04 10:05:26
Number of active connections: 0 (out of 1)
# vi /etc/asterisk/cdr_odbc.conf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[asteriskdb]
connection=asteriskdb
loguniqueid=yes
table=cdr
alias start => calldate
# vi /etc/asterisk/cel_odbc.conf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[cel]
connection=asteriskdb
loguniqueid=yes
table=cel
Еще хотел добавить что астериск собирался с поддержкой res_config_mysq, app_mysql, cdr_mysql
Потом я пересобрал его добавив к этому еще odbc. После этого когда выполняешь команду service astersik restart надо ждать примерно 1.5-2 минуты когда он запустится.
tail -n300 /var/log/asterisk/messages
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[Sep 4 10:50:15] NOTICE[2376] cdr.c: CDR simple logging enabled.
[Sep 4 10:50:15] NOTICE[2376] loader.c: 313 modules will be loaded.
[Sep 4 10:50:15] WARNING[2376] res_odbc.c: The 'pooling', 'shared_connections', 'limit', and 'idlecheck' options were replaced by 'max_connections'. See res_odbc.conf.sample.
[Sep 4 10:50:15] WARNING[2376] res_odbc.c: The 'pooling', 'shared_connections', 'limit', and 'idlecheck' options were replaced by 'max_connections'. See res_odbc.conf.sample.
[Sep 4 10:50:15] WARNING[2376] res_odbc.c: res_odbc: Error SQLConnect=-1 errno=0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
[Sep 4 10:50:15] NOTICE[2376] res_odbc.c: Registered ODBC class 'asteriskdb' dsn->[asterisk]
[Sep 4 10:50:15] WARNING[2376] res_phoneprov.c: Unable to find a valid server address or name.
[Sep 4 10:50:15] ERROR[2376] ari/config.c: No configured users for ARI
[Sep 4 10:50:15] WARNING[2376] res_config_mysql.c: MySQL realtime: no requirements setting found, using 'warn' as default.
[Sep 4 10:52:23] ERROR[2376] res_config_pgsql.c: PostgreSQL RealTime: Failed to connect database asterisk on 127.0.0.1:
[Sep 4 10:52:23] WARNING[2376] res_config_pgsql.c: PostgreSQL RealTime: Couldn't establish connection. Check debug.
[Sep 4 10:52:23] NOTICE[2376] chan_skinny.c: Configuring skinny from skinny.conf
[Sep 4 10:52:23] NOTICE[2376] chan_sip.c: The 'username' field for sip peers has been deprecated in favor of the term 'defaultuser'
[Sep 4 10:52:23] NOTICE[2376] confbridge/conf_config_parser.c: Adding default_menu menu to app_confbridge
[Sep 4 10:52:23] NOTICE[2376] cel_custom.c: No mappings found in cel_custom.conf. Not logging CEL to custom CSVs.
[Sep 4 10:52:23] WARNING[2376] cdr_adaptive_odbc.c: No such connection 'asterisk-connector' in the 'asteriskdb' section of cdr_adaptive_odbc.conf. Check res_odbc.conf.
[Sep 4 10:52:23] NOTICE[2376] cdr_pgsql.c: cdr_pgsql configuration contains no global section, skipping module load.
[Sep 4 10:52:23] WARNING[2376] res_odbc.c: res_odbc: Error SQLConnect=-1 errno=0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
[Sep 4 10:52:23] WARNING[2376] cel_odbc.c: No such connection 'asteriskdb' in the 'cel' section of cel_odbc.conf. Check res_odbc.conf.
[Sep 4 10:52:23] WARNING[2376] cel_pgsql.c: CEL pgsql config file missing global section.
[Sep 4 10:52:23] WARNING[2376] res_hep_rtcp.c: res_hep is not loaded or running; declining module load
[Sep 4 10:52:23] WARNING[2376] res_hep_pjsip.c: res_hep is not loaded or running; declining module load
[Sep 4 10:52:24] NOTICE[2448] chan_sip.c: Peer '500' is now Reachable. (107ms / 2000ms)
[Sep 4 10:52:25] NOTICE[2448] chan_sip.c: Peer '511' is now Reachable. (9ms / 2000ms)
[Sep 4 10:54:04] NOTICE[2448] chan_sip.c: Received SIP subscribe for peer without mailbox: 500
Если не править этот файл - вообще ничего не писалось в базу данных
# vi /etc/asterisk/cdr_mysql.conf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[global]
hostname=localhost
dbname=asteriskdb
table=cdr
password=asterisk_password
user=asterisk_user
port=3306
;sock=/tmp/mysql.sock
# vi /etc/my.cnf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
bind=127.0.0.1
# vi /etc/asterisk/cdr_adaptive_odbc.conf
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
[asteriskdb]
connection=asterisk-connector
table=cdr
alias filename => filename
# vi /var/www/html/cdr/inc/config/config.php
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
'db' => array(
# Тип базы, который поддерживается PDO. Например: mysql, pgsql
'type' => 'mysql',
# Хост
'host' => 'localhost',
# Порт
'port' => '3306',
# Пользователь
'user' => 'asterisk_user',
# Имя базы
'name' => 'asteriskdb',
# Пароль
'pass' => 'asterisk_password',
# Название таблицы
'table' => 'cdr',
# Доп. опции подключения
'options' => array(
...
'system' => array(
'server_mode' => 0,
## Название столбца в БД, в котором хранится название записи звонка
'column_name' => 'filename',
## Путь к папке для временных файлов
'tmp_dir' => '/tmp',
## Путь к папке, где находятся записи Asterisk. БЕЗ слеша на конце
'monitor_dir' => '/records/callrecords',
'audio_format' => 'mp3',
.....
Сообщение отредактировал en4a - Sep 4 2018, 10:24