artem
01.09.2015
5137

Интеграция IntraService и Астериск

Обычно при создании заявки, ответственному сотруднику отправляется письмо на email, о том, что у него появилась новая заявка. Однако, бывают случаи, когда письмо по каким-то причинам во время не увидели. Интеграция будет сообщать пользователю о новой заявке, если он просрочил срок реакции на эту заявку.

Рассмотрим пример интеграции Асткериск и HelpDesk системы IntraService.

  1. Настройка фильтра в IntraService 
  2. Диалплан в Астериск
  3. Скрипт интеграции и получения данных по API IntraService

1. Настройка фильтра в IntraService

Для начала необходимо создать фильтр, который будет выдавать список новых заявок.


Далее необходимо нажать на фильтр, убедиться, что показываются только новые заявка со статусом «Открыта». В адресной строке необходимо взять номер данного фильтра, например, 231 (…?stateid=231). Теперь мы имеем возможность через API обращаться к этому фильтру и получать список заявок. Чтобы получать авторизованный доступ, необходимо создать отдельного пользователя и задать ему пароль. Для примера создадим пользователя pbx и с паролем Password123.

2. Диалплан в Астериск

Теперь добавим в наш Астериск диалпланы. Если у вас FreePBX, то в файл extensions_custom.conf

[to-internal]

exten => _X.,1,NoOp(Dial to ${EXTEN})
;довольно короткий вызов, только чтобы напомнить и пользователь увидел номер заявки в пропущенных
same => n,Dial(Local/${EXTEN}@from-internal/n,5)
[from-intraservice]
exten => _X.,1,NoOp(Pause to DIAL ${EXTEN} sec)
same => n,Wait(${EXTEN})
same => n,Answer()
same => n(play),Wait(2)
;файл озвучку загружаем заранее. Звучит фраза: «У вас новая заявка!»
same => n,Playback(custom/intra-task)
same => n,Goto(play)

3. Скрипт интеграции и получения данных по API IntraService

Теперь нам необходимо создать скрипт реализации получения данных из IntraService и генерации вызова уведомления в случае, если срок реакции был просрочен. Сначала желательно вручную проверить получение данных через API, т.е. в адресную строку вставляем строку вида:

https://pbx:Password123@intraservice.company.ru/api/task?filterid=231

Должны получить вывод XML:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Tasks>
<Task>
<Assets/>
…………..
<Id>4798</Id>
<IsMassIncident>False</IsMassIncident>
<Name>Тестовая заявка</Name>
<ParentId/>
<Price>0,000</Price>
<PriorityId>9</PriorityId>
<ReactionDate>28.08.2015 17:12:00</ReactionDate>
<ReactionOverdue>True</ReactionOverdue>
<ResolutionOverdue/>
<ServiceId>15</ServiceId>
<ServiceStage/>
<ServiceStageId/>
<StatusId>31</StatusId>
<TaskRepeatRuleId/>
<Type/>
<TypeId/>
<ExecutorIds>454</ExecutorIds>
…………
<Paginator>
<Count>1</Count>
<Page>1</Page>
<PageCount>1</PageCount>
<PageSize>25</PageSize>
<CountOnPage>1</CountOnPage>
</Paginator>
</TaskList>

Итак скрипт:

<?php
$json = file_get_contents(«https://pbx:Password123@intraservice.company.ru/api/task?filterid=231»);
$tasks=json_decode($json,true);
$taskcall = array ();
$pause=10;
function c2c($user,$cname,$cid,$dialto){
$c2c =»Channel: Local/$dialto@from-intraservice/n».»n»;
$c2c.=»Callerid: «$cname» <$cid>».»n»;
$c2c.=»MaxRetries: 2″.»n»;
$c2c.=»RetryTime: 5″.»n»;
$c2c.=»WaitTime: 600″.»n»;
$c2c.=»Context: to-internal».»n»;
$c2c.=»Extension: $user».»n»;
$c2c.=»Archive: Yes».»n»;
$c2c.=»SetVar: USERNUM=».$user.»n»;
$filename = «/var/spool/asterisk/outgoing/$user-«.time().».call»;
$fh = fopen($filename, «w»);
fwrite($fh, $c2c);
fclose($fh);
}
function tasktocall($taskid,$reactDate,$idsExecutors,$nameExecutors,$pause){
$idexecutor = explode(«, «,$idsExecutors);
$nameexecutor = explode(«, «,$nameExecutors);
$react = str_replace(‘T’,’ ‘,$reactDate);
$dnow = date(«Y-m-d H:i:s»,time());
// > правильно , < для тестов
if ($dnow > $react) {
echo ‘Время реакции на заявку ‘.$taskid.’ просрочено: ‘.$dnow . ‘(сейчас) >’ . $react.'(расчетное время реакции)’. «rn»;
echo ‘Ответственные ВСЕ: ‘.$nameExecutors . ‘ id = ‘.$idsExecutors.»rn»;
echo ‘Ответственный первый: ‘.$nameexecutor[0] . ‘ id = ‘.$idexecutor[0].»rn»;
$json = file_get_contents(«https://pbx:Password123@intraservice.company.ru/api/user/».$idexecutor[0]);
$executor0=json_decode($json,true);
$phone0 = $executor0[‘Phone’];
c2c($phone0,»IntraService»,$taskid,$pause);
echo $phone0.» IntraService «.$taskid.’ pause=’.$pause.»rn»;
}
}
foreach ($tasks[‘Tasks’] as $task) {
//если вызываемая заявка известна и задана конкретным номером заявки в параметр. Для тестов
if (isset($argv[1])) {
if ($task[‘Id’] == $argv[1]) {
tasktocall($task[‘Id’],$task[‘ReactionDate’],$task[‘ExecutorIds’],$task[‘Executors’],$pause);
}
}
// для автоматического просмотра всех заявок
if (!isset($argv[1])) {
tasktocall($task[‘Id’],$task[‘ReactionDate’],$task[‘ExecutorIds’],$task[‘Executors’],$pause);
$pause=$pause+60;
if ($pause>=300) {
break;
}
}
}
?>

Теперь добавляем в cron строку вида:

*/10 11-18 * * 1-5 sudo -u asterisk /usr/bin/php /usr/local/bin/intra.php >> /var/log/intra.log

Как только появляется значок «Время реакции истекло.»,


то на следующей итерации запуска скрипта будет сгенерирован вызов. И на дисплее телефона будет отображен номер заявки.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.