среда, 12 февраля 2025 г.

Как правильно выбрать SIP оператора?

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

1. Качество связи и надежность

  • Проверьте отзывы о стабильности соединения.
  • Уточните наличие резервных каналов и отказоустойчивости.
  • Оцените уровень задержек (ping), потерь пакетов и джиттера.

2. Тарифы и скрытые платежи

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

3. География номеров и DID

  • Проверьте, можно ли получить номера в нужных вам регионах.
  • Узнайте о возможностях портирования существующих номеров.

4. Совместимость с оборудованием и ПО

  • Убедитесь, что оператор поддерживает ваш VoIP-шлюз, IP-АТС или софтфон.
  • Проверьте, поддерживаются ли протоколы SIP, RTP, TLS и SRTP.

5. Функциональность и дополнительные услуги

  • Автоматическая маршрутизация вызовов, IVR, запись разговоров.
  • Интеграция с CRM, API для автоматизации звонков.
  • Наличие мобильного приложения или веб-интерфейса.

6. Поддержка и SLA

  • Круглосуточная техподдержка (желательно 24/7).
  • Гарантии доступности связи (например, 99.99%).
  • Быстрота реагирования на проблемы.

7. Безопасность и защита данных

  • Шифрование звонков (TLS/SRTP).
  • Антифрод-защита от несанкционированных вызовов.
  • Логирование и мониторинг звонков.

8. Тестирование перед покупкой

  • Большинство операторов предлагают бесплатный тестовый период.
  • Проверьте качество связи, задержки, удобство настройки.

Если SIP-оператор соответствует вашим требованиям по этим параметрам, можно смело подключаться. У вас уже есть конкретные варианты на примете?

Как в asterisk настроить доступ по API

 Чтобы настроить доступ к API в Asterisk, нужно включить ARI (Asterisk REST Interface) или AMI (Asterisk Manager Interface) в конфигурации.


1. ARI (Asterisk REST Interface)

ARI позволяет управлять вызовами и работать с каналами через HTTP и WebSocket.

Шаги настройки ARI

  1. Включите ARI в конфигурации

    • Откройте файл конфигурации ari.conf:
      nano /etc/asterisk/ari.conf
    • Добавьте или измените параметры:
      [general] enabled = yes pretty = yes bindaddr = 0.0.0.0 ; Разрешить соединения на всех интерфейсах bindport = 8088 ; Порт для API [api_user] type = user password = mypassword read_only = no
  2. Перезапустите Asterisk

    systemctl restart asterisk
  3. Проверьте API

    • Выполните запрос к API через curl:
      curl -u api_user:mypassword http://localhost:8088/ari/applications
    • Должен вернуться JSON-ответ.

2. AMI (Asterisk Manager Interface)

AMI позволяет управлять Asterisk через Telnet или TCP.

Шаги настройки AMI

  1. Настройте manager.conf

    • Откройте файл manager.conf:
      nano /etc/asterisk/manager.conf
    • Добавьте пользователя:
      [general] enabled = yes port = 5038 bindaddr = 0.0.0.0 ; Принимать соединения на всех интерфейсах [myuser] secret = mypassword read = all write = all
  2. Перезапустите Asterisk

    systemctl restart asterisk
  3. Подключитесь к AMI

    • Через Telnet:
      telnet localhost 5038
    • Введите данные:
      Action: Login Username: myuser Secret: mypassword

Дополнительные настройки

  • Если у вас стоит Firewall, откройте нужные порты:

    ufw allow 8088/tcp # Для ARI ufw allow 5038/tcp # Для AMI
  • Логирование ошибок можно включить в logger.conf:

    [general] dateformat = %F %T console => notice,warning,error,debug

Если вам нужно что-то конкретное (например, интеграция с Python или Node.js), дайте знать! 

среда, 9 февраля 2022 г.

Защита WEB интерфейса FreePBX с помощью Apache HTTP Authentication and Authorization

Описание сервера
OS: CentOS 8
# cat /etc/os-release
NAME="CentOS Stream"
VERSION="8"

Asterisk 16+FreePBX 15

Server version: Apache/2.4.37 (centos)
Server built:   Nov 12 2021 04:57:27

Предварительно нужно создать файл с паролями:

htpasswd -c /etc/httpd/.htpasswd admin

*admin это имя пользователя, укажите любое

*параметр -с создает новый файл, чтобы добавить еще пользователя выполните команду без этого параметра.

Далее редактируем файл /etc/httpd/conf/httpd.conf 

Добавляем 

 AuthType Basic
 AuthName "Restricted Content"
 AuthUserFile /etc/httpd/.htpasswd
 Require valid-user

В две директории:
!Важно закомментировать # Require all granted иначе авторизация не заработает

<Directory "/var/www">
<Directory "/var/www/html">


!Важно

/var/www/html/admin/.htaccess меняем  параметр Require all granted на Require valid-user

# Apache 2.4
<IfModule mod_authz_core.c>
        # Disallow all . files, such as .htaccess or .git
        <FilesMatch "\..*$">
                Require all denied
        </FilesMatch>
        # Allow index, config, and ajax.php, as well as all our image types.
        <FilesMatch "(^$|index\.html|index\.php|config\.php|ajax\.php|\.(map|gif|GIF|jpg|jpeg|png|css|js|swf|txt|ico|ttf|svg|eot|woff|woff2|wav|mp3|aac|ogg|webm|gz)$)">
                Require valid-user
                #Require all granted
        </FilesMatch>
</IfModule>

После редактирования перезапускаем httpd сервер

systemctl restart httpd


Долго загружается dashboard и после выдает ошибку FreePBX 15 на CentOS 8

После установки Asterisk 16 и  FreePBX на чистую систему CentOS из консоли, при входе в веб интерфейс, dashboard долго думает и потом выдает сообщение об ошибке

Gateway Timeout
The gateway did not receive a timely response from the upstream server or application.

Gateway Timeout The gateway did not receive a timely response from the upstream server or application.

В System Overview будет сообщение
There was an error asking for Overview. Check the error logs for more information

Эта проблема связанна с тем что в скрипте (/var/www/html/admin/modules/dashboard/sections/Overview.class.php) модуля есть функции mailq которые используют консольную системную утилиту mailq для получения сведений об очереди e-mail сообщений.

Из консоли выполните команду 
# mailq -v
WARNING: local host name (HOSTNAME) is not qualified; see cf/README: WHO AM I?
/var/spool/mqueue is empty

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

Пример
hostname.local
asterisk.local
ast.ru
astersik.org
asterisk.ru

Переименовать можно следующими командами 

hostnamectl set-hostname asterisk.local

Измените так же имя в файле /etc/hostname чтобы после перезагрузки оно сохранилось.

Очистка переполненной памяти на сервере Asterisk без перезагрузки

 При интенсивной нагрузке на сервис Asterisk он может постепенно занимать (отжирать) всю физическую память на сервере.

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

Команды для очистки памяти сервера без перезагрузки сервисов.

echo 1 > /proc/sys/vm/compact_memory
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches


Пример для cron

*/10 * * * *  echo 1 > /proc/sys/vm/compact_memory
30 */3 * * *  sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

четверг, 22 марта 2018 г.

FreePBX 14: Исправление кириллической кодировки в CDR Reports отчетах - кракозябры



Нормальное отображение русских имен в CallerID на SIP телефонах, в таблице asteriskcdrdb в базе MySQL и в модуле CDR web-интерфейса FreePBX 14
Применялось на - Asterisk Version: 13.18.4 - FreePBX 14.0.1.36
Устанавливалось с ISO:
Исправление:
нужно установить Mariadb-connector-odbc-3.0.x
Делается это из командной строки Linux:
 yum install mariadb-connector-odbc 

Так же нужно удалить старый коннектор MySQL, чтобы в лог и CLI Asterisk не сыпалось куча ошибок об невозможности записать данные в таблицу Cel.

Команды:

 rpm -qa | grep mysql-connector-odbc 
#mysql-connector-odbc-5.2.5-6.el7.x86_64

 rpm -e –nodeps [Имя пакета]

#Пример
#rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64


Перезапустим FreePBX сервисы:


 fwconsole restart 



четверг, 15 июня 2017 г.

Удаление старых записей в asterisk, удаление старых файлов в linux

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

Краткая инстуркция

Примеры:

Команда в консоли для удаления файлов старше 180 дней:
 find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \; 

Автоматическое удаление с помощью cron (планировщик задач в Linux):

Просмотр записей в cron:
crontab -l

Редактирование заданий от текущего пользователя (открывается в редакторе vi):
crontab -e

Нужно добавить эту запись и сохранить, смотрите как пользоваться редактором vi здесь.
12 2 * * * root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
Ежедневно в 2:12 ночи будет запускаться команда от пользователя root.

Формат cron:
* * * * *
| | | | |
| | | | +----- Дни недели (диапазон: 1-7)
| | | +------- Месяцы     (диапазон: 1-12)
| | +--------- Дни месяца (диапазон: 1-31)
| +----------- Часы       (диапазон: 0-23)
+------------- Минуты     (диапазон: 0-59)

Подробнее про формат cron здесь

Подробная инструкция

Удаление старых записей в Asterisk и устаревших файлов в Linux

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


Ручное удаление старых записей в Asterisk

Чтобы удалить файлы записей звонков, хранящиеся в каталоге /var/spool/asterisk/monitor, можно использовать команду find, которая позволяет находить файлы по их дате создания.

Пример:

find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
  • /var/spool/asterisk/monitor — путь к папке, где хранятся записи разговоров.
  • -mtime +180 — указывает, что удаляться будут файлы, старше 180 дней.
  • -exec rm -R {} \; — команда, которая удаляет найденные файлы.

Чтобы выполнить удаление с подтверждением каждого файла, можно использовать:

find /var/spool/asterisk/monitor -mtime +180 -ok rm -R {} \;

Для проверки, какие файлы будут удалены, используйте find без удаления:

find /var/spool/asterisk/monitor -mtime +180 -ls

Автоматическое удаление файлов через cron

Чтобы настроить автоматическое удаление старых записей, можно воспользоваться планировщиком задач cron, который позволяет выполнять команды по расписанию.

Просмотр текущих заданий cron

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

crontab -l

Редактирование cron-заданий

Для редактирования списка задач используйте команду:

crontab -e

По умолчанию, файл откроется в редакторе vi или nano (в зависимости от настроек системы).

Добавление задания на автоматическое удаление файлов

Добавьте следующую строку в crontab, чтобы ежедневно в 2:12 ночи удалялись записи старше 180 дней:

12 2 * * * root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;

Расшифровка cron-формата

* * * * *
| | | | |
| | | | +----- День недели (0 - вс, 1 - пн, ..., 6 - сб)
| | | +------- Месяц (1-12)
| | +--------- День месяца (1-31)
| +----------- Часы (0-23)
+------------- Минуты (0-59)

Пример записи:

  • 12 2 * * * — выполнение в 02:12 каждую ночь.
  • root — выполнение от имени суперпользователя.
  • find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \; — команда поиска и удаления файлов.

Дополнительные примеры cron-записей

  • Удаление файлов раз в неделю по воскресеньям в 3:00 ночи:
    0 3 * * 0 root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
    
  • Удаление файлов каждый день в полночь:
    0 0 * * * root find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \;
    

Дополнительные настройки безопасности

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

    find /var/spool/asterisk/monitor -mtime +180 -exec rm -R {} \; -print >> /var/log/asterisk_cleanup.log
    
  2. Использование tmpwatch для автоматической очистки: В некоторых дистрибутивах Linux можно использовать tmpwatch для автоматического удаления файлов старше определенного времени:

    tmpwatch --mtime --nodirs 180 /var/spool/asterisk/monitor
    

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


Автоматическая очистка старых записей Asterisk — важный процесс для поддержания стабильности системы. Использование команд find и cron позволяет автоматизировать удаление, снижая нагрузку на сервер и освобождая дисковое пространство. Для дополнительного контроля можно настроить логирование или использовать альтернативные утилиты, такие как tmpwatch. Регулярный мониторинг и настройка правильных параметров гарантируют бесперебойную работу Asterisk без риска переполнения диска.