15.07.2019

zoiper IOS ANDROID PUSH notification

чтобы получить push уведомления, необходимо на своем телефоне при установке Zoiper

1. разрешить использовать сервис push уведомлений

2. разрешить на своём SIP сервере подсети
IP – 185.117.83.192/27 , port 443

У zoiper Это стоит 75 рублей в месяц., других способов отправить push уведомление на чужое приложение я не вижу.

Статья zoiper.

6.07.2019

Приложение supervisor для контроля выполнения скриптов.

Работа AMI скриптов может быть не стабильна, особенно когда вы не обладаете большим опытом. Подсмотрел хорошее приложение supervisor, которое устанавливается из репозиториев и включается за пять секунд. Опять же ваш скрипт будет запускаться автоматически. А управление выглядит очень удобным:

Бонусы это автозапуск, логи в определенные папки.

старт: supervisorctl start pami.php
стоп: supervisorctl stop pami-hangup.php

Логи лежат в /var/log/pami

[program:pami]
user = root
command = php pami.php 127.0.0.1 5038 testuser passwd 10000 10000
directory = /var/lib/asterisk/agi-bin
numprocs = 1
autorestart = true
autostart = true
stdout_logfile = /var/log/pami/pami.log
stderr_logfile = /var/log/pami/pami_errors.log
stopwaitsecs = 60
startsecs=5
startretries=10000000

ну, прекрасно же. Примеры и статья

3.07.2019

Asterisk as Wholesale. PAMI instead of AGI. Stable AMI connection.

Во время выполнения диалплана необходимо уточнять маршруты для звонка и делать то нужно из базы Mysql. Классический вариант использовать AGI Либо FastAGI, Но здесь я рассмотрю вариант запуска в фоне скрипта который, получая информацию о звонке, будет устанавливать переменную обратно в диалплан.

Asterisk адаптированный для wholesale, кстати, достаточно быстро всё обрабатывает используя минимум модулей и запросы в базу через ODBC. на удивление. Но всё равно с Opensips И Kamailio не сравнится.

Используем: PAMI library при установке пришлось повозиться т.к. не очень знаком с composer, но почитав про него – всё получилось. библиотеки ставятся в текущую директорию agi-bin, тогда будет доступ.

Основная проблема это поддержка коннекта между скриптом и астером, а также отсутствие ошибок между ними. Если вы запустите по умолчанию скрипты с ами, то вы наверняка получите внезапное завершение программы при анализе event от астериска. Есть несколько факторов, которые влияют на стабильность соединения:

  1. read timeout\read error – возникает на стороне скрипта, нужно обрабатывать такие события, в скрипте для этого будет try { } catch {}.
  2. Снизить поток событий из Астериска. В manager.conf Использовать eventfilter=Event: Newchannel тогда пользователю будет прилетать только определенный события.
  3. Не подключаться каждый раз при чтении и записи. В рамках библиотеки PAMI пришлось разбираться с классами в php.
  4. Астериск должен подождать в диалплане пока AMI скрипт установит переменную в канал, вот тут я не нашел ничего лучше чем просто подвесить его на 1500 циклов присвоения переменной – это ужасно я знаю.

Пример pami.php

Пример extensions.conf

Пример manager.conf

1.07.2019

Autostart python script

Замечательная статьяо том как запускать python скрипты, стандартными командами sytsemctl.