Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Asterisk+SalesMan custom маршрутизация

База знаний Интеграция с CRM
В данной статье рассмотрим как выполнить правки для маршрутизации входящих вызовов в соответствии с получаемыми ответами при обращении к CRM Salesman.
P.S. все команды описанные в данной статье необходимо выполнять от имени сперпользователя root. Все действия выполняются в CentOS 6.8 x64.

Установка:
Выполним подключение по SSH к серверу на котором установлена CRM SalesMan и выполним ряд команд вида:

# nano /var/www/html/salesman/api/asterisk/callerid.php ;Где /var/www/html/salesman/ это путь к файлам CRM

И приведем содержимое данного файла к виду:


<?php
/* ============================ */
/* SalesMan CRM */
/* ============================ */
/* (C) 2014 Vladislav Andreev */
/* Salesman Project */
/* www.isaler.ru */
/* ver. 7.70 */
/* ============================ */
?>
<?php
error_reporting(0);
$prefix = $_SERVER["DOCUMENT_ROOT"];
include $prefix."/inc/config.php";
include $prefix."/inc/settings.php";
require_once $prefix."/inc/func.php";
$apkey = $_REQUEST['apkey'];
$phone = $_REQUEST['phone'];
$t = $_REQUEST['t'];
if($t == 'no') $tr = false;
else $tr = true;
if(!$apkey){
print 'Не указан API key';
exit();
}
//проверим ключ
$result_set = mysql_query("SELECT * FROM ".$sqlname."settings WHERE api_key = '$apkey'");
$identity = mysql_result($result_set, 0, "id");
if(!$identity){
print "Incorrect API key";
exit();
}
else{
if($identity){
$callerID = getCallerID($phone,false,$tr);
print $callerID;
}
else {
print "Incorrect API key";
exit();
}
/*
print "<br>";
print "clientID=".$clientID."<br>";
print "clientTitle=".$clientTitle."<br>";
print "personID=".$personID."<br>";
print "personTitle=".$personTitle."<br>";
print "userID=".$userID."<br>";
print "userTitle=".$userTitle."<br>";
print "phoneIN=".$phoneIN."<br>";
*/
}
?>

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

# nano /var/www/html/salesman/api/asterisk/relation.php

И приведем содержимое данного файла к виду:


<?php
/* ============================ */
/* SalesMan CRM */
/* ============================ */
/* (C) 2014 Vladislav Andreev */
/* Salesman Project */
/* www.isaler.ru */
/* ver. 7.70 */
/* ============================ */
?>
<?php
error_reporting(0);
$prefix = $_SERVER["DOCUMENT_ROOT"];
include $prefix."/inc/config.php";
include $prefix."/inc/settings.php";
require_once $prefix."/inc/func.php";
$apkey = $_REQUEST['apkey'];
$phone = $_REQUEST['phone'];
$t = $_REQUEST['t'];
$params = array(
"Клиент" => "1",
"Потенциальный клиент" => "2",
"Партнер" => "3",
"Не работаем" => "4"
);
if($t == 'no') $tr = false;
else $tr = true;
if(!$apkey){
print 'Не указан API key';
exit();
}
//проверим ключ
$result_set = mysql_query("SELECT * FROM ".$sqlname."settings WHERE api_key = '$apkey'");
$identity = mysql_result($result_set, 0, "id");
if(!$identity){
print "Incorrect API key";
exit();
}
else{
if($identity){
$callerID = getCallerID($phone,false,$tr);
$relation = getClientData($clientID, 'tip_cmr');
$result = strtr($relation, $params);
print $result ;
}
else {
print "Incorrect API key";
exit();
}
}
?>

Обращаясь к переменной $result мы можем выяснить к какому типу отношений(данные поля необходимо настроить дополнительно в CRM) относится номер звонившего. Стоит отметить что строки:
"Клиент" => "1",
"Потенциальный клиент" => "2",
"Партнер" => "3",
"Не работаем" => "4"
необходимо привести к такому же виду как будут заведены дополнительные поля в CRM. Завершив правки в файле выполняем сохранение изменений и дальнейшее закрытие данного файла.
Перейдем к настройке диалплана Asterisk, для этого выполним редактирование файла extensions_custom.conf:

# nano /etc/asterisk/ extensions_custom.conf

И добавим в него следующие строки:

[main-inbound]
exten => s,1,Noop()
same => n,Gosub(app-fix-cid,s,1) ;приведение номера звонящего к виду 8XXXXXXX.
same => n,Set(MANAGER_NUM=${CURL(http://127.0.0.1/api/asterisk/callerid.php?phone=${CALLERID(num):-10:10}&apkey=APIKEY)})
same => n,Set(RELATION=${CURL(http://127.0.0.1/api/asterisk/relation.php?phone=${CALLERID(num):-10:10}&apkey=APIKEY)})
same => n,Noop(${MANAGER_NUM})
same => n,Noop(${RELATION})
same => n,GotoIf($["${MANAGER_NUM}" = "Not found"]?ivr-3,s,1)
same => n,GotoIf($["${RELATION}" = "1"]?ivr-6,s,1)
same => n,GotoIf($["${RELATION}" = "2"]?ivr-8,s,1)
same => n,GotoIf($["${RELATION}" = "3"]?ivr-10,s,1)
same => n,GotoIf($["${RELATION}" = "4"]?Hangup)
same => n,Macro(hangupcall)
[app-fix-cid]
exten => s,1,GotoIf($[${REGEX("^[0-9]{7}$" ${CALLERID(num)})} = 0]?cont1)
same => n,Set(CALLERID(num)=8495${CALLERID(num)})
same => n,Set(CALLERID(ANI-num)=${CALLERID(num)})
same => n,Goto(end)
same => n(cont1),GotoIf(${REGEX("^[78]?[2-9][0-9]{9}$" ${CALLERID(num)})}?fix_cid)
same => n,GotoIf(${REGEX("^\\+?7[2-9][0-9]{9}$" ${CALLERID(num)})}?fix_cid)
same => n,Goto(end)
same => n(fix_cid),Set(CALLERID(num)=8${CALLERID(num):-10})
same => n,Set(CALLERID(ANI-num)=${CALLERID(num)})
same => n(end),Return

Где,


http://127.0.0.1/ - адрес сервера CRM
same => n,GotoIf($["${MANAGER_NUM}" = "Not found"]?ivr-3,s,1) — маршрутизация после получения ответа об отсутствии номера в базе CRM
same => n,GotoIf($["${RELATION}" = "1"]?ivr-6,s,1) — маршрутизация по получаемому ответу о типе отношений «1»

asterisk, установка, Подключение, callerid, IVR, centOS, 1C