Asterisk отключается в Android, но работает на ПК
У меня есть звездочка для сети (звонки только на веб-сайте), работающая на ПК, но когда я запускаю тот же клиент на моем андроиде 5, нет звука, по крайней мере, на моем андроиде, он отправляет голос на ПК, но просто не может воспроизвести входящий голос.
Кажется, что все хорошо с моей звездочкой, это показывает в вызове:
servidor-asterisk*CLI> core show channels
Channel Location State Application(Data)
SIP/002670-0000003d (None) Up AppDial((Outgoing Line))
SIP/000001-0000003c 002670@from-internal Up Dial(SIP/002670,60)
2 active channels
1 active call
31 calls processed
Но в консоли затмения я получаю код 405 от Android:
"__tsip_transport_ws_onmessage", source: http://IP/videoNodeJs/scripts/sip_api.js (1)
"recv=OPTIONS sip:000001@df7jal23ls0d.invalid;rtcweb-breaker=no;transport=ws SIP/2.0
"Not implemented", source: http://IP/videoNodeJs/scripts/sip_api.js (1)
"SEND: SIP/2.0 405 Method Not Allowed
Какие-либо предложения?
ОБНОВИТЬ:
Клиент SIPML5:
<audio id="audio-remote"/>
var opcoes_chamada = {
audio_remote: document.getElementById('audio-remote'),
screencast_window_id: 0x00000000, // entire desktop
bandwidth: { audio:undefined, video:undefined },
video_size: { minWidth:undefined, minHeight:undefined, maxWidth:undefined, maxHeight:undefined },
events_listener: { events: '*', listener: sipEventsListener },
sip_caps: [
{ name: '+g.oma.sip-im' },
{ name: 'language', value: '\"en,fr\"' }
]
};
Сделать звонок:
callSession = sipStack.newSession('call-audio', opcoes_chamada);
callSession.call(sip_id_d);
Чтобы ответить на звонок:
e.newSession.setConfiguration(opcoes_chamada);
e.newSession.accept();
405 метод не разрешен
The method specified in the Request-Line is understood, but not
allowed for the address identified by the Request-URI.
The response MUST include an Allow header field containing a
list of valid methods for the indicated address.
Некоторая интерпретация этого, есть ли вероятность, что все в порядке, но звуковой тег - проблема в мобильном клиенте? Если нет, то каков "адрес, указанный в Request-URI"?
1 ответ
Итак, это работает.
Вот сделка, SIP был просто в порядке, клиент. Проблема дыры заключалась в хромированном ограничении, которое делает необходимым щелчок пользователя для воспроизведения любого звука в браузере, это что-то вроде этого:
У меня есть мой аудио тег:
<audio id="audio-remote"/>
и позже я кормлю источник с sipml5:
var opcoes_chamada = {
audio_remote: document.getElementById('audio-remote'),
screencast_window_id: 0x00000000, // entire desktop
bandwidth: { audio:undefined, video:undefined },
video_size: { minWidth:undefined, minHeight:undefined, maxWidth:undefined, maxHeight:undefined },
events_listener: { events: '*', listener: sipEventsListener },
sip_caps: [
{ name: '+g.oma.sip-im' },
{ name: 'language', value: '\"en,fr\"' }
]
};
И здесь есть загвоздка, аудио-тэг, который был передан с источником SIPML5, но он находится в состоянии паузы (или удержания, не знаю, что...), пока пользователь не выполняет действие onclick, поэтому сразу после 2 строк чтобы сделать и ответить на звонок я добавляю кнопку с:
onClick="document.getElementById('audio-remote').play();"
и все наконец работает!