Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Интеграция с CRM

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модератор: april22

Интеграция с CRM

Сообщение thiskiralex » 27 июл 2018, 11:53

Добрый день, использую чистый Астериск уже 5 лет. Прочитал 3 книжки, но всеже есть моменты которые я еще не осилил.

Вообщем есть такая задача. Нужно организовать работу телефонии через API с CRM системой.
На разных этапах звонка нужно слать разные запросы.
Запросы я посылаю через функцию SHELL() вызовом внешнего скрипта и передачи ему параметров.

Схема звонка
- начался звонок (для каждого сотрудника шлется запрос с его ${EXTEN})
- один из сотрудников снял трубку для него шлется ACCEPTED, для остальных COMPLETED + Cancelled
- звонок завершен шлется COMPLETED + Success и ${EXTEN} сотрудника, который разговаривал

У меня используется сеть серверов, и путь звонка может уходить на другой сервер по IAX2, плюс это работает через Queue().
В очереди в качестве мембера я указываю LOCAL\EXTEN@to_crm.
Получается для каждого вызова из очереди я знаю EXTEN сотрудника и могу обработать.
Но вот дальше начинаются проблемы, я не до конца не понимаю как работает Dial().
Поскольку после Dial() и того как успешно произошел ANSWER\BUSY\etc.. диалплан завершается и я могу дальше отловить только exten = h или опцию M(), но это уже происходит сразу как только разговор начался.
Тоесть диалплан после Dial продолжается только если за время Timout некто не ответил и опция e или g не помогают.

Получается очень не красивый велосипед, и как мне отловить момент когда положили трубку?
thiskiralex
 
Сообщений: 2
Зарегистрирован: 27 июл 2018, 11:36

Re: Интеграция с CRM

Сообщение zzuz » 27 июл 2018, 12:40

DumpChan() вам в помощь.
Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1497
Зарегистрирован: 21 сен 2010, 13:33

Re: Интеграция с CRM

Сообщение thiskiralex » 27 июл 2018, 13:32

Сейчас подставил звонок напрямую на CHAN_SIP и после завершения разговора диалплан продолжился.
Вот такой вопрос тогда, как правильно заканчивать диалплан экстеншена.
Сейчас я везде в конце каждого вставляю same = Macro(hangup)
Поскольку не всегда без него был звук завершения разговора.

Код: выделить все
[macro-hangup]
exten = s,1,NoOp(LETS HANGUP)
same  = n,Answer()
same  = n,Playtones(busy)
same  = n,Wait(5)
same  = n,Hangup()
thiskiralex
 
Сообщений: 2
Зарегистрирован: 27 июл 2018, 11:36

Re: Интеграция с CRM

Сообщение whoim » 30 июл 2018, 15:29

на всем моем опыте h отрабатывал всегда. Момент ответа (и выдирания номера ответившего) через опцию dial и макрос.
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
Аватар пользователя
whoim
 
Сообщений: 743
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар

Re: Интеграция с CRM

Сообщение awsswa » 31 июл 2018, 15:00

Перед Dial
Set(CHANNEL(hangup_handler_push)=sub-macro-hangupcall,s,1)

[sub-macro-hangupcall]
exten => s,1,NoOp(=DIALSTATUS=${DIALSTATUS}=)
exten => s,n,Return()

и ловите без всяких h
платный суппорт по мере возможностей
awsswa
 
Сообщений: 2306
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

© 2008 — 2018 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH