/
mikopbx
/
ModuleBeelinePbx
Обзор
Документация
Войти
/
mikopbx
/
ModuleBeelinePbx
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
master
Lib/BeelinePbxConf.php
73 строки
4 KB
boffart
Инициализация модуля ModuleBeelinePbx
08 июл 2026, 17:11
08 июл 2026, 17:11
1cc4e1a
Код
Авторство
О чём код?
<?php /* * MikoPBX - free phone system for small business * Copyright © 2017-2024 Alexey Portnov and Nikolay Beketov * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program. * If not, see <https://www.gnu.org/licenses/>. */ namespace Modules\ModuleBeelinePbx\Lib; use MikoPBX\Core\System\Util; use MikoPBX\Modules\Config\ConfigClass; use Modules\ModuleBeelinePbx\Lib\RestAPI\EventController; use Modules\ModuleBeelinePbx\Lib\RestAPI\GetController; class BeelinePbxConf extends ConfigClass { /** * Регистрирует cron-задачи модуля. * * @param array $tasks */ public function createCronTasks(&$tasks): void { if (!is_array($tasks)) { return; } $binDir = $this->moduleDir . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR; $syncCdrPath = $binDir . 'synchCdr.php'; $downloadRecPath = $binDir . 'downloadRecords.php'; $subscriptionPath = $binDir . 'manageSubscription.php'; $phpPath = Util::which('php'); // Основной проход: скользящее окно, двигает offset. $tasks[] = "*/1 * * * * $phpPath -f $syncCdrPath > /dev/null 2> /dev/null\n"; // Глубокая дозагрузка (12 часов назад): добирает длинные/отложенные звонки, // попавшие в статистику Beeline уже после ухода основного окна вперёд. Offset не двигает. $tasks[] = "*/30 * * * * $phpPath -f $syncCdrPath -- --lookback=720 > /dev/null 2> /dev/null\n"; // Дозагрузка mp3-записей для отвеченных звонков. $tasks[] = "*/5 * * * * $phpPath -f $downloadRecPath > /dev/null 2> /dev/null\n"; // Управление подпиской на Xsi-Events: (пере)подписка до истечения, снятие при выключении // тумблера. Запрос к Билайн уходит только на переходах/продлении, иначе — дешёвая сверка TTL. $tasks[] = "*/5 * * * * $phpPath -f $subscriptionPath > /dev/null 2> /dev/null\n"; } /** * Дополнительные REST-маршруты модуля. * * Публичный (noAuth) эндпоинт выгрузки CDR для внешних потребителей (1С). */ public function getPBXCoreRESTAdditionalRoutes(): array { return [ // Выгрузка импортированной истории звонков для внешних потребителей (1С). [GetController::class, 'getDataAction', '/pbxcore/beeline-pbx/cdr', 'get', '/', true], // Приём событий Билайн (Xsi-Events push). Пока заглушка: дамп запроса в лог, ответ 200. // Оба метода на один обработчик, чтобы залогировать и probe/verification-запросы. [EventController::class, 'processEvent', '/pbxcore/beeline-pbx/event', 'post', '/', true], [EventController::class, 'processEvent', '/pbxcore/beeline-pbx/event', 'get', '/', true], ]; } }