VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
Аватара пользователя
defekt
Сообщения: 391
Зарегистрирован: 29 сен 2011, 10:41

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

Сообщение 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:
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение Vlad1983 »

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

математические операции делаются по другому
ЛС: @rostel
ded
Сообщения: 15670
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение 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) ; все остальные статусы зарулили сюда. А могли ещё куда нить.
Аватара пользователя
Obi Van
Сообщения: 340
Зарегистрирован: 03 сен 2010, 11:21

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

Сообщение Obi Van »

Такая конструкция не используется. Вот тема на форуме анеста. Вкратце там радикально меняется поведение парсера при различном состоянии опции "extenpatternmatchnew= " в extensions.conf. Использую конструкцию с ExecIf (можно и с GotoIf). Мне нра.
Аватара пользователя
defekt
Сообщения: 391
Зарегистрирован: 29 сен 2011, 10:41

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

Сообщение defekt »

Cпасибо хорошим людям. Теперь вкурил. Всё прозрачно стало понятно. Куда бы я без вас... :roll:
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH