Добрый день
Для работы кастомного приложения возникла необходимость писать статус завершения звонка в кастомное поле CDR -> CDR(customdisposition). Alias в cdradaptive установлен, и в целом все с данным полем работает как должно. Но возникла проблема. В контексте приема звонка мы устанавливаем CDR(custom_disposition)=NO ANSWER и далее переходим в саб-контекст звонка на требуемый экстеншен.
[from-trunk]
exten => _X.,1,Set(CDR(direction)=in)
exten => _X.,n,Set(CDR(custom_disposition)=NO ANSWER)
exten => _X.,n,GoSub(sub-extension-286,s,1)
Для записи звонков вызов по ответу направляется в соответствующий контекст через опцию U, и осуществляется вызов требуемого экстеншена
[sub-extension-286]
exten => s,1,NoOp(sub-extension-286)
same => n,Dial(PJSIP/3005,90,TU(sub-record-call,s,1))
same => n,Hangup()
В которой уже непосредственно устанавливается название записи, а также поле CDR(recordingfile), а также перезаписывается CDR(custom_disposition):
[sub-record-call]
exten => s,1,NoOp(sub-recordcall})
same => n,Set(CDR(custom_disposition)=ANSWERED)
....
same => n,Set(CDR(recordingfile)=${MP3}.mp3)
Проблема в том, что в sub-record-call у меня нет переменной CDR(custom_disposition), а при её установке в любой значение, она так и остается NO ANSWER в таблице CDR. Хотя CDR(recordingfile) отрабатывает корректно. Даже если я пытаюсь прокинуть переменную в данный саб-контекст, она не перезаписывается в нем. Подскажите, пожалуйста, как можно при переходах по саб-контекстам перезаписать установленную ранее переменную
У вас все эти контексты вызываются в специальном окружении с недо-каналом. Потому и не работает. Проще всего выставить переменные основного канала и потом в h-exten выставить нужные CDR
Попробуйте посмотреть в документации: http://asterisk.ru/knowledgebase/Asterisk+variables#:~:text=%D0%9D%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D1%84%D0%B8%D1%87%D0%BD%D1%8B%D1%85%20%D0%B4%D0%BB%D1%8F%20%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B2 Хотя, с gosub я не пробовал
Задан: 2022-10-11 13:34:53 +0400
Просмотрен: 136 раз
Обновлен: Oct 14 '22
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.