ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Asterisk + chan_dongle + RTP

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

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

Asterisk + chan_dongle + RTP

Сообщение vitaleg » 10 ноя 2020, 21:20

Привет. Друзья, помогите плз с настройкой Asterisk 16 + chan_dongle. Проблема в NAT, очевидно. Ситуация следующая, если переводить вызов с донгла на внешний транк вот так:

Код: выделить все
exten => _+X.,1,Dial(PJSIP/101@5172-100)
exten => _+X.,n,Hangup()


то звука нет и получаем вот такую картину:

Код: выделить все
   -- Executing [+1234567890@dongle:1] Dial("Dongle/tan-0100000001", "PJSIP/101@5172-100") in new stack
    -- Called PJSIP/101@5172-100
    -- PJSIP/5172-100-00000005 is ringing
    -- PJSIP/5172-100-00000005 is ringing
       > 0x7317d0 -- Strict RTP learning after remote address set to: 195.122.19.14:31938
    -- PJSIP/5172-100-00000005 answered Dongle/tan-0100000001
    -- Channel PJSIP/5172-100-00000005 joined 'simple_bridge' basic-bridge <91fe51f0-0e67-441d-ad52-fb3def95e36c>
    -- Channel Dongle/tan-0100000001 joined 'simple_bridge' basic-bridge <91fe51f0-0e67-441d-ad52-fb3def95e36c>
    -- Channel PJSIP/5172-100-00000005 left 'simple_bridge' basic-bridge <91fe51f0-0e67-441d-ad52-fb3def95e36c>
    -- Channel Dongle/tan-0100000001 left 'simple_bridge' basic-bridge <91fe51f0-0e67-441d-ad52-fb3def95e36c>
  == Spawn extension (dongle, +1234567890, 1) exited non-zero on 'Dongle/tan-0100000001'


Но, если добавить Answer(), то всё работает:

Код: выделить все
exten => _+X.,1,Answer()
exten => _+X.,n,Dial(PJSIP/101@5172-100)
exten => _+X.,n,Hangup()


и выглядит уже вот так:

Код: выделить все
-- Executing [+1234567890@dongle:1] Answer("Dongle/tan-0100000003", "") in new stack
    -- Executing [+1234567890@dongle:2] Dial("Dongle/tan-0100000003", "PJSIP/101@5172-100") in new stack
    -- Called PJSIP/101@5172-100
    -- PJSIP/5172-100-0000000b is ringing
    -- PJSIP/5172-100-0000000b is ringing
       > 0x79d370 -- Strict RTP learning after remote address set to: 195.122.19.14:34132
    -- PJSIP/5172-100-0000000b answered Dongle/tan-0100000003
    -- Channel PJSIP/5172-100-0000000b joined 'simple_bridge' basic-bridge <5f8b93c5-94d7-414e-959f-b220ee1c3718>
    -- Channel Dongle/tan-0100000003 joined 'simple_bridge' basic-bridge <5f8b93c5-94d7-414e-959f-b220ee1c3718>
       > 0x79d370 -- Strict RTP switching to RTP target address 195.122.19.14:34132 as source
       > 0x79d370 -- Strict RTP learning complete - Locking on source address 195.122.19.14:34132
    -- Channel Dongle/tan-0100000003 left 'simple_bridge' basic-bridge <5f8b93c5-94d7-414e-959f-b220ee1c3718>
  == Spawn extension (dongle, +1234567890, 2) exited non-zero on 'Dongle/tan-0100000003'
    -- Channel PJSIP/5172-100-0000000b left 'simple_bridge' basic-bridge <5f8b93c5-94d7-414e-959f-b220ee1c3718>


Думаю, что проблема вот в этой настройке, которая происходит только если есть Answer():

> 0x79d370 -- Strict RTP switching to RTP target address 195.122.19.14:34132 as source
> 0x79d370 -- Strict RTP learning complete - Locking on source address 195.122.19.14:34132


Причём если просто звонить с внутреннего клиента на транк - всё прекрасно работает и с Answer и без.

Посоветуйте, пожалуйста, в чём может быть проблема?
vitaleg
 
Сообщений: 3
Зарегистрирован: 10 ноя 2020, 21:06

Re: Asterisk + chan_dongle + RTP

Сообщение ded » 11 ноя 2020, 11:50

Из мира GSM => Dongle => SIP:
USB-модем не передаёт голос (RTP) пока не получит Answer, ибо он переключается на ходу с режима SMS (data) в режим voice только если мы снимаем трубку (нажимаем зелёную трубочку на смартфоне).
Если же выполняется с внутреннего SIP клиента абоненту GSM
SIP => Dongle => GSM в мир,
то модем сразу видит, что это голос.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: Asterisk + chan_dongle + RTP

Сообщение vitaleg » 11 ноя 2020, 20:10

Спасибо, но проблема в том, что при звонке на локальный sip клиент - никаких проблем со звуком нет и без Answer()

Код: выделить все
exten => _+X.,1,Dial(PJSIP/101)
exten => _+X.,n,Hangup()


Код: выделить все
-- Executing [+1234567890@dongle:1] Dial("Dongle/tan-0100000000", "PJSIP/101") in new stack
    -- Called PJSIP/101
[Nov 11 16:06:18] WARNING[2174][C-00000001]: channel.c:1079 channel_indicate: [Dongle/tan-0100000000] Don't know how to indicate condition 22
    -- PJSIP/101-00000000 is ringing
    -- PJSIP/101-00000000 is ringing
       > 0xcf9a60 -- Strict RTP learning after remote address set to: 192.168.100.29:10000
    -- PJSIP/101-00000000 answered Dongle/tan-0100000000
    -- Channel PJSIP/101-00000000 joined 'simple_bridge' basic-bridge <d9da28ef-2d1b-46e2-945e-889852afca49>
    -- Channel Dongle/tan-0100000000 joined 'simple_bridge' basic-bridge <d9da28ef-2d1b-46e2-945e-889852afca49>
       > 0xcf9a60 -- Strict RTP switching to RTP target address 192.168.100.29:10000 as source
    -- Channel Dongle/tan-0100000000 left 'simple_bridge' basic-bridge <d9da28ef-2d1b-46e2-945e-889852afca49>
  == Spawn extension (dongle, +1234567890, 1) exited non-zero on 'Dongle/tan-0100000000'
    -- Channel PJSIP/101-00000000 left 'simple_bridge' basic-bridge <d9da28ef-2d1b-46e2-945e-889852afca49>


И опять здесь есть вот это:

Strict RTP switching to RTP target address 192.168.100.29:10000 as source

Всё-таки, мне кажется, проблема где-то в этом ;(
vitaleg
 
Сообщений: 3
Зарегистрирован: 10 ноя 2020, 21:06

Re: Asterisk + chan_dongle + RTP

Сообщение ded » 12 ноя 2020, 14:51

Попробуйте вместо Answer поставить Progress()
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: Asterisk + chan_dongle + RTP

Сообщение vitaleg » 12 ноя 2020, 20:27

К сожалению, не помогло, звука так и нет :(

Код: выделить все
-- Executing [+1234567890@dongle:1] Progress("Dongle/tan-0100000000", "") in new stack
    -- Executing [+1234567890@dongle:2] Dial("Dongle/tan-0100000000", "PJSIP/101@5172-100") in new stack
    -- Called PJSIP/101@5172-100
[Nov 12 16:15:37] WARNING[2178][C-00000001]: channel.c:1079 channel_indicate: [Dongle/tan-0100000000] Don't know how to indicate condition 22
    -- PJSIP/5172-100-00000000 is ringing
    -- PJSIP/5172-100-00000000 is ringing
       > 0xa3e470 -- Strict RTP learning after remote address set to: 195.122.19.14:17104
    -- PJSIP/5172-100-00000000 answered Dongle/tan-0100000000
    -- Channel PJSIP/5172-100-00000000 joined 'simple_bridge' basic-bridge <9e373e9b-5b1f-44bc-9259-bbd9fdf59a8d>
    -- Channel Dongle/tan-0100000000 joined 'simple_bridge' basic-bridge <9e373e9b-5b1f-44bc-9259-bbd9fdf59a8d>
    -- Channel PJSIP/5172-100-00000000 left 'simple_bridge' basic-bridge <9e373e9b-5b1f-44bc-9259-bbd9fdf59a8d>
    -- Channel Dongle/tan-0100000000 left 'simple_bridge' basic-bridge <9e373e9b-5b1f-44bc-9259-bbd9fdf59a8d>
  == Spawn extension (dongle, +1234567890, 2) exited non-zero on 'Dongle/tan-0100000000'
vitaleg
 
Сообщений: 3
Зарегистрирован: 10 ноя 2020, 21:06


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH