Jump to content
Калькуляторы

Как сделать чтобы клиен перезванивал последнему звонившему Elastix 4

Работники звонят клиентам на мобильные но не всегда дозваниваются, когда клиенты перезванивают на номер организации то не понятно кто звонил и кому переводить звонок.

Собственно вопрос: Как сделать так чтобы клиент попадал сразу к нужному человеку , а если сегодня ему никто не звонил то направить звонок на IVR или секретаря. С направлением в меню или на внутренний номер проблем нет, это работает. Надо только чтобы секретарь не думала на кого переключить. Просто один клиент может пользоваться услугами разных отделов и звонить ему могут все. Исходящий номер на мобильные только один и купить ещё несколько по количеству отделов не вариант ибо интенсивность звонков не большая и все успевают поговорить.

Share this post


Link to post
Share on other sites

Обсуждали этот кейс в кулуарах Астерконф.

Share this post


Link to post
Share on other sites

Как то попадалось мне такое обсуждение в интернете, но тогда про IP телефонию в конторе разговоров не велось и внедрение не планировалось.

А сейчас не могу вспомнить по каким ключевым словам поиск вести.

Хотя бы направление поиска, ключевые слова. Там уж наверное и докапаюсь.

Share this post


Link to post
Share on other sites

В Yeastar видел такой функционал. AutoCLIP называется, по русски - "прилипание", "умная маршрутизация".

Share this post


Link to post
Share on other sites

По идее можно просто при входящем звонке слазить в базу в CDR запросом кто посл. звонил на номер

звонящего за скажем 3 часа. И на основании результата повернуть звонок куда надо.

Share this post


Link to post
Share on other sites

Ну я планировал  на офисной атс нарисовать связку из unixtime - callerid - exten - dial state при ${DIALSTATUS} = (BUSY||NOANSWER) и при входящем  от exten проверять состояние этой связи и отправлять вызов на внутренний номер, при неответе внутреннего - играть фразу перезвоните позже, а при ответе удалять связку unixtime - callerid - exten - dial state

Но у меня беда в том что вызовы идут не только через *, а еще и через старую LDK 300 (Е1 между станциями через циску, город через fxo). Причем основной станцией для 9 служит именно LDK 300 и только когда на ней нет свободных fxo выход идет через sip на *. А на городских аналоговых включен антиаон.

 

 

Share this post


Link to post
Share on other sites

Долго возился, поскольку телефонию кручу по большей части для самообразования. Хорошо начальство начинание поддерживает, в итоге решил свою проблему следующим образом: (найдено на просторах интернета с небольшими правками)

Добавляем в extensions_custom.conf следующее:

[from-trunk-gsmin]
  exten => _X.,1,Set(CHANNEL(language)=ru)
  exten => _X.,n,Set(CALLID=${CALLERID(num):-10})
  exten => _X.,n,MYSQL(Connect connidcdr localhost root 1 asteriskcdrdb utf8)
; Для всех вызовов за последние 12 часов , как раз кто зонил сегодня.
  exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND calldate > NOW() - INTERVAL 12 HOUR ORDER BY calldate DESC LIMIT 1)
; Для неотвеченных вызовов
;   exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NOANSWER' ORDER BY calldate DESC)
  exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
  exten => _X.,n,set(number=${src})
  exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst}) ; вот и узнали кто кому звонил
  exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
  exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
  exten => _X.,n,MYSQL(Disconnect ${connidcdr})
  exten => _X.,n,dial(SIP/${number},tT) ; звоним внутреннему абоненту
  exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
  exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
  exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
  exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
  exten => _X.,n,MYSQL(Disconnect ${connidcdr})
  exten => _X.,n,goto(from-trunk,101,1) ; ну и если он не отвечает то пускаем звонок секретарю (пускай работает)
  exten => h,1,handup()

Создал custom destination

2018-11-06_21-56-50.png.aeb5f93c5c6737f5c4b2a967a323d8fa.png

и настроил входящий маршрут на это назначение , вот уже неделю вроде как работает, по крайней мере народ не жалуется и к человеку назначенному мной секретарём входящих с вопросом кто звонил звонков меньше.

 

 

Забыл написать что у меня Elastix 4, и конечно приму критику по существу вопроса.

Наверняка можно либо упростить или всё таки чтото не совсем верно записано.

Edited by danila77
орфография

Share this post


Link to post
Share on other sites
Цитата

WHERE dst LIKE '%${CALLID}%'
Лучше WHERE dst='${CALLID}', и проверить есть ли индекс на dst.

Share this post


Link to post
Share on other sites
5 часов назад, disappointed сказал:

проверить есть ли индекс на dst

А это где посмотреть?

Запрос поправлю конечно.

Share this post


Link to post
Share on other sites
4 часа назад, danila77 сказал:

А это где посмотреть?

Запрос поправлю конечно.

Если запросом то

SHOW INDEX FROM cdr

Если phpmyadmin то там ну таблицу открыть, Структура и внизу.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now