сервера со скидками и промокадами.
digitalocean.com: Если вам нужно, проверить что-то в течении 60 дней, то можно воспользоваться ссылкой на digital-ocean. дают 100$ на тестирование их услуг.
firstvds.ru: скидка 25% на первый месяц по ссылке либо используйте промокод: 648139326
9.01.2020run cron every N seconds
Для современных систем есть systemd который прекрасно решает эту задачу оригинальная статься здесь
Цитата:
Here is a simple example that logs "Hello World" every 10 seconds:29.11.2019/etc/systemd/system/helloworld.service
:[Unit]
Description=Say Hello
[Service]
ExecStart=/usr/bin/logger -i Hello World
/etc/systemd/system/helloworld.timer
:[Unit]
Description=Say Hello every 10 seconds
[Timer]
OnBootSec=10
OnUnitActiveSec=10
AccuracySec=1ms
[Install]
WantedBy=timers.target
After setting up these units (in/etc/systemd/system
, as described above, for a system-wide setting, or at~/.config/systemd/user
for a user-specific setup), you need to enable the timer (not the service though) by runningsystemctl enable helloworld.timer
. If you want to start the timer immediately (instead of waiting for it to start after a reboot), also runsystemctl start helloworld.timer
.
AMI FREEPBX NAMI SYSLOG NODEJS
В этом проекте нам нужно сохранять различные события в очередях Астериска через nodejs библиотеку NAMI. Сложности тут на первый взгляд только одна, это создания таблиц для сохранения событий. На самом деле нет, есть еще задача сохранения неудачного запроса, есть задача выполнения асинхронного запроса, чтобы не скрипт не тормозил.
В проект включены файлы:
tables.sql – который создает базу данных asterisk_logs и несколько табличек в ней,
table-ami-events.ods – excel файл с описанием событий по столбцам.
- создаем БД и таблички tables.sql,
- устанавливаем “npm install nami mysql modern-syslog”
- добавляем пользователя monit в manager_custom.conf
- прописываем учетные данные для mysql и asterisk manager в массивы db_config и namiConfig.
- Запускаем скрипт nami.js и если модули nodejs установлены верно, то скрипт запустится даже если у вас нет астериска и базы данных.
особенностью этого скрипта является то, что даже при пропадании подключения к mysql он будет пытаться реконнектится, при пропадании к астериску тоже. И если если подключение к астериску есть, а к mysql нет, то он будет сохранять готовые для импорта запросы в syslog.
фалы проекта можно скачать тут
19.11.2019Asterisk Click2Call API
- Готовый скрипт для вызовов между extension и внешним номером, а также для запуска любого диалплана и передачи ему параметров. Использовалась библиотека https://github.com/chan-sccp/PAMI это форк самой популярной библиотеки от marcelog/PAMI. Используется потому, что в ней исправлена ошибка при использовании CommandAction. в оригинальной библиотеке она будет выдавать read timeout. Скрипт выдает статус оригинации в json формате и unqueid. техническое задание в конце кода.
ini_set('display_errors', 0);
require __DIR__ . '/vendor/autoload.php';
use PAMI\Client\Impl\ClientImpl;
use PAMI\Listener\IEventListener;
use PAMI\Message\Event\EventMessage;
use PAMI\Message\Action\OriginateAction;
use \PAMI\Message\Event\NewchannelEvent;
class A implements IEventListener
{
public $result;
public function handle(EventMessage $event)
{
if ($event instanceof \PAMI\Message\Event\NewchannelEvent) {
$this->result = $event->getUniqueID();
return $this->result;
}
}
}
$agent = $_GET['agent'];
$extension = $_GET['extension'];
$destination = $_GET['destination'];
while ($agent && $extension) {
echo "No agent and extension possible!";
exit;
}
include "config.php";
$a = new ClientImpl($options);
$a->open();
$ClassA = new A();
$a->registerEventListener($ClassA);
while ($agent && $destination) {
echo "Agent && Destination";
$result = makecallagent($a,$agent,$destination);
$arr = array('success' => false, 'errormsg' => $result);
if ($result === true)
$arr = array('success' => $result,'errormsg' => NULL, 'uniqueid' => $ClassA->result);
echo json_encode($arr);
$a->close();
exit;
}
while ($extension && $destination) {
$result = makecall($a,$extension,$destination);
$arr = array('success' => false, 'errormsg' => $result);
if ($result === true)
$arr = array('success' => $result,'errormsg' => NULL, 'uniqueid' => $ClassA->result);
echo json_encode($arr);
$a->close();
exit;
}
echo "No extension\agent and destination correctly passed";
exit;
function makecall($a,$source,$number) {
$originateMsg = new OriginateAction("PJSIP/$source");
$originateMsg->setContext('from-internal');
$originateMsg->setPriority('1');
$originateMsg->setExtension("$number");
$res = $a->send($originateMsg);
if ($res->isSuccess()) return true; //return tru if originating success
return $res->getKeys()['message']; //otherwise return error message
}
function makecallagent($a,$source,$number) {
$originateMsg = new OriginateAction("Local/28@queuemetrics");
$originateMsg->setContext('queuemetrics');
$originateMsg->setPriority('1');
$originateMsg->setVariable('AGENTCODE',$source);
$originateMsg->setVariable('QDIALER_QUEUE','outqueue');
$originateMsg->setVariable('EXTTODIAL',$number);
$originateMsg->setExtension("28");
$res = $a->send($originateMsg);
if ($res->isSuccess()) return true; //return tru if originating success
return $res->getKeys()['message']; //otherwise return error message
}
31.10.2019 zabbix установка агента на centos 7
Берем официальную документацию
но 4-ую версию на centos 7 можно поставить так:
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
Приложение 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
ну, прекрасно же. Примеры и статья
Autostart python script
Замечательная статьяо том как запускать python скрипты, стандартными командами sytsemctl.
PUSH NOTIFICATIONS API
От вас необходим ключ .p8 от apple, id ключа, и team id.
Посылаете к нам HTTP запрос, мы отправляем его в эппл.
Полная статистика в реальном времени запросов и ответов.
8.04.2019troubleshoot. ACK sending to wrong host
solve is add function fix_sdp_contact() into onreply_route .
по-русски: проблема была в том, что опенсипс получая ACK от абонента не пересылал его обратно, через внутренний интерфейс железке. А слал ACK напрямую тому, кто указан был в 200 OK оригинальном. в Итоге помогло добавление функции в onreply_route которая по идее должна заменять поле контакт на адрес источника запроса.
23.07.2018Обзор платных SIP клиентов для Android
Столкнулись с тем что zoiper к примеру на android не может использовать чужие сертификаты, только свои самоподписанные, да и то в моём случае не показывал даже их. такие дела.
zoiper for android not support custom certificates.
answer from android@zoiper.com
Currently Zoiper mobile does not support importation of custom certificates. It is in our to-do list. However I am unable to provide a release-time frame.
We apologize for the inconvenience.
| Posted in Без рубрики | No Comments »