Условный пир:
disallow=all
allow=alaw,ulaw,gsm
Условно предположим, что с его стороны доступны в принципе те же 3 кодека (про порядок приоритета - дальше). От пира поступает вызов, предварительно он устанавливает у себя приоритетный кодек (на каждом вызове это может быть разный кодек). Несмотря ни на что, выбирается именно alaw (то есть тот первый по приоритету, который задан именно у меня). Как это ни крути - вызов установится в первом указанном кодеке. Будь то хоть gsm, хоть ulaw.
Примечание: то есть оригинатор задает первый приоритетный кодек при звонке, но не единственно-возможный (в таком случае все стыковалось бы, безусловно, на нем).
Что мы видим при входящем вызове от него в debug:
a=rtpmap:3 GSM/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
Это то, что желает пир. Но стыкуется все равно на alaw. Если в диалплане жестко задать переменную SIP_CODEC_INBOUND=gsm - вопросов нет, это срабатывает (игнорируя приоритет из sip.conf). Но это может быть не gsm, а также - ulaw.
Вопрос: как диалпланом дернуть первоочередный кодек пришедшего вызова (то есть приоритет его стороны - из SDP BODY)? Тогда бы я мог задать в диалплане данный кодек как и свой приоритетный.
channel audio(native/read/write)format я пробовал - там всегда и везде первый кодек из моего приоритета.
Последний раз редактировалось: bzmn (Пн Дек 09, 2013 15:39)
_________________
рву шаблоны. дорого.
| Игорь @ Чт Ноя 28, 2013 21:43 писал(а): |
| CHANNEL(audionativeformat) |
я уточнил снизу - это не работает. данная переменная назначается уже после объявления кодека, в котором стыканулся пир при входящем вызове.
это удобная переменная, когда нужно послать его вызов, избежав транскодинга
Added after 2 minutes:
| Gich @ Ср Ноя 27, 2013 20:27 писал(а): |
| я в SPA 303 ручками проставлял, use only prefered codec = yes и тогда бегал по любимому кодеку. |
это не выход. даже если удастся заставить пир ставить эту опцию для того кодека, в котором он хочет стыкануться. и даже если эта опция будет касаться только моего пира, все равно всегда остается вероятность риска, что в нем не стыканется.
_________________
http://mh.otx.ru Гибкие SIP/E1 шлюзы Alvis-GW-2E1. Модернизация LDK300/TDA100:VoIP
| Zavr2008 @ Ср Дек 04, 2013 22:10 писал(а): |
| canreinvite=yes устарел. Нужно юзать directmedia=yes |
Во-первых, вообще не вижу взаимосвязи. Если правильно понимаю параметр - он мне не нужен по определению.
Во-вторых, даже с ним - сути проблемы не меняет.
| bzmn @ Пт Дек 06, 2013 01:18 писал(а): |
| Во-первых, вообще не вижу взаимосвязи. Если правильно понимаю параметр - он мне не нужен по определению. |
Дело не в проблеме, дело в неумении читать список изменений параметров sip.conf в различных версиях Asterisk
| Цитата: |
| Имеем: Asterisk 1.8.10.1 |
Там нет уже параметра canreinvite
| Цитата: |
| Во-вторых, даже с ним - сути проблемы не меняет. |
Я и говорил, что это - условие необходимое, но возможно недостаточное)
Чтобы это работало, нужно, чтобы в Dial не было опций tT, еще есть несколько правил..
По поводу же выбора кодека - если обе стороны Вам подконтрольны, просто передавайте его в доп SIP Header, в этом случае еще до Answer всё будет видно.
Еще не ясно что на второй стороне - шифруетесь? где конфиги, где логи?
_________________
http://mh.otx.ru Гибкие SIP/E1 шлюзы Alvis-GW-2E1. Модернизация LDK300/TDA100:VoIP
| Цитата: |
| просто передавайте его в доп SIP Header |
думал об этом, но это анал какой-то - пир на той стороне не очень хочет. так-то, можно было бы и разные транки на той стороне завести с разными кодеками и по ним раскидывать. но хочется универсальное решение.
а что тут логировать? вопрос то больше философский - как устанавливать кодек по приоритету со стороны пира, а не своего приоритета.