Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Перезапись переменной в sub-context

0

Добрый день

Для работы кастомного приложения возникла необходимость писать статус завершения звонка в кастомное поле 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) отрабатывает корректно. Даже если я пытаюсь прокинуть переменную в данный саб-контекст, она не перезаписывается в нем. Подскажите, пожалуйста, как можно при переходах по саб-контекстам перезаписать установленную ранее переменную

удалить закрыть спам изменить тег редактировать

спросил 2022-10-11 13:34:53 +0400

A66aT Gravatar A66aT
29 15 10

2 Ответа

1

У вас все эти контексты вызываются в специальном окружении с недо-каналом. Потому и не работает. Проще всего выставить переменные основного канала и потом в h-exten выставить нужные CDR

ссылка удалить спам редактировать

ответил 2022-10-14 03:46:40 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

Попробуйте посмотреть в документации: 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 18:36:29 +0400

tesak89 Gravatar tesak89 flag of Russian Federation
422 25 3 16

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2022-10-11 13:34:53 +0400

Просмотрен: 137 раз

Обновлен: Oct 14 '22

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.