Звонок исходящий, необходимо обрабатывать коды отбоя и при ответе переводить на абонента.
Slawka ( 2012-07-04 17:14:50 +0400 )редактироватьЗадача записывать все исходящие звонки, удачные и нет. Звонки генерятся скриптом на локальный exten далее в транк
exten => 1,n,MixMonitor(/var/spool/asterisk/monitor/${CDR(start)}-${DST-NUM}-${ID_CALL}-full.wav,m)
exten => 1,n,Dial(SIP/${CUT(Out_GW,,1)}/${CUT(DST-NUM,,1)})
Проблема в том, что запись начинается только после снятия трубки на другом конце, а нужна полная запись с кпв.
Если есть идея посоветуйте.
-- Attempting call on Local/1@call for 5556@call_2:1 (Retry 1)
-- Executing [1@call:1] NoOp("Local/1@call-e341;2", "---- CALL START ----") in new stack
-- Executing [1@call:2] Set("Local/1@call-e341;2", "ID_CALL=1341391741.44736") in new stack
-- Executing [1@call:3] Set("Local/1@call-e341;2", "DST-NUM=123456") in new stack
-- Executing [1@call:4] Set("Local/1@call-e341;2", "Loop=1") in new stack
-- Executing [1@call:5] Set("Local/1@call-e341;2", "Call_VP=SIP/laba/44405") in new stack
-- Executing [1@call:6] Set("Local/1@call-e341;2", "Out_VP=laba") in new stack
-- Executing [1@call:7] Set("Local/1@call-e341;2", "Out_GW=trunk") in new stack
-- Executing [1@call:8] Set("Local/1@call-e341;2", "Phone_id=22") in new stack
-- Executing [1@call:9] Set("Local/1@call-e341;2", "Region_id=0") in new stack
-- Executing [1@call:10] Set("Local/1@call-e341;2", "Num_App=44405") in new stack
-- Executing [1@call:11] Set("Local/1@call-e341;2", "Queue=66666") in new stack
-- Executing [1@call:12] Set("Local/1@call-e341;2", "Context=call") in new stack
-- Executing [1@call:13] MixMonitor("Local/1@call-e341;2", "/var/spool/asterisk/monitor/2012-07-04 12:49:01-123456-1341391741.44736-full.wav,m") in new stack
== Begin MixMonitor Recording Local/1@call-e341;2
-- Executing [1@call:14] Dial("Local/1@call-e341;2", "SIP/trunk/123456") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/trunk/123456
-- SIP/trunk-0002c16f is making progress passing it to Local/1@call-e341;2
-- SIP/trunk-0002c16f answered Local/1@call-e341;2
> Channel Local/1@call-e341;1 was answered.
Asterisk 10.3.1
ну а в чем побелма? есть два ваианта
либо ответить заранее либо написать кустомный диалплан.
Звонок исходящий, необходимо обрабатывать коды отбоя и при ответе переводить на абонента.
Slawka ( 2012-07-04 17:14:50 +0400 )редактироватьМне почему-то кажется что "обрабатывать коды отбоя" и "при ответе переводить на оператора" это две разные задачи.
Первая решается проверкой состояния переменной ${DIALSTATUS} после выполнения команды Dial().
Вторую можно решить добавлением макроса в команде Dial(). Макрос будет выполнятся только если на другом конце ответили, ну а в самом макросе уже реализуйте перевод на оператора.
Нужно записать процесс дозвона и не потерять DIALSTATUS
Slawka ( 2012-07-05 14:49:00 +0400 )редактироватьПопробуйте вот такой костыль:
[test]
exten => _X.,1,MixMonitor(${UNIQUEID}.wav)
same => n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
same => n,Dial(Local/000${EXTEN}@test)
exten => _000X.,1,Answer()
same => n,Dial(SIP/${EXTEN:3})
same => n,Hangup()
exten => h,1,NoOp(dialstatus is ${DIALSTATUS})
same => n,Hangup()
К сожалению, ничего более умного в голову не пришло. Для лабы может и сойдет, а для живой системы это реальный костыль. Ну и подогнать вам нужно будет под свой диалплан. В аудиофайле должен записаться весь разговор, статус же интересующего нас звонка находится в канале Local.
artefackt ( 2012-07-06 14:35:16 +0400 )редактироватьЗадан: 2012-07-04 13:13:11 +0400
Просмотрен: 3,449 раз
Обновлен: Jul 05 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
у mixmonitor'a нет опции m.
версия астериска, реальный диалплан ( вместе со всеми Local каналами ) и вывод из консоли сильно помогают с ответом...
komrad123 ( 2012-07-04 13:59:14 +0400 )редактировать