1 | изначальная версия редактировать | |
Добрый день, друзья! Постараюсь уложить свои мысли в минимальное количество слов, т.к. вопрос больше концептуальный чем практический. Хотелось бы услышать мнения бывалых написателей диалплана вот по какомим вопросам. Вопрос первый: Понадобилось разграничить права доступа для внутренних абонентов (все как у всех, межгород, мобильные заграница и.т.д.). Казалось бы - чего проще ? Весь интернет пестрит рекомендациями по типу :
[manager]
include => dial-local
[vip]
include => dial-local
include => dial-mobile
include => dial-zagranitso
[dial-local]
exten => _[12]XX, Dial(SIP/${EXTEN})
[dial-zagranitso]
exten => _810XXXXXX., Dial(SIP/${EXTEN})
И так далее... Вроде бы красиво, стройно, но не слишком гибко. Когда понадобилось сделать более развернутое разграничение прав, появилось больше контекстов, больше шаблонов и.т.д. Как только количество направлений (и раздачи этих направлений пользователям) перевалило за десяток, плюнул на все, засунул всех пиров в SQL , создал дополнительную таблицу с правами доступа для каждого пира и макросом проверяю права доступа к направлениям. На верном ли я пути ? Наворачивание излишних макросов зло или благо ?
Вопрос второй. Даже не вопрос, а больше - размышление. Хорошей практикой у многих программистов считается устраивать проверки на каждый чих ПЕРЕД выполнением чего-либо . Например, перед набором внутреннего экстеншена я проверяю его макросом на предмет DEVICE_STATE, все ненормальные состояния обрабатываю в отдельном макросе error-handler. Стараюсь вычищать каждый WARNING в консоли, проверяя кучу всего ПЕРЕД выполнением действия. С другой стороны, вижу как многие не отягощают код лишними телодвижениями, плюют на WARNING и обрабатывают особо важные ошибкиу уже ПОСЛЕ их возникновения в процессе выполнения диалплана. Поделитесь опытом - по какому пути идти в этом случае : чувствую, что "зарываюсь" с головой в код макросов (казалось бы иногда совершенно ненужных)
Как-то так . Прошу прощения, если получился слишком длинный неформатный топик.
Спасибо
2 | No.2 Revision редактировать |
Добрый день, друзья! Постараюсь уложить свои мысли в минимальное количество слов, т.к. вопрос больше концептуальный чем практический. Хотелось бы услышать мнения бывалых написателей диалплана вот по какомим вопросам. Вопрос первый: Понадобилось разграничить права доступа для внутренних абонентов (все как у всех, межгород, мобильные заграница и.т.д.). Казалось бы - чего проще ? Весь интернет пестрит рекомендациями по типу :
[manager]
include => dial-local
[vip]
include => dial-local
include => dial-mobile
include => dial-zagranitso
[dial-local]
exten => _[12]XX, Dial(SIP/${EXTEN})
[dial-zagranitso]
exten => _810XXXXXX., Dial(SIP/${EXTEN})
И так далее... Вроде бы красиво, стройно, но не слишком гибко. Когда понадобилось сделать более развернутое разграничение прав, появилось больше контекстов, больше шаблонов и.т.д. Как только количество направлений (и раздачи этих направлений пользователям) перевалило за десяток, плюнул на все, засунул всех пиров в SQL , создал дополнительную таблицу с правами доступа для каждого пира и макросом проверяю права доступа к направлениям. На верном ли я пути ? Наворачивание излишних макросов зло или благо ?
Вопрос второй. Даже не вопрос, а больше - размышление. Хорошей практикой у многих программистов считается устраивать проверки на каждый чих ПЕРЕД выполнением чего-либо . Например, перед набором внутреннего экстеншена я проверяю его макросом на предмет DEVICE_STATE, все ненормальные состояния обрабатываю в отдельном макросе error-handler. Стараюсь вычищать каждый WARNING в консоли, проверяя кучу всего ПЕРЕД выполнением действия. С другой стороны, вижу как многие не отягощают код лишними телодвижениями, плюют на WARNING и обрабатывают особо важные ошибкиу уже ПОСЛЕ их возникновения в процессе выполнения диалплана. Поделитесь опытом - по какому пути идти в этом случае : чувствую, что "зарываюсь" с головой в код макросов (казалось бы иногда совершенно ненужных)
Как-то так . Прошу прощения, если получился слишком длинный неформатный топик.
Спасибо
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.