Asterisk+SalesMan custom маршрутизация
В данной статье рассмотрим как выполнить правки для маршрутизации входящих вызовов в соответствии с получаемыми ответами при обращении к 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»
Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.