Проблема с входящими звонками через транки (все идут через один транк)
Поставил Elastix 2.0 (Asterisk 1.6.2.10). Завел внутренних пользователей создал несколько провайдерских транков. Настроил исх. и вх. маршруты. Поставил также Custom Contexts - для того, чтобы каждый пользователь мог звонить через определенный транк. Все это настроил. Все исходящие идут как надо, но вот внешние входящие звонки идут почему-то через один транк, который (как я понимаю) был зареген первым. Т.е. допустим, мне надо позвонить на номер 798-529. Набираю с сотового и согласно маршруту попадаю куда надо, но во время набора номера в панели Flash Operator Panel видно, что звонок идет через транк 798-522 (был заведен первым), хотя транк на номер 798-529 есть и в системе зареген:
elastix*CLI> sip show registry
Host dnsmgr Username Refresh State Reg.Time
192.168.206.10:5060 N 798545 285 Registered Wed, 18 Aug 2010 00:09:55
192.168.206.10:5060 N 798540 285 Registered Wed, 18 Aug 2010 00:09:55
192.168.206.10:5060 N 798538 285 Registered Wed, 18 Aug 2010 00:09:56
192.168.206.10:5060 N 798546 285 Registered Wed, 18 Aug 2010 00:09:56
192.168.206.10:5060 N 798529 285 Registered Wed, 18 Aug 2010 00:09:56
192.168.206.10:5060 N 798522 285 Registered Wed, 18 Aug 2010 00:09:56
Пробовал разграничить на транке звонки на входящие и исходящие (IN-798522 и OUT-798522). Звонки входящие все равно идут только по тому же транку причем предназначенный для исходящих вызовов (OUT-798522). Почему так - не пойму. Плиз, помогите?
Вот настройки на транке:
Trunk Description: SIP-798522
Outbound Caller ID: 798522
Outgoing Settings
Trunk Name: OUT-798522
PEER DETAILS:
host=192.168.206.10
fromdomain=192.168.206.10
fromuser=798522
username=798522
type=peer
password=798522
disallow=all
allow=g729&alaw&ulaw&gsm
insecure=port,invite
Incoming Settings
USER Context: IN-798522
USER Details:
fromdomain=192.168.206.10
fromuser=798522
username=798522
type=user
password=798522
Register String:
798522:798522@192.168.206.10/798522
Added after 7 minutes:
я подозреваю, что провайдер посылает запрос на порт 5060, определить, к какому именно транку относится соединение, asterisk не может.
не разбивайте по блокам исх и вх, сделайте все в одном и в нем пропишите
type=friend
context = куда_хотите_чтоб_попадали _входящие
| edo1 wrote: |
| я подозреваю, что провайдер посылает запрос на порт 5060, определить, к какому именно транку относится соединение, asterisk не может. |
Почему не может? Можно ли это как-то подправить на астериске?
Я думаю, что проблема не в этом. У меня используются аппаратные voip телефоны d-link. Раньше каждый из этих телефонов был подключен напрямую к прову по порту 5060. И все звонки входящие приходили туда куда надо. Значит проблема не в этом.
Added after 7 minutes:
| zlat wrote: |
| здесь USER Context: IN-798522 имеет другое значение не разбивайте по блокам исх и вх, сделайте все в одном и в нем пропишите type=friend context = куда_хотите_чтоб_попадали _входящие |
Если не секрет, то для чего здесь USER Context?
Можно, пожалуйста, по-подробнее с "context = куда_хотите_чтоб_попадали _входящие"?
Мне нужно, чтобы на каждый транк приходили свои соединения, т.е. на 798-522 приходили звонки адресованные именно на этот номер и т.д.
Я так понимаю, нужно созддавать context в extensions_custom.conf для этого?
Объясните, плиз, я пока новичок в астериске.
Вcе в контекст incomin
Дальше в диалплане разруливать:
| Code: |
| [incomin] exten => 798545,1,Hangup() exten => 798540,1,Hangup() exten => 798538,1,Hangup() exten => 798546,1,Hangup() exten => 798529,1,Hangup() exten => 798522,1,Hangup() |
| _Pavel_ wrote: | ||
| Вcе в контекст incomin Дальше в диалплане разруливать: |
| Code: |
| [incomin] exten => 798545,1,Hangup() exten => 798540,1,Hangup() exten => 798538,1,Hangup() exten => 798546,1,Hangup() exten => 798529,1,Hangup() exten => 798522,1,Hangup() |
Спасибо! Попробую, как астериск подниму на реальной машине. Для тестирования поставил на виртуалку на Hyper-V -пришлось погеморойничать с дравами. А так работала. Но увы сегодня покрошился полностью.
| _Pavel_ wrote: | ||
| Если я правильно понимаю ситуацию... Вcе в контекст incomin Дальше в диалплане разруливать: |
| Code: |
| [incomin] exten => 798545,1,Hangup() exten => 798540,1,Hangup() exten => 798538,1,Hangup() exten => 798546,1,Hangup() exten => 798529,1,Hangup() exten => 798522,1,Hangup() |
Разобрался немного с диалпланами. Создал правила транков для входящих на них. В общем получается проблема в другом. Когда я в диалплане для первого в списке транка (7985-522) указал что куда звонить, то звонки вход. на него приходят, но когда я создал правила для остальных транков, то в трубке слышу, что номер не зарегистрирован. Хотя в sip show registry показаны статус всех транков "registered". Почему так?
Когда удалил первый транк (798-522) (на котором все работает), то заработали правила для второго транка в списке, но последующие также не работали - в трубке голос "номер не зарегистрирован". Все транки идут по одному порту 5060. Дело в этом или как?
P.S. Еще одна проблема возникла. Когда звоню с какого-нить внутр. номера на другой внутр., то я слышу отдельные искаженные звуки (как будто заикание, но только очень редкое и с искажениями). Система сама в норме - ресурсов свободных придостаточно. Причем астериск работает пока как тестовая, т.е. звонки не обслуживает, только мои.
Что здесь можно подкрутить?
| Code: |
| core set verbose 3 |
тогда может быть кто-то поможет.