Страница 1 из 1

s-*, _s-. В учебниках не разжевали важные моменты

Добавлено: 30 ноя 2011, 13:35
defekt
Может я стоп-кран уж дёрнул, но как-то нифига не понимаю я этих конструкций. Не понял этих конструкций оказывается, не только я, а и IP Telephony and Contact Center Engineer
Eng. Bilal Ghayad, который призадумался ещё в 2007-м году:
http://lists.digium.com/pipermail/aster ... 91876.html

Код: Выделить всё

[macro-voicemail]
exten => s,1,Dial(${ARG1},20)
exten => s,2,Goto([b]s-${DIALSTATUS}[/b],1)
exten => s-NOANSWER,1,Voicemail(u${MACRO_EXTEN})
exten => s-NOANSWER,2,Goto(incoming,s,1)
exten => s-BUSY,1,Voicemail(b${MACRO_EXTEN})
exten => s-BUSY,2,Goto(incoming,s,1)
exten => _s-.,1,Goto(s-NOANSWER,1)
Книга не разжевала это. Ответ на вопрос инженера:

Код: Выделить всё

The underscore signifies that it's a pattern match, and the period means
one more more characters after the s and the dash.  In other words, it's
a patter that would match s-CONGESTION or anything else that started
with an s and a dash.
Я не понял. Что мы "вычитаем" из стартового экстеншна?
Мне не понятны, что это за конструкции экстеншнов s-. И что это в Goto (s-${DIALSTATUS}) - меня интересует, это процессы "арифметики", "меток", "сопоставлений" или ещё чего?
Если канонично в книге написали, что имена экстеншнов могут состоять ТОЛЬКО из цифр и букв, то почему здесь ещё и "минус"/"тире"? :mrgreen: Почему не возведение в степень, не ряд Фурье?
Видать возрастное отупение... :oops:

Re: s-*, _s-. В учебниках не разжевали важные моменты

Добавлено: 30 ноя 2011, 13:46
Vlad1983
если ${DIALSTATUS} вернул BUSY
то прыгнет сюда exten => s-BUSY,1,Voicemail(b${MACRO_EXTEN})
сюда exten => _s-. по какомe угодно кроме BUSY и NOANSWER (в данном контексте)

математические операции делаются по другому

Re: s-*, _s-. В учебниках не разжевали важные моменты

Добавлено: 30 ноя 2011, 13:54
ded
Макрос можно было перерабатывать, дополнять, изменять, например
[macro-default]
exten => s,1,Dial(${ARG1},20)
exten => s,2,Goto(s-${DIALSTATUS},1) $ в зависимости от полученного статуса делать -
exten => s-NOANSWER,1,Playback(nobody-answer-sorry-try-to-call-later-because-we-have-not-so-much-storage-to-save-all-voices)
exten => s-NOANSWER,2,Hangup()
или
exten => s-NOANSWER,1,PlayBack(nobody-office-sorry)
exten => s-NOANSWER,2,Voicemail(u{Corporate-voicemail))
exten => s-BUSY,1,Playback(all-operators-busy-now)
exten => s-BUSY,2,Voicemail(b{Corporate-voicemail))
exten => s-CONGESTION,1,Play(wow!)
exten => _s-.,1,Goto(s-NOANSWER,1) ; все остальные статусы зарулили сюда. А могли ещё куда нить.

Re: s-*, _s-. В учебниках не разжевали важные моменты

Добавлено: 30 ноя 2011, 15:26
Obi Van
Такая конструкция не используется. Вот тема на форуме анеста. Вкратце там радикально меняется поведение парсера при различном состоянии опции "extenpatternmatchnew= " в extensions.conf. Использую конструкцию с ExecIf (можно и с GotoIf). Мне нра.

Re: s-*, _s-. В учебниках не разжевали важные моменты

Добавлено: 01 дек 2011, 16:23
defekt
Cпасибо хорошим людям. Теперь вкурил. Всё прозрачно стало понятно. Куда бы я без вас... :roll: