Giter VIP home page Giter VIP logo

mikopbx / core Goto Github PK

View Code? Open in Web Editor NEW
319.0 12.0 57.0 127.27 MB

Free, easy to setup PBX for small business based on Asterisk 16 core

Home Page: https://www.mikopbx.com

License: GNU General Public License v3.0

PHP 79.78% Lua 2.06% Shell 1.89% Volt 2.58% CSS 0.27% JavaScript 10.68% Roff 2.72% Python 0.03%
asterisk pbx telephony phalcon cti pjsip voip-server voip asterisk-pbx asterisk-ami

core's Introduction

Translation status GitHub All Releases GitHub last commit (branch) Scrutinizer Code Quality GitHub

MikoPBX - free phone system for small business


88b           d88  88  88                     88888888ba   88888888ba  8b        d8
888b         d888  ""  88                     88      "8b  88      "8b  Y8,    ,8P
88`8b       d8'88      88                     88      ,8P  88      ,8P   `8b  d8'
88 `8b     d8' 88  88  88   ,d8   ,adPPYba,   88aaaaaa8P'  88aaaaaa8P'     Y88P
88  `8b   d8'  88  88  88 ,a8"   a8"     "8a  88""""""'    88""""""8b,     d88b
88   `8b d8'   88  88  8888[     8b       d8  88           88      `8b   ,8P  Y8,
88    `888'    88  88  88`"Yba,  "8a,   ,a8"  88           88      a8P  d8'    `8b
88     `8'     88  88  88   `Y8a  `"YbbdP"'   88           88888888P"  8P        Y8


What's MikoPBX?

MikoPBX is an open-source GUI (graphical user interface) that controls and manages Asterisk (PBX). MikoPBX is licensed under GPL. MikoPBX is an entirely modular GUI for Asterisk written in PHP and Javascript. Meaning you can simply write any module you can think of and distribute it free of cost to your clients so that they can take advantage of beneficial features in Asterisk The released firmware consists Linux operation system and all needing services like Asterisk, Nginx, PHP-FPM, iptables etc.

MikoPBX is a full-featured phone solution with top performance level, high stability and rich functionality. You can install MikoPBX on premise (hardware installation) or in any type of cloud-services (Google cloud, Amazon Cloud Solution, Microsoft Azure etc.)

The system has an easy and convenient web interface, call recording, conference calls, voice mail, call transfers and pickup, call queues, interactive voice response(IVR) menu, inbound and outbound call rules. Also, you can find holidays and night-time calls switcher there. Apart from MikoPBX has custom call-flow programming module and marketplace with paid and free extensions. All general business functionality is absolutely free forever!

Getting Started

  1. Download latest released ISO file in assets section
  2. Create a new virtual machine (e.g. VMware Player)
  3. Select Other Linux 4.x kernel 64-bit on the virtual machine settings
  4. Boot from ISO firmware and install MikoPBX on storage according to internal instructions.
  5. Continue set up your PBX system over a web interface with default credentials. Username: admin password: admin

Or follow our wiki for additional instructions.

Features

  • A very little Linux distributive.
  • Easy to install and easy to setup.
  • Multilingual interface with community-supported translation service.
  • Wiki documentation with context helpers on the web interface.
  • Latest PJSIP stack and Asterisk LTS 16 release installed.
  • Fail2Ban and iptables already included.
  • Modular architecture.
  • Plugins marketplace.
  • The PHP7.4 and phalcon framework
  • The modern codebase was written according to PSR standards and Airbnb JS code style.
  • Friendly community :)

Requirements

Concurrent calls Minimum recommended
5 to 10 1 GHz x86-64, 512 MB RAM
Up to 25 3 GHz x86-64, 1 GB RAM
More than 25 Dual CPUs 3 GHz x86-64, 2 GB RAM or more

How to modify your system

For some easy customisations, you can use a dialplan application point on a menu. The dialplan applications supports PHP-AGI or Asterisk Dialplan language.

Or direct system file customisation on the web interface.

MikoPBX usually loads from read-only offload partition. If you want to change something in the core module, you should remount the partition to write mode with a console (SSH) command remount-offload

If you want to add some new functionality, we strongly advise you look at ModuleTemplate repository.

How to report bugs and issues?

Be free to report about it here

For some ideas or question, you are welcome to our discussion club

The chat with developers you can find on telegram

Interface and documentation translation

We have already translated the web interface on several languages by Google translation service for the next list of languages:

If you find some mistakes, you are welcome to fix it on Weblate translation service.

Support

We offer paid support from MIKO LLC., the company behind MikoPBX.

Or you can ask for community help here or here

Sponsors

Become a sponsor and get your logo on our README on Github with a link to your site. Become a sponsor

License

MikoPBX© - free phone system for small business Copyright © 2017-2021 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/. The software licensed under the GPL-3.0 License.

core's People

Contributors

gao385573958 avatar jorikfon avatar mzhelka avatar scrutinizer-auto-fixer avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

core's Issues

Сборка образов

Добрый вечер. Для того что бы сделать свою модификацию не хватает информации по сборке образов. Возможно ли получить эту информацию?

Настройка сети через php

Добрый день. Я автоматизирую установку MikoPBX на чистый виртуальный сервер. Написал скрипт на php, который запускаю после установки. Скрипт настраивает сеть АТС необходимым образом. В 72 версии все работает, а в 124 уже нет. В чем проблема?

	$network = new Network();
	$system  = new System();

	$data = array();
	$data['subnet'] = 24;
	$data['primarydns'] = '8.8.8.8';
	
	if(isset($options['ipaddr']) || isset($options['i'])) {
		$data['ipaddr'] = isset($options['ipaddr']) ? $options['ipaddr'] : $options['i'];
	}
	
	if(isset($options['gateway']) || isset($options['g'])) {
		$data['gateway'] = isset($options['gateway']) ? $options['gateway'] : $options['g'];
	}	
	
	$network->update_net_settings($data);
	$network->resolvconf_generate();
	$network->lan_configure();
	$system->nginx_start();

Добавить службу для кеширования Redis server и расширение PHP-REDIS

Служба Redis server

https://redislabs.com/get-started-with-redis/

PHP-REDIS
https://github.com/phpredis/phpredis/blob/develop/INSTALL.markdown

И добавить расширение в автозагрузку на подобии Phalcon, а службу в автостарт.
А я провайдеры кеша перепишу на него, в лицензировании уже делал, потому должно быстро получиться.

ErrorException: Notice: Undefined property: MikoPBX\PBXCoreREST\Middleware\AuthenticationMiddleware::$loggerAuth

Sentry Issue: MIKOPBX-YZ

ErrorException: Notice: Undefined property: MikoPBX\PBXCoreREST\Middleware\AuthenticationMiddleware::$loggerAuth
  File "/offload/rootfs/usr/www/src/PBXCoreREST/Middleware/AuthenticationMiddleware.php", line 60, in MikoPBX\PBXCoreREST\Middleware\AuthenticationMiddleware::call
    $this->loggerAuth->warning("From: {$request->getClientAddress(true)} UserAgent:{$request->getUserAgent()} Cause: Wrong password");
  File "/index.php", line 45
    $application->handle($_SERVER['REQUEST_URI']);

Входящие с GOIP-4 не проходят

Добрый день!
Прошу помочь решить проблему входящих звонков, поступающих на GSM шлюз GOIP-4.
Настроил по инструкции: https://wiki.mikopbx.com/faq:goip
Исходящие работают, а входящие нет: на мобильном телефоне просто сбрасывается вызов, а если смотреть через SSH, что происходит при звонке (asterisk -rvvvvv), то при входящем звонке вообще ничего не происходит.
В указанной выше инструкции указано, что в настройках шлюза в разделе Call In в поле CID Forward Mode нужно указать значение Use CID as SIP Caller ID.
Заметил, что если поставить значение Disable или Use Remote Party ID, то входящий проходит, но номер звонящего не определяется.
Заранее благодарю.

динамическое добавление агентов в очередь

Добрый день. На текущий момент не получается создать очередь без добавления статических агентов в веб-интерфейсе.
Будет ли реализован функционал динамического добавления (регистрации) агентов в очереди?
Будет ли реализован механизм приоритетов у агентов в очереди?

Вопрос про исходный код релиза

Добрый день. По вышедшим релизам исходный код не сразу пушите в репозитарий?
Например по этому Release MikoPBX 2019.4.53 еще нет исходного кода.

Скачивание архива системных логов.

Запуск подготовки архива с логами

GET http://172.16.156.223/pbxcore/api/syslog/prepareLog { "jsonapi": { "version": "1.0" }, "result": true, "data": { "filename": "/storage/usbdisk1/mikopbx/tmp/log-sys-1619784856.zip" }, "messages": [], "function": "prepareLog", "processor": "prepareLog", "pid": 18386, "meta": { "timestamp": "2021-04-30T15:14:16+03:00", "hash": "c7318daebdd880bc04cefdd65b41b8853a813aea" } }

Проверка прогресса
curl 'http://172.16.156.223/pbxcore/api/syslog/downloadLogsArchive' \ -X 'POST' \ -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \ -H 'Cookie: PHPSESSID=fb2d7f7d6576061a53ff425c0127ee78' \ -H 'X-Requested-With: XMLHttpRequest' \ --data 'filename=%2Fstorage%2Fusbdisk1%2Fmikopbx%2Ftmp%2Flog-sys-1619784573.zip'
пример ответа, если READY. то будет возвращен URL для загрузки файла в поле filename
{"jsonapi":{"version":"1.0"},"result":true,"data":{"status":"READY","filename":"http:\/\/172.16.156.223:80\/pbxcore\/files\/cache\/tCpQ4PUD1bs4pAtEqQLcIsPOYmH1T70YKcwd\/MikoPBXLogs_log-sys-1619784573.zip"},"messages":[],"function":"downloadLogsArchive","processor":"MikoPBX\\PBXCoreREST\\Lib\\SysLogsManagementProcessor::downloadLogsArchive","pid":18388,"meta":{"timestamp":"2021-04-30T15:10:39+03:00","hash":"5c39238fe4cacaacf41887d9a2af6b65c7a694c2"}}%

Правило набора с символом # в номере

Asterisk не воспринимает # как обычный символ, поэтому шаблон _X! не срабатывает у Вас как универсальный.
А значит созданное правило для исходящего вызова на #2222 не будет отработано корректно.

Оповещение о записи разговора

Было бы отлично, если бы система позволяла уведомлять в начале разговора о записи разговора.
Вижу это так.

В системе есть возможность указать какой-то звуковой файл, который будет воспроизводиться в начале каждого разговора. Есть галочка, которая регулирует, надо ли воспроизводить файл при внутренних звонках.

Воспроизведение начинается только и сразу после начала разговора, т.е. после того, как отвечающая сторона подняла трубку. Воспроизводимый файл должен быть слышен обоим сторонам. В идеале воспроизведение должно идти прям в сам разговор, т.е. по сути разговаривать можно уже на фоне воспроизводимого файла. Воспроизводимый файл должен попадать и в запись разговора.

Транслитерация Caller ID

Многие современные телефоны и софтфоны поддерживают Caller ID состоящие в том числе из кириллических символов. Тестирование показало что пользователи вполне могут видеть имя звонящего на родном языке.
Насколько я понимаю настройки, позволяющей выключить транслитерацию Caller ID сотрудников нет.
В принципе это решается переопределением Caller ID в поле Дополнительные параметры SIP учетки для каждого сотрудника в отдельности таким образом:

[endpoint]
callerid = Пётр Иванов <150>

Но приходиться делать это вручную для каждого аккаунта.
Было бы здорово иметь возможность отключить транслитерацию на уровне системы.

Миграция с других АТС

Планируется ли создать или может есть инструмент миграции, например с FreePBX, Elastix, Issabel? С максимальным сохранением функционала, что был развернут на сервере планируемом для перехода.

Error: Unsupported operand types

Sentry Issue: MIKOPBX-13B

Error: Unsupported operand types
  File "/offload/rootfs/usr/www/src/PBXCoreREST/Http/Response.php", line 122, in MikoPBX\PBXCoreREST\Http\Response::send
    $data = $jsonapi + $content + $meta;
  File "/offload/rootfs/usr/www/src/PBXCoreREST/Middleware/ResponseMiddleware.php", line 51, in MikoPBX\PBXCoreREST\Middleware\ResponseMiddleware::call
    $response->send();
  File "/index.php", line 45
    $application->handle($_SERVER['REQUEST_URI']);

ArgumentCountError: Too few arguments to function MikoPBX\Core\Workers\WorkerModelsEvents::afterModuleStateChanged(),...

Sentry Issue: MIKOPBX-Y5

ArgumentCountError: Too few arguments to function MikoPBX\Core\Workers\WorkerModelsEvents::afterModuleStateChanged(), 0 passed in /offload/rootfs/usr/www/src/Core/Workers/WorkerModelsEvents.php on line 381 and exactly 1 expected
  File "offload/rootfs/usr/www/src/Core/Workers/WorkerModelsEvents.php", line 588, in MikoPBX\Core\Workers\WorkerModelsEvents::afterModuleStateChanged
    public function afterModuleStateChanged(PbxExtensionModules $record): void
  File "offload/rootfs/usr/www/src/Core/Workers/WorkerModelsEvents.php", line 381, in MikoPBX\Core\Workers\WorkerModelsEvents::startReload
    $this->$method_name();
  File "offload/rootfs/usr/www/src/Core/Workers/WorkerModelsEvents.php", line 579, in MikoPBX\Core\Workers\WorkerModelsEvents::timeoutHandler
    $this->startReload();
  File "offload/rootfs/usr/www/src/Core/System/BeanstalkClient.php", line 262, in MikoPBX\Core\System\BeanstalkClient::wait
    call_user_func($this->timeout_handler);
  File "offload/rootfs/usr/www/src/Core/Workers/WorkerModelsEvents.php", line 170, in MikoPBX\Core\Workers\WorkerModelsEvents::start
    $client->wait();
...
(2 additional frame(s) were not displayed)

Error: Call to a member function getRepresent() on null

Sentry Issue: MIKOPBX-PX

Error: Call to a member function getRepresent() on null
  File "/offload/rootfs/usr/www/src/AdminCabinet/Controllers/IvrMenuController.php", line 67, in MikoPBX\AdminCabinet\Controllers\IvrMenuController::modifyAction
    $action->Extensions->getRepresent()
  File "/index.php", line 47
    echo $application->handle($_SERVER['REQUEST_URI'])->getContent();

Генерация голосовых файлов Я.Алисой через демо страницу под капотом

Добрый день! Сейчас в продукте есть две возможности формирования голосовых файлов в интерфейсе, предлагаю добавить третью. Вынести её в отдельную вкладку и дополнить некоторыми описаниями(советами) разметки текста для озвучивания.
Получаемый от Яндекса звуковой файл подтягивать давать на прослушивание во всплывающем на текущей странице html5 плеере и по нажатию кнопки Одобрить помещать во вкладку с основными звуковыми файлами системы.

2 значные внутренние номера

Здравствуйте. Возможно добавить двузначные номера для использования? Для небольших офисов до 5 человек либо миграции с УАТС - достаточно важно.

Добавить в настройки ссылку на звуковой файл с оповещением о записи разговоров

Я думаю в минимальном функционале надо такое реализовать, в некоторых странах незаконно использовать запись разговора без оповещения, а у нас нет такой возможности в принципе.
Я бы в общих настройках добавил возможность указать звуковой файл, если он указан то засунуть его во все диалпланы при соединении.
Вроде не самая большая задача, добавлю ее в список на будущие релизы.

Originally posted by @jorikfon in #60 (reply in thread)

Добавить возможность отключить защиту автоподъема на нескольких устройствах.

Сейчас сломались несколько рабочих сценариев. Работа через встроенный софтфон, работа в режиме терминала во второй панели, из-за принудительной защиты автоподъема. Даже если мы используем специальный уникальный header он не доходит до SIP софтфона при мультирегистрации.

Как можно сделать этот механизм более управляемым? Можем предусмотреть дополнительный параметр в Originate чтобы при указании его, защита выключалась и хидеры уходили на все устройства?

Например AllowMultiAnswer=Y

Модуль графика работы сотрудников

Предлагаю дополнить продукт модулем позволяющим реализовать режим работы сотрудников с чередующимися рабочими днями. Вкупе с переходом на pjsip и курсом на повсеместную удалёнку этот функционал вполне может иметь устойчивый спрос.

ErrorException: Notice: Trying to get property 'id' of non-object

Sentry Issue: MIKOPBX-SP

ErrorException: Notice: Trying to get property 'id' of non-object
  File "/offload/rootfs/usr/www/src/Common/Models/ModelsBase.php", line 546, in MikoPBX\Common\Models\ModelsBase::getWebInterfaceLink
    $link          = $url->get('extensions/modify/' . $needExtension->id, null, null, $baseUri);
  File "/offload/rootfs/usr/www/src/AdminCabinet/Controllers/TopMenuSearchController.php", line 94, in MikoPBX\AdminCabinet\Controllers\TopMenuSearchController::addMenuItem
    $link             = $record->getWebInterfaceLink();
  File "/offload/rootfs/usr/www/src/AdminCabinet/Controllers/TopMenuSearchController.php", line 67, in MikoPBX\AdminCabinet\Controllers\TopMenuSearchController::getForSelectAction
    $this->addMenuItem($categoryItems, $record, $itemClass);
  File "/index.php", line 58
    echo $application->handle($_SERVER['REQUEST_URI'])->getContent();
...
(2 additional frame(s) were not displayed)

ErrorException: Notice: Undefined variable: t

Sentry Issue: MIKOPBX-1F4

ErrorException: Notice: Undefined variable: t
  File "/var/tmp/www_cache/volt/%%offload%%rootfs%%usr%%www%%src%%admincabinet%%views%%errors%%show500.volt.php", line 6, in unknown
    <?= $t->_('er_InternalServerError') ?>
  File "/index.php", line 55
    echo $application->handle($_SERVER['REQUEST_URI'])->getContent();
...
(2 additional frame(s) were not displayed)

Не корректное легирование истории звонков.

имеем настроенное правило исходящего звонка
изображение
звонок проходит и до конечного абонента мы дозваниваемся, но в журналах звонков отображается только то, что мы просили добавить в правиле, без остальных цифр номера.
изображение

verbose.zip

Originally posted by @YanchikAmb in #66

Раздел Нерабочее время дополнить производственным календарём

Добрый день!
Предлагаю реализовать свой производственный календарь (или использовать любой из имеющихся сторонних по его API) для определения рабочий ли день и более гибкого формирования правил маршрутизации звонков на IVR компании.
Этим вы избавите от ненужной возьни с кастомизацией под государственные праздники с переносами рабочих дней.

ErrorException: Notice: Undefined index: recordingfile

Sentry Issue: MIKOPBX-1H5

ErrorException: Notice: Undefined index: recordingfile
  File "/offload/rootfs/usr/www/src/Core/Workers/Libs/WorkerCallEvents/ActionTransferDialCreateChan.php", line 73, in MikoPBX\Core\Workers\Libs\WorkerCallEvents\ActionTransferDialCreateChan::execute
    $row->writeAttribute('recordingfile', $data['recordingfile']);
  File "/offload/rootfs/usr/www/src/Core/Workers/WorkerCallEvents.php", line 148, in MikoPBX\Core\Workers\WorkerCallEvents::callEventsWorker
    $className::execute($this, $data);
  File "/offload/rootfs/usr/www/src/Core/System/BeanstalkClient.php", line 286, in MikoPBX\Core\System\BeanstalkClient::wait
    call_user_func($func, $this);
  File "/offload/rootfs/usr/www/src/Core/Workers/WorkerCallEvents.php", line 130, in MikoPBX\Core\Workers\WorkerCallEvents::start
    $client->wait();
  File "/offload/rootfs/usr/www/src/Core/Workers/WorkerBase.php", line 181, in MikoPBX\Core\Workers\WorkerBase::startWorker
    $worker->start($argv);
...
(2 additional frame(s) were not displayed)

Постоянно перезапускается rsyslog

Логи забиты строчками
May 26 20:35:59 user.notice rsyslogd: rsyslogd ended with exit status 1
May 26 20:35:59 user.notice rsyslogd: rsyslogd died with code 1.
May 26 20:35:59 user.notice rsyslogd: Automatically restarting rsyslogd.

Повторяется и на рабочей и на тестовых

7 значные внутренние номера

Здравствуйте. Добавьте пожалуйста если не сложно семизначные номера. У нас городские семизначные , использую внутренние по такому же стандарту. Пока в базе ручками подправил ,но сохранять системные настройки через интерфейс при таком фиксе нельзя.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.