Либо исходящий, либо входящий вызов работает только в настройке звездочки, а не в обоих. Почему?

Это мой sip.conf

; inbound configuration

[nexmo-sip]
fromdomain=sip.nexmo.com
type=friend
context=nexmo
insecure=port,invite
nat=no
;Add your codec list here.
; Note: Use "ulaw" for US only, "alaw" for the rest of the world.
allow=ulaw
allow=alaw
allow=G729
dtmfmode=rfc2833

[nexmo-sip-01](nexmo-sip)
host=173.193.199.24

[nexmo-sip-02](nexmo-sip)
host=174.37.245.34

[nexmo-sip-03](nexmo-sip)
host=5.10.112.121

[nexmo-sip-04](nexmo-sip)
host=5.10.112.122

[nexmo-sip-05](nexmo-sip)
host=119.81.44.6

[nexmo-sip-06](nexmo-sip)
host=119.81.44.7

;outbound configuration

[general]
register => <api-key>:<api-secret>@sip.nexmo.com
registerattempts=0
srvlookup=yes  
context=nexmo-sip1

[nexmo]
username=<api-key>
host=sip.nexmo.com
defaultuser=<api-key>
fromuser=<myNumber123>  
fromdomain=sip.nexmo.com
secret=<api-secret>
type=friend
context=nexmo-sip1
insecure=very
qualify=yes
nat=no
;Add your codec list here.
; Note: Use "ulaw" for US only, "alaw" for the rest of the world.
allow=ulaw
allow=alaw
allow=G729
dtmfmode=rfc2833

[<myNumber123>]   ; this number is at soft phone client
type=friend
context=nexmo-sip1
host=dynamic
secret=<myNumber123>
qualify=yes

[<mynumber123456>]  ; this is my mobile number
type=friend
context=nexmo-sip1
host=dynamic
secret=<secretkey>
qualify=yes

Это extensions.conf

[general]
live_dangerously=yes
[globals]

[nexmo-sip1]

exten => _X.,1,Dial(SIP/${EXTEN}@nexmo)

[default]
exten => s,1,gosub(nexmo-sip1,${EXTEN},1)

Настройка 1: если указан выше параметр extensions.conf, я могу совершать исходящие вызовы с моего программного клиента, но не могу получать входящие вызовы на этот программный клиент.

Настройка 2: если я изменю настройки extensions.conf следующим образом, я смогу получать входящие вызовы на программном клиенте, но не смогу совершать исходящие вызовы.

[general]
live_dangerously=yes
[globals]

[nexmo-sip1]

exten => _X.,1,Dial(SIP/${EXTEN},30)

[default]
exten => s,1,gosub(nexmo-sip1,${EXTEN},1)

Вопрос 1) Что нужно изменить, чтобы получать как исходящие, так и входящие вызовы?

Вопрос 2. Когда я устанавливаю extensions.conf как в настройке 1, я не слышу собеседника, но слышу разговор обеих сторон, когда extensions.conf настроен как в настройке 2. Как исправить это? И это журнал, который я вижу, когда не слышу

[1 июля 22:50:38] ПРЕДУПРЕЖДЕНИЕ [11299]: chan_sip.c:4175 retrans_pkt: превышено время ожидания повторной передачи при передаче tvK9cRGNN- для последовательности 21 (критический ответ) — см. https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions Время ожидания пакета истекло через 8383 мс без ответа [1 июля 22:50:38] ПРЕДУПРЕЖДЕНИЕ[11299]: chan_sip.c:4204 retrans_pkt: Завершение вызова tvK9cRGNN- - нет ответа на наш критический пакет (см. https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions).

Я понимаю, что есть много неправильных конфигураций, таких как insecure=very и т. д. Но сейчас я хочу, чтобы этот прототип работал успешно.


person Community    schedule 02.07.2016    source источник
comment
Вы должны создать разные контексты для входящего и исходящего трафика. Вы должны правильно настроить nat traversal/firewall сервера asterisk.   -  person arheops    schedule 03.07.2016
comment
Обход NAT и брандмауэр сделаны правильно. Потому что, если бы это было неправильно, я бы не получил исходящий трафик в настройках 1 и входящий трафик в настройках 2. Я знаю, что проблема связана с extensions.conf.   -  person sofs1    schedule 03.07.2016


Ответы (1)


Чтобы входящие и исходящие вызовы работали, вам необходимо иметь 2 отдельных контекста для входящего и исходящего трафика.

Попробуйте изменить свои конфиги следующим образом, extensions.conf:

[general]

[globals]

[nexmo-sip2]
exten => _X.,1,Dial(SIP/${EXTEN}@nexmo)

[nexmo-sip1]
exten => _X.,1,Dial(SIP/${EXTEN},30)

В sip.conf оставьте все, что у вас есть, просто обновите строки, которые я вставил сюда:

[<myNumber123>]   ; this number is at soft phone client
type=friend
context=nexmo-sip2
host=dynamic
secret=<myNumber123>
qualify=yes

[<mynumber123456>]  ; this is my mobile number
type=friend
context=nexmo-sip2
host=dynamic
secret=<secretkey>
qualify=yes

Как видите, нам нужно иметь 2 отдельных контекста для вызовов с ваших добавочных номеров SIP (nexmo-sip2) и для вызовов от вашего sip-провайдера (nexmo-sip1).

person os11k    schedule 04.07.2016
comment
Вау, ты потрясающий. Вы решили мою проблему, с которой я сталкивался почти две недели. Благодаря тонну. - person ; 06.07.2016
comment
У меня вообще другой вопрос. Допустим, у меня есть дополнительные расширения (в данном случае номер мобильного телефона), как я могу динамически добавить их в sip.conf и зарегистрировать его на SIP-сервере? - person ; 06.07.2016
comment
Проверьте звездочку в реальном времени, это может вам помочь - person os11k; 06.07.2016
comment
Большое спасибо за вашу помощь. - person ; 06.07.2016
comment
Привет, Что касается вышеупомянутых sip.conf и extensions.conf, я не слышу голоса обеих сторон во время исходящего вызова. Но я слышу голоса обеих сторон во время входящего вызова. Есть идеи? - person ; 07.07.2016
comment
Проверьте конфигурацию NAT, односторонний звук на 99% связан с NAT. - person os11k; 07.07.2016
comment
Спасибо еще раз. Добавление externip и localnet в общий контекст в sip.conf сработало. Спасибо. - person ; 13.07.2016
comment
Привет, не могли бы вы ответить на этот stackoverflow.com/questions/38385876/ - person ; 15.07.2016