Asterisk интеграция с Битрикс
root@vv:/home/vv # uname -a
FreeBSD vv 15.0-RELEASE FreeBSD 15.0-RELEASE releng/15.0-n280995-7aedc8de6446 GENERIC amd64
root@vv:/home/vv #
root@vv:/home/vv # pkg update
root@vv:/home/vv #pkg install mysql80-server-8.0.44
root@vv:/home/vv # sysrc mysql_enable="YES"
root@vv:/home/vv # service mysql-server start
root@vv:/home/vv # mysql_secure_installation
Это для общей информации
vv@vv:/usr/local/etc#
pkg install asterisk20-20.17.0
sysrc asterisk_enable="yes"
======================
pkg install mysql-connector-odbc-unixodbc-9.4.0
Спасибо за помощь https://subnets.ru/blog/?p=4872
vv@vv:/usr/local/etc# cat odbc.ini
[asterisk]
Driver=MySQL
SERVER=127.0.0.1
PORT=3306
DATABASE=asterisk
USER=asterisk
PASSWORD=asterisk
OPTION=4194304
CHARSET=utf8
vv@vv:/usr/local/etc# cat odbcinst.ini
[MySQL]
Description=ODBC for MySQL
Driver=/usr/local/lib/libmyodbc9w.so
UsageCount=20002
cel.conf
[general]
enable = yes
apps = all
events = all
dateformat = %F %T
[radius]
radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf
cdr_adaptive_odbc.conf
[asterisk]
connection=asterisk
table=cdr
alias recfile => recordingfile
-----------------------------------------------
cdr_odbc.conf
[asterisk]
dsn=asterisk
loguniqueid=yes
;dispositionstring=yes
table=cdr
cel_odbc.conf
[cel]
connection=asterisk
loguniqueid=yes
table=cel
res_odbc.conf
[asterisk]
enabled => yes
dsn => asterisk
username => asterisk
password => asterisk
pre-connect => yes
polling => no
==============================
vv@vv:/home/vv/install/ asterisk20-20.17.0/contrib/realtime/mysql# ls
mysql_cdr.sql mysql_queue_log.sql
mysql_config.sql mysql_voicemail.sql
так удобнее
cp /home/vv/install/ asterisk20-20.17.0/contrib/realtime/mysql/* /home/vv/install/mysql/
root@vv:/home/vv # mysql -uroot -p
CREATE DATABASE asterisk DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'asterisk';
GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
use asterisk;
source /home/vv/install/mysql/mysql_cdr.sql;
source /home/vv/install/mysql/mysql_config.sql;
source /home/vv/install/mysql/mysql_voicemail.sql;
source /home/vv/install/mysql/mysql_queue_log.sql;
CREATE TABLE `cdr` (
`accountcode` varchar(80) DEFAULT NULL,
`src` varchar(80) DEFAULT NULL,
`dst` varchar(80) DEFAULT NULL,
`dcontext` varchar(80) DEFAULT NULL,
`clid` varchar(80) DEFAULT NULL,
`channel` varchar(80) DEFAULT NULL,
`dstchannel` varchar(80) DEFAULT NULL,
`lastapp` varchar(80) DEFAULT NULL,
`lastdata` varchar(80) DEFAULT NULL,
`start` datetime DEFAULT NULL,
`answer` datetime DEFAULT NULL,
`end` datetime DEFAULT NULL,
`duration` int DEFAULT NULL,
`billsec` int DEFAULT NULL,
`disposition` varchar(45) DEFAULT NULL,
`amaflags` varchar(45) DEFAULT NULL,
`userfield` varchar(256) DEFAULT NULL,
`uniqueid` varchar(150) DEFAULT NULL,
`linkedid` varchar(150) DEFAULT NULL,
`peeraccount` varchar(80) DEFAULT NULL,
`sequence` int DEFAULT NULL,
`recordingfile` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
С таблицей CEL немного повозился….
То Битрикс ругается, то Астериск ругается.
Вообщем пришел к такому компромису
CREATE TABLE IF NOT EXISTS `cel` (
`id` int(11) NOT NULL auto_increment,
`eventtype` varchar(30) NOT NULL,
`eventtime` datetime NOT NULL,
`cid_name` varchar(80) NOT NULL,
`cid_num` varchar(80) NOT NULL,
`cid_ani` varchar(80) NOT NULL,
`cid_rdnis` varchar(80) NOT NULL,
`cid_dnid` varchar(80) NOT NULL,
`exten` varchar(80) NOT NULL,
`context` varchar(80) NOT NULL,
`channame` varchar(80) NOT NULL,
`src` varchar(80) NULL,
`dst` varchar(80) NULL,
`channel` varchar(80) NULL,
`dstchannel` varchar(80) NULL,
`appname` varchar(80) NULL,
`appdata` varchar(80) NULL,
`amaflags` int(11) NULL,
`accountcode` varchar(20) NULL,
`uniqueid` varchar(32) NULL,
`linkedid` varchar(32) NULL,
`peer` varchar(80) NULL,
`userdeftype` varchar(255) NULL,
`eventextra` varchar(255) NULL,
`userfield` varchar(255) NULL,
PRIMARY KEY (`id`),
KEY `uniqueid_index` (`uniqueid`),
KEY `linkedid_index` (`linkedid`)
);
Да, вот чтобы битрикс базу увидел
===================Linux truble itigrix=========
ALTER USER 'asterisk'@'localhost' IDENTIFIED WITH mysql_native_password BY 'asterisk';
============================
Ну и начинаем ставить Битрикс
sysrc linux_enable="YES"
kldload linux
kldload linux64
vv@vv:/usr/local/etc/asterisk# kldstat
Id Refs Address Size Name
1 50 0xffffffff80200000 1f4daa0 kernel
2 1 0xffffffff82819000 73c0 linprocfs.ko
3 4 0xffffffff82821000 ce68 linux_common.ko
4 1 0xffffffff8282e000 21b8 hv_hid.ko
5 1 0xffffffff82831000 21e8 hms.ko
6 1 0xffffffff82834000 30a8 hidmap.ko
7 1 0xffffffff82838000 3220 intpm.ko
8 1 0xffffffff8283c000 2178 smbus.ko
9 1 0xffffffff8283f000 32320 linux.ko
10 2 0xffffffff82872000 6d98 mqueuefs.ko
11 1 0xffffffff82879000 2e3f0 linux64.ko
12 1 0xffffffff828a8000 2278 pty.ko
13 1 0xffffffff828ab000 3570 fdescfs.ko
14 1 0xffffffff828af000 440c linsysfs.ko
15 1 0xffffffff828b4000 2a80 mac_ntpd.ko
vv@vv:/usr/local/etc/asterisk#
pkg install linux_base-c7
vv@vv:/usr/local/etc/asterisk# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/da0p2 / ufs rw 1 1
/dev/da0p3 none swap sw 0 0
linprocfs /compat/linux/proc linprocfs rw 0 0
#linsysfs /compat/linux/sys linsysfs rw 0 0
tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0
vv@vv:/usr/local/etc/asterisk#
# mount /compat/linux/proc
# mount /compat/linux/dev/shm
…Можно сделать reboot
cd /home/vv/install/
mkdir bx24asterisk
cd bx24asterisk
wget http://bx24asterisk.ru/download/release.tar.gz
vv@vv:/home/vv/install/bx24asterisk# ls
bx24asterisk_core lib service.sh
config.json.dist locales static
custom.dist release.tar.gz update.sh
customizer.php.dist remove.sh
vv@vv:/home/vv/install/bx24asterisk#
# mkdir /usr/local/etc/bx24asterisk
Копируем все файлы и папки
cp –R /home/vv/install/bx24asterisk/* /usr/local/etc/bx24asterisk
переходим в каталог
cd /usr/local/etc/bx24asterisk
копируем файлы конфигурации
cp config.json.dist config.json
cp customizer.php.dist customizer.php
В этих файлах config.json, customizer.php необходимо изменить пути до файлов конфигурации на актуальные!!!
Теперь создаем службу и добавляем её в автозапуск
Это мой вариант.
====================/usr/local/etc/rc.d/bx24asterisk ==================
#!/bin/sh
#
# PROVIDE: bx24asterisk
# REQUIRE: DAEMON mysql asterisk
# KEYWORD: shutdown
#
# Add the following to /etc/rc.conf[.local] to enable this service
#
# bx24asterisk_enable="YES"
#
. /etc/rc.subr
name="bx24asterisk"
rcvar="bx24asterisk_enable"
pidfile=/var/run/${name}.pid
bx24asterisk_user=asterisk
bx24asterisk_group=asterisk
start_cmd="${name}_start"
stop_cmd="${name}_stop"
status_cmd="${name}_status"
bx24asterisk_flags=${bx24asterisk_configname:---
configname=/usr/local/etc/bx24asterisk/config.json &}
command="/usr/local/etc/bx24asterisk/bx24asterisk_core"
bx24asterisk_start() {
/usr/sbin/daemon -P ${pidfile} -r -f -u $bx24asterisk_user $command --configname=/usr/local/etc/bx24asterisk/config.json
}
bx24asterisk_stop() {
if [ -e "${pidfile}" ]; then
kill -s TERM `cat ${pidfile}`
else
echo "${name} is not running"
fi
}
bx24asterisk_status() {
if [ -e "${pidfile}" ]; then
echo "${name} is running as pid `cat ${pidfile}`"
else
echo "${name} is not running"
fi
}
load_rc_config $name
run_rc_command "$1"
===============rc.d================
Казалось бы всЕ. Да еще не Все..
Есть у нас такой каталог
vv@vv:/compat/linux# ls -ll
total 21
lrwxr-xr-x 1 root wheel 7 Apr 11 2018 bin -> usr/bin
dr-xr-xr-x 8 root wheel 512 Jan 31 07:52 dev
drwxr-xr-x 25 root wheel 1536 Jan 31 07:30 etc
lrwxr-xr-x 1 root wheel 7 Apr 11 2018 lib -> usr/lib
lrwxr-xr-x 1 root wheel 9 Apr 11 2018 lib64 -> usr/lib64
drwxr-xr-x 2 root wheel 512 Jan 31 07:30 opt
dr-xr-xr-x 1 root wheel 0 Jan 31 09:40 proc
lrwxr-xr-x 1 root wheel 8 Dec 18 04:05 run -> /var/run
lrwxr-xr-x 1 root wheel 8 Apr 11 2018 sbin -> usr/sbin
drwxr-xr-x 2 root wheel 512 Jan 31 07:30 srv
dr-xr-xr-x 1 root wheel 0 Jan 31 09:40 sys
drwxr-xr-x 8 root wheel 512 Jan 31 07:30 usr
drwxr-xr-x 16 root wheel 512 Jan 31 07:30 var
vv@vv:/compat/linux#
Копирую все файлы из каталога /usr/local/etc/bx24asterisk/lib
cp /usr/local/etc/bx24asterisk/lib/* /compat/linux/lib
cp /usr/local/etc/bx24asterisk/lib/* /compat/linux/lib64
Не спрашивайте зачем… Пока точно сам не знаю…
===============================================
После чего можно перезагрузиться
или
сделать рестарт сервиса service bx24asterisk restart
Проверяем
vv@vv:/usr/local/etc/asterisk# sockstat -4l | grep asterisk
asterisk Thread (po 3252 11 tcp4 *:8077 *:*
asterisk Thread (po 3252 12 tcp4 *:8078 *:*
asterisk asterisk 2837 10 tcp4 *:8088 *:*
asterisk asterisk 2837 12 tcp4 *:5038 *:*
asterisk asterisk 2837 13 udp4 *:30999 *:*
asterisk asterisk 2837 15 udp4 *:5060 *:*
asterisk asterisk 2837 16 udp4 *:5080 *:*
asterisk asterisk 2837 17 udp4 *:5090 *:*
asterisk asterisk 2837 19 udp4 *:4569 *:*
asterisk asterisk 2837 21 udp4 *:4520 *:*
asterisk asterisk 2837 22 udp4 *:* *:*
vv@vv:/usr/local/etc/asterisk#
Далее заходим на адрес
http://ipasterisk:8077/config/master
И настраиваемся с битриксом..
P.S.
Столкнулся с такой проблемой
После перезагрузки в базу asterisk таблицы cel и cdr не пишутся данные…
Только после рестарта астериск все заработало.
…………
У меня asterisk загружался раньше mysql.
В логах астериск можно увидеть , что он самый астериск не может подключиться к базе
Так как она еще просто не загрузилась…!!!
Что то типа того
Понял что нужен правильный порядок загрузки сервисов.
Нашел здесь https://man.freebsd.org/cgi/man.cgi?rc.local
В итоге
vv@vv:/usr/local/etc/rc.d# ls -ll
total 36
-rwxr-xr-x 1 root wheel 2142 Jan 31 07:20 90.mysql-server
-rwxr-xr-x 1 root wheel 6734 Jan 15 05:34 apache24
-rwxr-xr-x 1 root wheel 1964 Jan 27 06:48 asterisk
-rwxr-xr-x 1 root wheel 1074 Jul 13 2024 bx24asterisk
-rwxr-xr-x 1 root wheel 1774 Jan 15 05:34 htcacheclean
-rwxr-xr-x 1 root wheel 3085 Jan 15 05:50 php_fpm
-rwxr-xr-x 1 root wheel 2467 Jan 15 04:13 snmpd
-rwxr-xr-x 1 root wheel 1080 Jan 15 04:13 snmptrapd
vv@vv:/usr/local/etc/rc.d#
FreeBSD vv 15.0-RELEASE FreeBSD 15.0-RELEASE releng/15.0-n280995-7aedc8de6446 GENERIC amd64
root@vv:/home/vv #
root@vv:/home/vv # pkg update
root@vv:/home/vv #pkg install mysql80-server-8.0.44
root@vv:/home/vv # sysrc mysql_enable="YES"
root@vv:/home/vv # service mysql-server start
root@vv:/home/vv # mysql_secure_installation
- Код: Выделить всё
mysql_secure_installation: [ERROR] unknown variable 'prompt=\u@\h [\d]>\_'.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No:n
Please set the password for root here.
New password: ***
Re-enter new password: ***
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
... skipping.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
... skipping.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
... skipping.
All done!
Это для общей информации
- Код: Выделить всё
======================
pkg install mc
смена оболочки
chsh -s /bin/csh
reboot
======================
root@vv:/home/vv #
root@vv:/home/vv # pkg install apache24
root@vv:/home/vv # sysrc apache24_enable="yes"
=====================
pkg install mod_php84 php84-bcmath php84-calendar php84-composer php84-ctype php84-curl php84-dba php84-dom php84-extensions php84-gd php84-gettext php84-ldap php84-mbstring php84-mysqli php84-odbc php84-pdo php84-zip php84-zlib php84-xml
pkg install mod_php84
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
======================
vv@vv:/usr/local/etc#
pkg install asterisk20-20.17.0
sysrc asterisk_enable="yes"
======================
pkg install mysql-connector-odbc-unixodbc-9.4.0
Спасибо за помощь https://subnets.ru/blog/?p=4872
vv@vv:/usr/local/etc# cat odbc.ini
[asterisk]
Driver=MySQL
SERVER=127.0.0.1
PORT=3306
DATABASE=asterisk
USER=asterisk
PASSWORD=asterisk
OPTION=4194304
CHARSET=utf8
vv@vv:/usr/local/etc# cat odbcinst.ini
[MySQL]
Description=ODBC for MySQL
Driver=/usr/local/lib/libmyodbc9w.so
UsageCount=20002
cel.conf
[general]
enable = yes
apps = all
events = all
dateformat = %F %T
[radius]
radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf
cdr_adaptive_odbc.conf
[asterisk]
connection=asterisk
table=cdr
alias recfile => recordingfile
-----------------------------------------------
cdr_odbc.conf
[asterisk]
dsn=asterisk
loguniqueid=yes
;dispositionstring=yes
table=cdr
cel_odbc.conf
[cel]
connection=asterisk
loguniqueid=yes
table=cel
res_odbc.conf
[asterisk]
enabled => yes
dsn => asterisk
username => asterisk
password => asterisk
pre-connect => yes
polling => no
==============================
vv@vv:/home/vv/install/ asterisk20-20.17.0/contrib/realtime/mysql# ls
mysql_cdr.sql mysql_queue_log.sql
mysql_config.sql mysql_voicemail.sql
так удобнее
cp /home/vv/install/ asterisk20-20.17.0/contrib/realtime/mysql/* /home/vv/install/mysql/
root@vv:/home/vv # mysql -uroot -p
CREATE DATABASE asterisk DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'asterisk';
GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
use asterisk;
source /home/vv/install/mysql/mysql_cdr.sql;
source /home/vv/install/mysql/mysql_config.sql;
source /home/vv/install/mysql/mysql_voicemail.sql;
source /home/vv/install/mysql/mysql_queue_log.sql;
CREATE TABLE `cdr` (
`accountcode` varchar(80) DEFAULT NULL,
`src` varchar(80) DEFAULT NULL,
`dst` varchar(80) DEFAULT NULL,
`dcontext` varchar(80) DEFAULT NULL,
`clid` varchar(80) DEFAULT NULL,
`channel` varchar(80) DEFAULT NULL,
`dstchannel` varchar(80) DEFAULT NULL,
`lastapp` varchar(80) DEFAULT NULL,
`lastdata` varchar(80) DEFAULT NULL,
`start` datetime DEFAULT NULL,
`answer` datetime DEFAULT NULL,
`end` datetime DEFAULT NULL,
`duration` int DEFAULT NULL,
`billsec` int DEFAULT NULL,
`disposition` varchar(45) DEFAULT NULL,
`amaflags` varchar(45) DEFAULT NULL,
`userfield` varchar(256) DEFAULT NULL,
`uniqueid` varchar(150) DEFAULT NULL,
`linkedid` varchar(150) DEFAULT NULL,
`peeraccount` varchar(80) DEFAULT NULL,
`sequence` int DEFAULT NULL,
`recordingfile` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
С таблицей CEL немного повозился….
То Битрикс ругается, то Астериск ругается.
Вообщем пришел к такому компромису
CREATE TABLE IF NOT EXISTS `cel` (
`id` int(11) NOT NULL auto_increment,
`eventtype` varchar(30) NOT NULL,
`eventtime` datetime NOT NULL,
`cid_name` varchar(80) NOT NULL,
`cid_num` varchar(80) NOT NULL,
`cid_ani` varchar(80) NOT NULL,
`cid_rdnis` varchar(80) NOT NULL,
`cid_dnid` varchar(80) NOT NULL,
`exten` varchar(80) NOT NULL,
`context` varchar(80) NOT NULL,
`channame` varchar(80) NOT NULL,
`src` varchar(80) NULL,
`dst` varchar(80) NULL,
`channel` varchar(80) NULL,
`dstchannel` varchar(80) NULL,
`appname` varchar(80) NULL,
`appdata` varchar(80) NULL,
`amaflags` int(11) NULL,
`accountcode` varchar(20) NULL,
`uniqueid` varchar(32) NULL,
`linkedid` varchar(32) NULL,
`peer` varchar(80) NULL,
`userdeftype` varchar(255) NULL,
`eventextra` varchar(255) NULL,
`userfield` varchar(255) NULL,
PRIMARY KEY (`id`),
KEY `uniqueid_index` (`uniqueid`),
KEY `linkedid_index` (`linkedid`)
);
Да, вот чтобы битрикс базу увидел
===================Linux truble itigrix=========
ALTER USER 'asterisk'@'localhost' IDENTIFIED WITH mysql_native_password BY 'asterisk';
============================
Ну и начинаем ставить Битрикс
sysrc linux_enable="YES"
kldload linux
kldload linux64
vv@vv:/usr/local/etc/asterisk# kldstat
Id Refs Address Size Name
1 50 0xffffffff80200000 1f4daa0 kernel
2 1 0xffffffff82819000 73c0 linprocfs.ko
3 4 0xffffffff82821000 ce68 linux_common.ko
4 1 0xffffffff8282e000 21b8 hv_hid.ko
5 1 0xffffffff82831000 21e8 hms.ko
6 1 0xffffffff82834000 30a8 hidmap.ko
7 1 0xffffffff82838000 3220 intpm.ko
8 1 0xffffffff8283c000 2178 smbus.ko
9 1 0xffffffff8283f000 32320 linux.ko
10 2 0xffffffff82872000 6d98 mqueuefs.ko
11 1 0xffffffff82879000 2e3f0 linux64.ko
12 1 0xffffffff828a8000 2278 pty.ko
13 1 0xffffffff828ab000 3570 fdescfs.ko
14 1 0xffffffff828af000 440c linsysfs.ko
15 1 0xffffffff828b4000 2a80 mac_ntpd.ko
vv@vv:/usr/local/etc/asterisk#
pkg install linux_base-c7
vv@vv:/usr/local/etc/asterisk# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/da0p2 / ufs rw 1 1
/dev/da0p3 none swap sw 0 0
linprocfs /compat/linux/proc linprocfs rw 0 0
#linsysfs /compat/linux/sys linsysfs rw 0 0
tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0
vv@vv:/usr/local/etc/asterisk#
# mount /compat/linux/proc
# mount /compat/linux/dev/shm
…Можно сделать reboot
cd /home/vv/install/
mkdir bx24asterisk
cd bx24asterisk
wget http://bx24asterisk.ru/download/release.tar.gz
“---цитата
Скачиваем дистрибутив модуля bx24asterisk:
$ wget http://bx24asterisk.ru/download/release.tar.gz
$ tar xzvf release.tar.gz
Настраиваем файл журнала:
# touch /var/log/bx24asterisk.log
# chown asterisk:asterisk /var/log/bx24asterisk.log
---“
vv@vv:/home/vv/install/bx24asterisk# ls
bx24asterisk_core lib service.sh
config.json.dist locales static
custom.dist release.tar.gz update.sh
customizer.php.dist remove.sh
vv@vv:/home/vv/install/bx24asterisk#
# mkdir /usr/local/etc/bx24asterisk
Копируем все файлы и папки
cp –R /home/vv/install/bx24asterisk/* /usr/local/etc/bx24asterisk
переходим в каталог
cd /usr/local/etc/bx24asterisk
копируем файлы конфигурации
cp config.json.dist config.json
cp customizer.php.dist customizer.php
В этих файлах config.json, customizer.php необходимо изменить пути до файлов конфигурации на актуальные!!!
Теперь создаем службу и добавляем её в автозапуск
Это мой вариант.
====================/usr/local/etc/rc.d/bx24asterisk ==================
#!/bin/sh
#
# PROVIDE: bx24asterisk
# REQUIRE: DAEMON mysql asterisk
# KEYWORD: shutdown
#
# Add the following to /etc/rc.conf[.local] to enable this service
#
# bx24asterisk_enable="YES"
#
. /etc/rc.subr
name="bx24asterisk"
rcvar="bx24asterisk_enable"
pidfile=/var/run/${name}.pid
bx24asterisk_user=asterisk
bx24asterisk_group=asterisk
start_cmd="${name}_start"
stop_cmd="${name}_stop"
status_cmd="${name}_status"
bx24asterisk_flags=${bx24asterisk_configname:---
configname=/usr/local/etc/bx24asterisk/config.json &}
command="/usr/local/etc/bx24asterisk/bx24asterisk_core"
bx24asterisk_start() {
/usr/sbin/daemon -P ${pidfile} -r -f -u $bx24asterisk_user $command --configname=/usr/local/etc/bx24asterisk/config.json
}
bx24asterisk_stop() {
if [ -e "${pidfile}" ]; then
kill -s TERM `cat ${pidfile}`
else
echo "${name} is not running"
fi
}
bx24asterisk_status() {
if [ -e "${pidfile}" ]; then
echo "${name} is running as pid `cat ${pidfile}`"
else
echo "${name} is not running"
fi
}
load_rc_config $name
run_rc_command "$1"
===============rc.d================
Казалось бы всЕ. Да еще не Все..
Есть у нас такой каталог
vv@vv:/compat/linux# ls -ll
total 21
lrwxr-xr-x 1 root wheel 7 Apr 11 2018 bin -> usr/bin
dr-xr-xr-x 8 root wheel 512 Jan 31 07:52 dev
drwxr-xr-x 25 root wheel 1536 Jan 31 07:30 etc
lrwxr-xr-x 1 root wheel 7 Apr 11 2018 lib -> usr/lib
lrwxr-xr-x 1 root wheel 9 Apr 11 2018 lib64 -> usr/lib64
drwxr-xr-x 2 root wheel 512 Jan 31 07:30 opt
dr-xr-xr-x 1 root wheel 0 Jan 31 09:40 proc
lrwxr-xr-x 1 root wheel 8 Dec 18 04:05 run -> /var/run
lrwxr-xr-x 1 root wheel 8 Apr 11 2018 sbin -> usr/sbin
drwxr-xr-x 2 root wheel 512 Jan 31 07:30 srv
dr-xr-xr-x 1 root wheel 0 Jan 31 09:40 sys
drwxr-xr-x 8 root wheel 512 Jan 31 07:30 usr
drwxr-xr-x 16 root wheel 512 Jan 31 07:30 var
vv@vv:/compat/linux#
Копирую все файлы из каталога /usr/local/etc/bx24asterisk/lib
cp /usr/local/etc/bx24asterisk/lib/* /compat/linux/lib
cp /usr/local/etc/bx24asterisk/lib/* /compat/linux/lib64
Не спрашивайте зачем… Пока точно сам не знаю…
===============================================
После чего можно перезагрузиться
или
сделать рестарт сервиса service bx24asterisk restart
Проверяем
vv@vv:/usr/local/etc/asterisk# sockstat -4l | grep asterisk
asterisk Thread (po 3252 11 tcp4 *:8077 *:*
asterisk Thread (po 3252 12 tcp4 *:8078 *:*
asterisk asterisk 2837 10 tcp4 *:8088 *:*
asterisk asterisk 2837 12 tcp4 *:5038 *:*
asterisk asterisk 2837 13 udp4 *:30999 *:*
asterisk asterisk 2837 15 udp4 *:5060 *:*
asterisk asterisk 2837 16 udp4 *:5080 *:*
asterisk asterisk 2837 17 udp4 *:5090 *:*
asterisk asterisk 2837 19 udp4 *:4569 *:*
asterisk asterisk 2837 21 udp4 *:4520 *:*
asterisk asterisk 2837 22 udp4 *:* *:*
vv@vv:/usr/local/etc/asterisk#
Далее заходим на адрес
http://ipasterisk:8077/config/master
И настраиваемся с битриксом..
P.S.
Столкнулся с такой проблемой
После перезагрузки в базу asterisk таблицы cel и cdr не пишутся данные…
Только после рестарта астериск все заработало.
…………
У меня asterisk загружался раньше mysql.
В логах астериск можно увидеть , что он самый астериск не может подключиться к базе
Так как она еще просто не загрузилась…!!!
Что то типа того
Jan 4 23:52:25] WARNING[100127] res_odbc.c: res_odbc: Error SQLConnect=-1 errno=2003 [unixODBC][MySQL][ODBC 8.0(w) Driver]Can't connect to MySQL server on '127.0.0.1:3306' (61)
[Jan 4 23:52:25] WARNING[100127] cel_odbc.c: No such connection 'asterisk' in the 'cel' section of cel_odbc.conf. Check res_odbc.conf.
Понял что нужен правильный порядок загрузки сервисов.
Нашел здесь https://man.freebsd.org/cgi/man.cgi?rc.local
“The scripts within each directory are executed in lexicographical
order. If a specific order is required, numbers may be used as a
prefix to the existing filenames, so for example 100.foo would be
executed before 200.bar; without the numeric prefixes the opposite
would be true.”
В итоге
vv@vv:/usr/local/etc/rc.d# ls -ll
total 36
-rwxr-xr-x 1 root wheel 2142 Jan 31 07:20 90.mysql-server
-rwxr-xr-x 1 root wheel 6734 Jan 15 05:34 apache24
-rwxr-xr-x 1 root wheel 1964 Jan 27 06:48 asterisk
-rwxr-xr-x 1 root wheel 1074 Jul 13 2024 bx24asterisk
-rwxr-xr-x 1 root wheel 1774 Jan 15 05:34 htcacheclean
-rwxr-xr-x 1 root wheel 3085 Jan 15 05:50 php_fpm
-rwxr-xr-x 1 root wheel 2467 Jan 15 04:13 snmpd
-rwxr-xr-x 1 root wheel 1080 Jan 15 04:13 snmptrapd
vv@vv:/usr/local/etc/rc.d#