Как изящно организовать обработку вызовов через разные контексты на двух связанных астерисках?
Грубо говоря: aster1 и aster2 соединены как friend.
Когда поступает вызов от абонента aster1, который должен перевестись на aster2, он обрабатывается так:
| Код: |
| exten => _XXXXXX,1,Dial(IAX2/peer_aster2/${EXTEN},40,rT) |
При этом пир/транк, под которым авторизуется aster1 на aster2, имеет на втором астериске прописанный контекст LOCAL.
То есть кто бы ни позвонил с aster1 на номерную ёмкость aster2, его вызов на aster2 будет обработан правилами контекста LOCAL.
Нужно сделать, чтобы звонки некоторых абонентов с aster1 на aster2 обрабатывались не в контексте LOCAL, а в контексте GOROD. Нам напрашивается такое решение: сделать еще один пир как friend на aster2, например peer_gorod_aster2, и указать ему контекст GOROD. Тогда с aster1 можно будет звонить через него так:
| Код: |
| exten => _XXXXXX,1,Dial(IAX2/peer_gorod_aster2/${EXTEN},40,rT) |
Но ведь его тоже придется прописывать на aster1, и такое решение кажется громоздким, поскольку на aster1 предполагается много абонентов, которые должны звонить через разные контексты второго астериска: GOROD1, GOROD2, GOROD3 и т.п.
Подскажите пожалуйста, какие еще могут быть варианты.
можно все условия хранить в MySQL и второй * будет туда обращаться за выбором контекста (http://voip.rus.net/tiki-index.php?page=Asterisk+cmd+MYSQL)
на втором использовать goto для перехода в нужный контекст
Делаем раз:
| Код: |
| mkdir /etc/asterisk/scripts mkdir /etc/asterisk/asterisk1 mkdir /etc/asterisk/asterisk2 mkdir /etc/asterisk/common_part |
| Код: |
| cat /etc/asterisk/scripts #!/bin/sh rsync -avzP /etc/asterisk/asterisk1/* -e "ssh PARAMS" user@asterisk1:/etc/asterisk/ rsync -avzP /etc/asterisk/common_part/* -e "ssh PARAMS" user@asterisk1:/etc/asterisk/ rsync -avzP /etc/asterisk/asterisk2/* -e "ssh PARAMS" user@asterisk2:/etc/asterisk/ rsync -avzP /etc/asterisk/common_part/* -e "ssh PARAMS" user@asterisk2:/etc/asterisk/ |
Никаких баз данных нет.
В моей системе, я пользуюсь акаунтом в дропбокс, благо он работает на ура как консольный клиент, заодно и бакап файлов есть. А части дайлплана в у меня через симлинк сделаны.
Настройки по перекидыванию звонков минимальны и кстати, звонить через иакс не надо, есть команда switch.
Будем пробовать реализовать.
Немного поясню про условия:
Вопрос возник из-за того, что к aster1 подключены внешние (в интернете) абоненты. А к aster2 - транки на sip-провайдеров городской связи и абоненты внутри сети организации.
Так сделано с целью безопасности и по некоторым другим причинам.
И когда через aster1 звонит абонент, который является сотрудником пятого отдела, его вызов на aster2 должен произойти из контекста GOROD5 - то есть через определенную городскую линию, чтобы определился нужный номер и правильно произошла тарификация именно на пятый отдел.