Инструменты пользователя

Инструменты сайта


dialplan_call_abonent

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
dialplan_call_abonent [2016/06/26 11:05] kovdialplan_call_abonent [2016/07/05 15:01] (текущий) kov
Строка 1: Строка 1:
-===== При пропущено вызове, абонент перезванивает и попадает на сотрудника который ему звонил. =====+=== При пропущено вызове, абонент перезванивает и попадает на сотрудника который ему звонил. ===
  
  
Строка 37: Строка 37:
 [UPDATE_TIME_OUT]  [UPDATE_TIME_OUT] 
 dsn=aster dsn=aster
-write=UPDATE asterisk.table SET data=${EPOCH} WHERE number=${CALLERID(num)}+write=UPDATE asterisk.table SET data=${EPOCH} WHERE number=${EXTEN}
 </code> </code>
  
Строка 44: Строка 44:
  
 <code> <code>
-[mcm-msk-out]+[call-out]
 exten = _8NXXXXXXXXX,1,Progress() exten = _8NXXXXXXXXX,1,Progress()
  same = n,Set(ARRAY(AGENT,DATA,NUMBER)=${ODBC_GET_DATA_OUT(${EXTEN})}")  same = n,Set(ARRAY(AGENT,DATA,NUMBER)=${ODBC_GET_DATA_OUT(${EXTEN})}")
  same = n,GotoIf($["${NUMBER}"!=""]?call:write)  same = n,GotoIf($["${NUMBER}"!=""]?call:write)
- same = n(write),Set(ODBC_SET_DATA_OUT()="${CALLERID(num)}","${EPOCH}","${EXTEN:1}") + same = n(write),Set(ODBC_SET_DATA_OUT()="${CALLERID(num)}","${EPOCH}","${EXTEN}"
- same = n,Dial(SIP/multicom/${EXTEN},60,tT)+ same = n,Dial(SIP/провейдер/${EXTEN},60,tT)
  same = n,HangUp()  same = n,HangUp()
- same = n(call),Dial(SIP/multicom/${EXTEN},60,tT)+ same = n(call),Set(ODBC_UPDATE_TIME_OUT()=${EPOCH},${EXTEN}) 
 + same = n,Dial(SIP/провейдер/${EXTEN},60,tT)
  same = n,HangUp()  same = n,HangUp()
 </code> </code>
- + 
 +write - записываем в базу. \\ 
 +call - если уже есть запись в базе мы обновляем ее. \\ 
 + 
 +А теперь пока заняться входящими звонками. 
 +<code> 
 +[call-in] 
 +exten => _X.,1,Answer() 
 +exten => _X.,n,Set(ARRAY(AGENT,DATA,NUMBER)=${ODBC_GET_DATA_IN(${CALLERID(num)})}"
 +exten => _X.,n,GotoIf($["${NUMBER}"!=""]?next) 
 +exten => _X.,n,BackGround(/var/lib/asterisk/sounds/ivr/privet) 
 +exten => _X.,n,Goto(call_office,s,1) 
 +exten => _X.,n(next),Set(DATERESULT=${MATH(${EPOCH}-${DATA},i)}) 
 +exten => _X.,n,n,GotoIf($[${DATERESULT} < 18000]?dialagent:dialexten) 
 +exten => _X.,n(dialagent),Goto(call_agent,s,1) 
 +exten => _X.,n(dialexten),Goto(call_office,s,1) 
 + 
 +[call_agent] 
 +exten => s,1,Dial(SIP/${AGENT},60,tTm(hold)) 
 +exten => s,2,Goto(call_office,s,1) 
 +exten => h,1,Set(ODBC_UPDATE_TIME_OUT()=${EPOCH},${EXTEN}) 
 + 
 +[call_office] 
 +exten => s,1,Queue(office,tT,,,120)    
 +exten => s,n,HangUp()  
 +</code> 
 + 
 +Можно добривать IVR который будет перед соединением клиента с сотрудником будет спрашивать хочет ли он этого, просто если клиент общается с несколькими сотрудниками данный способ будет не очень хорош, потому что безусловно клиент будут попадать на одного сотрудника.  
 + 
 +Так же я не стал заморачиваться с очисткой базы при помощи запросов из сценария. Я просто по cron-у делаю очистку базы раз в сутки. \\ 
 +По умолчанию я выставил соединение клиента с сотрудником в течении 5 часов, после этого времени клиент будет попадать в общую очередь. 
 + 
 + --- //[[qazwsx01@mail.ru|Oleg]] 2016/06/26 11:49// 
  
dialplan_call_abonent.1466928309.txt.gz · Последнее изменение: 2016/06/26 11:05 — kov