Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Пример использования REST API для генерации сотрудников
В релизе 2023.2 реализовано API для быстрого создания большого количества сотрудников, в процессе тестирования мы описали алгоритм генерации нового сотрудников в ChatGPT и провели нагрузочное тестирование по созданию 700 произвольных учетных записей на разных языках. На загрузку ушло около 1 минуты, тест прошел успешно.
Для выполнения этой задачи был написан запрос к ChatGPT следущего содержания.
В результате был сгенерирован Python скрипт, который позволил выполнить этот тест.
Для запуска подобного скрипта, сохраним его в папке /tmp внутри MikoPBX. Т.к. скрипт имеет несколько зависимостей, добавим их через установщик пакетов pip3 и запустим скрипт для генерации.
В результате работы скрипта мы увидим вывод в консоль списка создаваемых сотрудников, а в веб интерфейсе появятся новые учетные записи.
Важно отметить, т.к. система read-only, то установку Python библиотек необходимо выполнять посое каждой перезагрузки, а папка /tmp будет очищена. Разработку и доработку скрипта необходимо вести во внешней системе.
При выполнении REST API запросов из внешних адресов, необоходимо выполнить авторизацию административным логином и паролем или создать пользователя с правами на указанные действия в модуле управления правами сотрудников и авторизовываться им.
При выполнении запросов, как в этом примере, с адреса 127.0.0.1 авторизация не требуется.
Совершенствование качества сервиса организации - крайне важная составляющая успешной работы компании. Механизм оценки работы оператора будет полезен любому бизнесу.
В текущей статье предлагаем пример реализации механизма оценки качества клиентом для АТС MikoPBX.
На АТС предварительно следует закачать файлы записей вопросов / приветствия. Формат записей WAV (Microsoft) signed 16-bit PCM. Файлы можно для удобства разместить в каталоге: /storage/usbdisk1/quality/sounds. В dialplan путь к файлу следует указывать без расширения.
Для начала дополним логику обработки входящих звонков:
1. Перейдите в раздел Маршрутизация → Провайдеры телефонии. Откройте для редактирования учетную запись провайдера для редактирования. Скопируйте в адресной строке ID провайдера, через которого абоненты звонят Вам в компанию. Обращаем Ваше внимание, что в нашем примере используется единственный провайдер Zadarma. Если у Вас настроено подключение нескольких провайдеров, то ниже описанные действия необходимо выполнить для каждого провайдера.
В нашем примере ID провайдера принимает вид: SIP-1687947415
Перейдите в раздел Система → Кастомизация системных файлов.
Откройте для редактирования конфигурационный файл extensions.conf.
Установите режим «Добавлять в конец файла».
В черное окно добавьте следующий фрагмент кода:
В выше приведенном фрагменте кода Вам необходимо составить правильное наименование контекста. Формат создаваемого контекста:
ID-ПРОВАЙДЕРА - значение, которое вы сохранили на первом шаге данной инструкции. В нашем примере это SIP-PROVIDER-1687947415.
Пример реализации quality_agi.php:
Результат оценки будет сохранятся в файлы вида /storage/usbdisk1/quality/<ID>.log
Пример файла:
Добавьте новое приложение dialplan (см. )
Назначьте внутренний номер, к примеру 2200110
Вставьте следующий код во вкладку "Программный код"
В коде приложения укажите свой email вместо адреса «[email protected]».
Перейдите в раздел "Кастомизация системных файлов"
Откройте для редактирования файл "extensions.conf"
Добавьте следующий код в конец файла:
«2200100» замените на номер своего приложения
В коде, «SIP-1687941868» замените на ID своего провайдера. Подсмотреть его значение можно в карточке провайдера, в адресной строке браузера
Откройте для редактирования файл "modules.conf"
Вставьте в конец файла код:
В карточке провайдера, в расширенных настройках, в дополнительных параметрах укажите
В настройках есть возможность настроить маршрутизацию. Если сотрудник не доступен, то вызов можно направить на его мобильный номер телефона. Не для всех случаев эта функция необходима. К примеру часто для внутренних звонков клиенты просят ее отключить.
Перейдите в раздел «Система» -> «Кастомизация системных файлов»
Выберите для редактирования файл «/etc/asterisk/extensions.conf»
Выберите режим «Добавлять в конец файла»
Добавьте во второе поле текст
Сохраните изменения
Подключите провайдеров, зарегистрированных на одном хосте, как описано в .
Перейдите в раздел Система → Кастомизация системных файлов.
Откройте для редактирования конфигурационный файл extensions.conf.
Установите режим «Добавлять в конец файла». В черное окно добавьте следующий фрагмент кода:
Вместо номеров X9522140000 и X9629771111 укажите номера телефонов клиентов, в том виде, как они отображаются в истории звонков.
Функция может быть полезна, если вместо фоновой музыки есть необходимость воспроизводить рекламный аудиофайл. Для каждой очереди можно назначить свой файл.
Перейдите в раздел «Телефония» - «Звуковые файлы» - «Музыка на удержании»
Добавьте медиафайлы:
Перейдите в раздел «Система» - «Кастомизация системных файлов»
Откройте для редактирования файл «/etc/asterisk/extensions.conf»
Вставьте в конец файла следующий код:
Согласно этому примеру для очереди с номером «2001» будет воспроизводится в фоне файл с идентификатором 5, для очереди «2002» файл с идентификатором 6
Инструкция по подключению учетной записи провайдера доступна по .
Многие операторы связи не могут предложить несколько SIP-номеров в одном транке (в качестве одной учетной записи провайдера) и выдают для каждого номера свои регистрационные данные. Например, используя провайдера Zadarma, для подключения номера телефона +7(495)-229-30-42 следует использовать логин 847706, пароль XXXXXX, а при подключении номера телефона +7 (499) 638-25-84 следует использовать логин 847900, пароль YYYYYY. При этом хост будет для двух учетных записей одинаковым: sip.zadarma.com. Задача: необходимо для каждого номера задать определенную входящую маршрутизацию, например при звонке на номер +7(495)-229-30-42 вызов должен направляться на отдел продаж (очередь вызовов), а при звонке на номер +7 (499) 638-25-84 вызов должен направляться на IVR-меню. Потенциальная проблема: проблема заключается в том, что все входящие звонки пойдут через первого провайдера Zadarma, который определен в учетных записях MikoPBX. Вызовы через второго провайдера MikoPBX никогда не пройдут.
В разделе Маршрутизация → Провайдеры телефонии создайте две учетные записи провайдера от одного поставщика услуг связи. В нашем примере это Zadarma. Укажите верный логин, пароль и хост.
В дополнительных параметрах укажите:
В разделе Маршрутизация → Входящие маршруты задайте правило входящих звонков для каждого провайдера. В поле Дополнительный номер вставьте логин от учетной записи провайдера. В поле Провайдер выберите Любой.
Имеем две учетные записи от провайдера Zadarma, настроенных в MikoPBX по .
Необходимо для каждого номера Zadarma настроить свое нерабочее время. Например, для номера +7(495)-229-30-42 рабочее время с 9.00 до 18.00 по МСК; для номера +7 (499) 638-25-84 рабочее время с 8.00 до 20.00 по МСК.
Перейдите в раздел Система → Кастомизация системных файлов.
Откройте для редактирования конфигурационный файл extensions.conf. Установите режим «Добавлять в конец файла». В черное окно добавьте следующий фрагмент кода:
В выше приведенном фрагменте кода Вам необходимо указать логины от Ваших учетных записей провайдеров. В нашем примере использовались следующие данные:
584611 - логин от учетной записи провайдера для номера телефона +7(495)-229-30-42.
Рабочее время с 9.00 до 18.00. Следовательно необходимо задать два интервала для нерабочего времени: 00:00-09:00 и 18:00-23:59.
420296 - логин от учетной записи провайдера для номера телефона +7 (499) 638-25-84.
Рабочее время с 8.00 до 20.00. Следовательно необходимо задать два интервала для нерабочего времени: 00:00-08:00 и 20:00-23:59.
Ниже красным цветом выделены фрагменты, которые Вам необходимо изменить:
Более подробно разберём команду ExecIfTime. Эта команда выполняет указанное приложение Asterisk, если текущее время соответствует заданной спецификации времени. В нашем случае команда выполняет проигрывание звукового файла, расположенного в директории /offload/asterisk/sounds/other/out_work_times в MikoPBX. Синтаксис команды:
times - Диапазоны времени в 24-часовом формате
weekdays - Дни недели (mon, tue, wed, thu, fri, sat, sun)
mdays - Дни месяца (1-31)
months - Месяцы (jan, feb, mar, apr и т. д.)
appname[(appargs)] - команда Asterisk с указанием параметров вызова
В нашем примере указаны диапазон времени, диапазон дней недели. Вместо указания дней месяцев и месяцев введены *. Этот символ означает «для всех остальных случаев».
Такой функционал удобен для мобильных сотрудников. Когда важно, чтобы разговор был записан и зафиксирован на АТС в истории звонков. Когда нет возможности использовать софтфон / или «IP-SIM».
Добавьте новое приложение dialplan (см. )
Назначьте внутренний номер, к примеру 2200109
Вставьте код во вкладку "Программный код":
В адресной строке браузера скопируйте ID приложения. Он будет иметь вид «DIALPLAN-APP-6A9902C631C5E7B5AC8F501C559FD678»
Перейдите в раздел "Кастомизация системных файлов"
Откройте для редактирования файл "extensions.conf"
Вставьте в конец файла следующий код:
тут «DIALPLAN-APP-6A9902C631C5E7B5AC8F501C559FD678» - это ID приложения.
Приложение будет выполнено для всех входящих вызовов
Ввести добавочный будет возможно лишь в том случае, если номер телефона звонящего заполнен в карточке сотрудника, то есть номер должен принадлежать сотруднику. Это сделано для безопасности
Скрипт не является завершенным продуктом, но открыт для кастомизации
После сохранения медиа файла скопируйте его идентификатор из адресной строки браузера. К примеру в ссылке вида «» идентификатором является число 5.
Инструкции по настройке входящей маршрутизации доступны по .
Периодически возникает необходимость добавлять и удалять сотрудников из очереди. До сих пор это было возможно сделать только через web интерфейс телефонной станции.
В текущей статье я расскажу как реализовать возможность подключиться и отключиться из очереди средствами набора служебного внутреннего номера.
Создайте новую очередь с четырехзначным внутренним номером. К примеру 2001. (см. документацию «Очереди вызовов»)
Опишите новое «Приложение диалпланов»
Назначьте «Номер для вызова приложения» - 999XXXXX первые три цифры можете переопределить своей комбинацией
Тип кода - «PHP AGI скрипт»
На вкладке «Программный код» вставьте следующее содержимое:
Нажмите "Сохранить"
Приложение готово!
Наберите комбинацию 99912001 чтобы присоединиться к очереди 2001
Наберите комбинацию 99902001 чтобы отключиться от очереди 2001
Для случая, когда сотрудник отошел и не может ответить на вызов бывает удобно поставить агента на паузу. К примеру сотрудник набирает специальный добавочный номер *46 и уходит по на обед.
Новые вызовы сотруднику перестанут поступать.
Когда сотрудник возвращается, снова набирает номер *46 и отключает паузу. В современных телефонах все можно свести к нажатию одной кнопки.
Перейдите в раздел "Модули" -> "Приложения диалпланов"
Создайте новый диалплан.
Укажите название, а так же номер диалпана (в нашем случае - 2200105). В качестве типа кода укажите "Диалплан Asterisk"
Перейдите во вкладку "Программный код". Вставьте следующий код в черную область:
Перейдите в раздел «Кастомизация системных файлов»
Откройте для редактирования файл «/etc/asterisk/extensions.conf»
Вставьте в конец файла следующий код:
Перейдите к редактированию учетной записи сотрудника.
В поле «Дополнительные параметры», добавьте:
Будет работать последняя регистрация. Софтфон / телефон, который зарегистрировался последним и будет принимать вызовы. Исходящие сможет совершать каждое конечное устройство.
Пейджинг через телефоны, т.е. передача голосового сообщения через насколько телефонов через громкую связь. К примеру руководитель может быстро созвать совещание.
Данная инструкция подойдет для телефонов:
Linksys
Cisco
Telephone (софтфон)
Grandstream
microsip (софтфон)
Yealink
Fanvil
Snom
Перейдите в раздел "Кастомизация системных файлов"
Откройте для редактирования файл "/var/spool/cron/crontabs/root"
Добавьте в конец файла следующий код:
Перейдите к редактированию файла "modules.conf"
Добавьте следующий код в конец файла:
Перейдите к редактированию файла "extensions.conf"
Добавьте следующий код в конец файла "extensions.conf"
Перейдите в раздел "Приложения диалпланов", создайте новый диалплан
Назначьте внутренний номер, к примеру 2200110. Установите тип кода: ''Диалплан Asterisk''
Перейдите во вкладку "Программный код", вставьте следующий код:
В коде приложения опишите контакты, кому следует звонить. Контакты перечисляются с разделителем &.
Перейдите в раздел «Модули» - «Приложения диалпланов». Создайте новый диалплан.
Укажите название «Подслушивание». Укажите «номер для вызова приложения», тут будем использовать шаблон «911XXX» - XXX означает все трехзначные числовые номера. В поле «тип кода» укажите «Диалплан Asterisk»
Дальнейший функционал вы можете выбрать из трех вариантов:
Появляется возможность подслушать чужой разговор, так что ни оператор, ни клиент ничего не заподозрят
Во вкладке ''Программный код'' вставьте следующий код:
ChanSpy(SIP/${EXTEN:3},qw) - обратите внимание, в качестве EXTEN будет передан номер приложения. Если вы набираете 911101, то будет набран внутренний номер 101. Отсекаются первые три цифры.
Если вы измените длину шаблона, то следует скорректировать эту строку.
При использовании PJSIP команда будет иметь вид ChanSpy(PJSIP/${EXTEN:3},qw)
Во вкладке ''Программный код'' вставьте следующий код:
Отличия только в параметрах для ChanSpy
Во вкладке ''Программный код'' вставьте следующий код:
Отличия только в параметрах для ChanSpy
В ряде случаев сотруднику не положено видеть настоящий номер телефона клиента. Рассмотрим возможный подход в решении этой задачи. Сотруднику будет передаваться подменный номер, на который он сможет перезвонить.
Перейдите в раздел Система → Кастомизация системных файлов
Откройте для редактирования конфигурационный файл modules.conf. Установите режим «Добавлять в конец файла»
Подключим модуль для вычисления хэш суммы:
Откройте для редактирования конфигурационный файл extensions.conf. Установите режим «Добавлять в конец файла»
Опишем контекст для подмены номера
Опишем контекст с номерами, для которых нужно подменять номер
Предусмотрим возможность перезвонить на подменный номер
OPNsense — это операционная система на базе FreeBSD, предназначенная для создания межсетевых экранов (firewall) и маршрутизаторов. Она предоставляет мощные инструменты для управления сетью, включая VPN, фильтрацию трафика, мониторинг и балансировку нагрузки.
OPNSense в своем составе имеет центр сертификации и может выпускать SSL сертификаты для web-интерфейса MIKOPBX.
Для начала необходимо убедится, что центр сертификации OPNSense настроен и корневой сертификат установлен на рабочий ПК пользователя.
1. Сгенерируйте сертификат. Перейдите в ваш OPNSense сервер, откройте менеджер сертификатов:
Выпустите внутренний сертификат с понятным для вас названием, тип сертификата - сервер, укажите эмитентом ваш внутренний цент сертификации, так же укажите срок действия сертификата в днях.
Далее укажите DNS, настроенный на MIKOPBX.
Сохраните сертификат в OPNSense.
Сохраните публичный ключ и приватный ключ сертификата на компьютер.
Найдите в списке сертификатов, ваш сертификат PBX, нажмите скачать.
В списке скачайте публичный ключ (1) и приватный ключ (2).
Перейдите в раздел Общие настройки -> WEB-интерфейс.
Откройте ранее скачанные файлы в блокноте. Вставьте содержимое файлов в Web-интерфейс.
Публичный ключ HTTPs содержимое с - BEGIN CERTIFICATE
Приватный ключ HTTPs содержимое с - BEGIN PRIVATE KEY
Сохраните.
Откройте Web-интерфейс MIKOPBX в анонимное режиме браузера используя SSL соединение HTTPS. Ваше подключение защищено.
PT1C_cdr это таблица с историей звонков от панели телефонии версии 1 в FreePBX.
Перейдем в рабочий каталог FreePBX
Скачаем скрипт конвертации таблицы MySQL в Sqlite3. Скачать, если его нет.
Запускаем скрипт конвертации:
Архив со скриптами доступен по
Файл master.db, полученный на предыдущем этапе необходимо перенести на MIKOPBX в каталог «/storage/usbdisk1/mikopbx/freepbx-dmp»
Перейти в рабочий каталог MIKOPBX:
Подготовка списка файлов к загрузке в качестве даты следует указать свою «2020-02-07»:
Загрузка записей разговоров и конвертация в MP3
Выполним резервное копирование базы данных истории звонков:
Скопируем базу данных истории звонков в текущий каталог:
Конвертация истории звонков в формат MIKOPBX. История в cdr.db будет ОЧИЩЕНА.
Очистка пустых полей recordingfile в базе данных
До «2020-02-07» нет записей разговоров. Очистим поле recordingfile
Переместив файл базы данных.
Готово! Можно проверять историю звонков в web интерфейсе.