По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Дружище! В этой статье мы пошагово разберем процесс установки и первичной настройки Kamailio SIP сервера. Установку будем производить на Ubuntu 18.04/16.04. Готов приблизиться к телефонии уровня энтерпрайз, построенной на open – source? :)
А что есть Kamailio?
Kamailio берет начало от SER/Open SER. Откровенно говоря, Kamailio это масштабируемая и гибкая SIP – платформа, созданная как для маленьких инсталляций, так и для больших проектов уровня сервис – провайдеров. Продукт написан на C и работает на Linux/Unix машинах. Kamailio используется в связке с медиа – сервером (RTP потоки и данные, например, Asterisk) и обеспечивает такие фичи как:
До 5000 вызовов в секунду;
Поддержка 300 000 абонентов (WOW!) при условии наличия всего 4ГБ оперативной памяти для сервера Kamailio!
Легкая кластеризация и добавление новых нод в существующих кластер;
Вообще, Kamailio может выполнять такие роли как:
Registrar server - точка для регистрации клиентов (UAC) ;
Location server - сервер определения местоположения. Сервер хранит адрес (сетевой) абонента и отдает его SIP – серверам по запросу;
Proxy server - роль посредника для дальнейшего проксирования этих запросов далее по цепочке SIP - серверов;
SIP Application server - он же SAS. Сервер приложений. Любых. Плечи в БД, API, XML и так далее – все здесь;
Redirect server - информация клиенту (UAC) о его маршруте. Условно говоря, перенаправляет SIP – потоки по нужному пути;
На этом прелести Kamailio не заканчиваются. Вот еще немного фич, на которые стоит обратить внимание:
Поддержка NAT –T (NAT traversal) для SIP и RTP трафика;
Балансировка нагрузки и отказоустойчивость с множеством сценариев/алгоритмов распределения трафика (на случай отказа);
Лёгкий механизм настрйоки правил маршрутизации;
Простота в реализации отказоустойчивой маршрутизации! Отвалился один маршрут – легко перенаправить трафик на другой;
Поддержка IPv4 и IPv6;
SCTP (Stream Control Transmission Protocol) с поддержкой многопоточности и так называемого multi – homing (синхронизация хостов по двум и более физическим каналам);
Коммуникация по протоколам UDP, TCP, TLS и SCTP;
Кодите на Java, Python, Lua, Perl? Ваши навыки точно пригодятся :)
Приступаем
Перед началом работ, у вас должны быть выполнены следующие требования:
У вас есть сервер, с установленной на него Ubuntu 18.04/16.04;
Вы установили MariaDB на этот сервер;
Вы добавили репозитории Kamailio;
Мы предполагаем, что 1 и 2 пункты вы выполнили :) Приступаем к третьему.
Добавляем репозиторий Kamailio
Если у вас установлена Ubuntu версии 16.04 вам нужно добавить репозиторий Kamailio, который будет использован при установке этой SIP – платформы.
Для начала скачиваем и добавляем GPG ключ:
wget -O- http://deb.kamailio.org/kamailiodebkey.gpg | sudo apt-key add -
После этого нужно добавить строки в файл /etc/apt/sources.list. Работать мы будем с версией 5.1 Kamailio:
$ sudo vim /etc/apt/sources.list.d/kamailio.list
Добавляем данные:
deb http://deb.kamailio.org/kamailio51 xenial main
deb-src http://deb.kamailio.org/kamailio51 xenial main
Установка Kamailio
Как только мы сконфигурировали репозитории, приступаем к установке самого продукта. В том числе, мы установим некоторые MySQL модули:
$ sudo apt install kamailio kamailio-mysql-modules
Установим так же модуль для web – сокетов:
$ sudo apt install kamailio-websocket-modules
Ждем. Как только процессы, рождаемые этими командами будут выполнены, мы можем проверить приложение kamailio и увидеть его версию командой kamailio -V:
$ which kamailio
/usr/sbin/kamailio
$ kamailio -V
version: kamailio 5.1.2 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 7.3.0
Огонь. После этого, правим файл /etc/kamailio/kamctlrc (откройте так же через vim) и проверяем, что параметр DBENGINE выставлен в значение MySQL.
Раскомментируйте значение DBENGINE=MYSQL, удалив # перед строчкой
Далее, создаем базу данных. Команда, указанная ниже, создаст пользователей и таблицы, необходимые для Kamailio:
$ kamdbctl create
INFO: creating database kamailio ...
INFO: granting privileges to database kamailio ...
INFO: creating standard tables into kamailio ...
INFO: Core Kamailio tables succesfully created.
Install presence related tables? (y/n): y
INFO: creating presence tables into kamailio ...
INFO: Presence tables succesfully created.
Install tables for imc cpl siptrace domainpolicy carrierroute
drouting userblacklist htable purple uac pipelimit mtree sca mohqueue
rtpproxy rtpengine? (y/n): y
INFO: creating extra tables into kamailio ...
INFO: Extra tables succesfully created.
Install tables for uid_auth_db uid_avp_db uid_domain uid_gflags
uid_uri_db? (y/n): y
INFO: creating uid tables into kamailio ...
INFO: UID tables succesfully created.
Во время инсталляции, вам нужно будет указать пароль для MySQL. Инсталлятор сделает следующих юзеров:
kamailio - с паролем kamailiorw. Этот юзер имеет права на чтение и запись в БД;
kamailioro - с паролем kamailioro. Этот юзер имеет права только на чтение;
Почти готово. Теперь слегка поправим конфигурационный файл Kamailio /etc/kamailio/kamailio.cfg. Настроим SIP – домен:
$ sudo vim /etc/kamailio/kamctlrc
## ваш SIP домен
SIP_DOMAIN=wiki.merionet.ru
В том же файле, включим некоторые нужные модули. Расположите следующий код в том же файле, прямо под строкой #!KAMAILIO:
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
#!define WITH_ACCDB
Включаем Kamailio!
$ sudo systemctl restart kamailio
Командой systemctl status kamailio можно проверить текущий статус Kamailio. Если что-либо не работает, лог – файл приложения можно найти в /var/log/kamailio.log.
Битрикс24 – облачная CRM система, цель которой заключается в повышении эффективности работы компании. Мы можем выделить 3 позиции, которые привлекают внимание предпринимателей к этой системе:
Доступность - для начинающих предпринимателей Битрикс24 бесплатна по тарифу «Проект». В бесплатной версии вы можете вести обработку лидов, сделок, ставить задачи, создавать проекты, выставлять счета и многие другие опции. В бесплатной версии нет возможности создавать бизнес – процессы. Более высокие версии, такие как «Команда» или «Компания» обладают более богатым функционалом за привлекательную цену.
Омниканальность - вся деятельность по различным каналам работы будет сконцентрирована в Битрикс24. Без разницы, напишет ли клиент письмо на общий адрес электронной почты компании, или на адрес менеджера персонально, напишет в Telegram, Вконтакте, Facebook, заполнит форму на сайте или позвонит – автоматические будет создан лид в CRM и обработан согласно внутренним правилам в зависимости от источника.
Гибкость - CRM система имеет приложение для ПК, смартфона и планшета. Важно отметить, что существует специальный REST API, с помощью которого можно создавать лиды с помощью PHP с сайта. Коробочную версию CRM можно дорабатывать с помощью собственных PHP скриптов.
Если вы остановили свой выбор на Битрикс24 и ищете возможности автоматизировать обработку лидов, то в статье мы расскажем о интеграции Битрикс24 с сайтом.
Интеграция Битрикс24 с сайтом
Начнем с создания HTML формы на сайте по примеру ниже:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<form action="integration.php" method="post">
Тема: <input type="text" name="tema" value="" /><br />
Ваша компания: <input type="text" name="companyname" value="" /><br />
Имя: <input type="text" name="name" value="" /><br />
Фамилия: <input type="text" name="lastname" value="" /><br />
Ваше сообщение: <textarea name="message"></textarea><br />
<input type="submit" value="Send" />
</form>
</html>
Здесь, методом POST, мы будем передавать параметры в PHP файл, который в свою очередь будет связывать наш сайт с Битрикс24. Скопированную сверху конфигурацию сохраняем в файл, который называем integration.php
Продолжаем работу с этим файлом. Над скопированной выше конфигурации открываем PHP – тэг с помощью символов <?php . Между php и вторым знаком вопроса мы будем вставлять последующую конфигурацию.
Определяем необходимые для REST API переменные, с помощью которых мы будем определять адрес сервера подключения и параметры авторизации. Заранее создайте в Битрикс24 пользователя с правами на создание и изменение сущностей связанных с лидами. В конфигурации приведены строки с комментариями:
// Параметры подключения к вашему облачному Битрикс24
define('CRM_HOST', 'your_domain.bitrix24.com'); // укажите здесь ваш домен в Битрикс
define('CRM_PORT', '443'); // порт для подключения. Здесь оставляем все как есть
define('CRM_PATH', '/crm/configs/import/lead.php'); // Путь к PHP файлу, к которому будем подлючаться. Здесь оставляем все как есть
// Параметры авторизации
define('CRM_LOGIN', 'login'); // логин пользователя, которого мы создали для подключения
define('CRM_PASSWORD', 'password'); // пароль пользователя CRM
Переходим к самому скрипту, который будет заниматься отправкой данных в CRM
$tema = $_POST['tema']; //получаем значение полей из формы и записываем их в переменные методом POST
$companyname = $_POST['companyname'];
$name = $_POST['name'];
$lastname = $_POST['lastname'];
$message = $_POST['message'];
// Начинаем обработку внутри скрипта
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$leadData = $_POST['DATA'];
// представляем массив
$postData = array(
'TITLE' => $tema,
'COMPANY_TITLE' => $companyname,
'NAME' => $name,
'LAST_NAME' => $lastname,
'COMMENTS' => $message,
);
// добавляем в массив параметры авторизации
if (defined('CRM_AUTH'))
{
$postData['AUTH'] = CRM_AUTH;
}
else
{
$postData['LOGIN'] = CRM_LOGIN;
$postData['PASSWORD'] = CRM_PASSWORD;
}
// открываем сокет соединения к облачной CRM
$fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
if ($fp)
{
// производим URL-кодирование строки
$strPostData = '';
foreach ($postData as $key => $value)
$strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);
// подготавливаем заголовки
$str = "POST ".CRM_PATH." HTTP/1.0
";
$str .= "Host: ".CRM_HOST."
";
$str .= "Content-Type: application/x-www-form-urlencoded
";
$str .= "Content-Length: ".strlen($strPostData)."
";
$str .= "Connection: close
";
$str .= $strPostData;
fwrite($fp, $str);
$result = '';
while (!feof($fp))
{
$result .= fgets($fp, 128);
}
fclose($fp);
$response = explode("
", $result);
$output = '<pre>'.print_r($response[1], 1).'</pre>';
}
else
{
echo 'Не удалось подключиться к CRM '.$errstr.' ('.$errno.')';
}
}
else
{
}
В случае, если вы хотите провести «дебаг» соединения и понять в чем могут быть проблемы, в разделе HTML кода добавьте следующий код, который позволит вывести причину неработоспособности:
<?php echo $output;
Сохраняем все внесенные конфигурации и переходим к тесту. Заполняем WEB – форму:
Как результат, в CRM появляется лид:
Лид успешно создан в CRM. Для его обработки вы можете создать различные бизнес процессы в разделе «Настройки» -> «Автоматизация». Сам файл скрипта вы можете скачать по ссылке ниже. После загрузки, измените формат файла на PHP:
Скачать скрипт интеграции с сайтом
Мы продолжаем заниматься автоматизацией нашей ИТ – инфраструктуры и сегодня хотим рассказать о простом и надежном методе мониторинга IP – АТС Asterisk в типовой SOHO – сети с помощью маршрутизатора Mikrotik. С помощью сетевой утилиты Netwatch мы настроим почтовые уведомления в случае недоступности нашего Asterisk.
Что такое Netwatch?
В операционной системе Mikrotik Router OS «зашит» достаточно богатый функционал для маршрутизатора его ценовой категории. Одним из очень полезных элементов этого функционала является сетевая утилита Netwatch. Работает она достаточно просто – отправляя через указанный промежуток времени ICMP – запросы маршрутизатор отслеживает состояние хоста, который подлежит мониторингу. Другими словами, роутер отправляет «пинг» на хост через определенный интервал (по умолчанию 1 минута), и если в течении таймаута хост не отвечает, то он считается недоступным.
Внимательно отнеситесь к подбору значений interval и timeout, так потенциально, повышенное значение первого может создать излишнюю нагрузку на маршрутизатор, а второй параметр, при наличии большой задержки у вас на сети, может привести к некорректному определению недоступности хоста.
Настройка SMTP на Mikrotik
Чтобы сетевая утилита работала корректно, необходимо настроить учетную запись. Настройки произведем на примере SMTP от Yandex. Переходим во вкладку Tools -> Email
Server - укажите здесь почтовый сервер для исходящей почты smtp.yandex.ru
Port - указываем 465 порт для безопасного соединения по протокол SMTP
Start TLS - указываем tls only
From - адрес электронной почты, который будет в письмах в качестве адреса отправителя
User - логин на почтовом сервере Яндекса
Password - пароль от почты
Нажимаем Apply. Далее, проверим наши настройки. Нажмите на кнопку Send Email:
Address - в данном случае наш Микротик преобразовал доменное имя smtp.yandex.ru в IP – адрес.
Port - так же указываем 465
User - логин пользователя почтой
Password - пароль от почтового аккаунта
TLS - отметьте галочкой
To - адрес получателя письма
From - укажите адрес отправителя
Subject - тема письма
Body - сообщение
По окончанию нажимаем на кнопку Send Email. У нас появилось отправленное письмо:
Мониторинг Asterisk с помощью Netwatch
После того как мы проверили отправку почты, приступаем к настройке сетевого мониторинга. Переходим во вкладку Tools -> Netwatch:
Ранее, мы рассказывали как настроить мониторинг пиров и транков на IP – АТС Asterisk.
Host - в данном поле укажите IP – адрес вашего Asterisk
Interval - интервал, через который будут отправлять ICMP запросы (пинги) на IP – АТС Asterisk. По умолчанию интервал равен 00:01:00 (1 минута)
Timeout - таймаут, в течение которого, хост мониторинга должен ответить на запросы. Если это время будет превышено, то хост будет считаться недоступным. По умолчанию, 1000мс (1 секунда)
Далее нажимаем на вкладку Up, в которой необходимо настроить скрипт, который будет отработан при доступности Asterisk. Скопируйте скрипт ниже, предварительно указав в поле to вашу почту :
tool e-mail send to=info@merionet.ru subject="Asterisk доступен" body="Asterisk доступен по сети"
Далем тоже самое для вкладки Down, в которой будет выполняться скрипт по недоступности Asterisk. Не забудьте изменить почту:
tool e-mail send to=info@merionet.ru subject="Asterisk не доступен!" body="Сервер IP – АТС Asterisk не доступен по протоколу ICMP – необходимо проверить"
По окончанию настроек нажмите Apply и OK.