#javascript #ember.js #twilio #ruby-on-rails-5
#javascript #ember.js #twilio #ruby-on-rails-5
Вопрос:
Я создаю приложение для видеоконференций, ранее использовавшее Twilio conversation API. Согласно последним обновлениям от Twilio, я попробовал использовать Rooms API с помощью приложения быстрого запуска twilio. Я столкнулся с проблемой при извлечении и прикреплении мультимедийных дорожек удаленных участников. Сюда я приложил пример кода, библиотеку Twilio, которую я использую, и код ruby для генерации токенов.
Примечание: Я использую Ember JS для интерфейса и ROR для серверной части.
Код JavaScript:
var twilioVideo = Twilio.Video;
Ember.debug('Initiaizing Video Client for ' data.identity);
var twilioClient = new twilioVideo.Client(data.video_token);
Ember.debug('Initiaizing LocalMedia for ' data.identity);
var localMedia = new twilioVideo.LocalMedia();
twilioVideo.getUserMedia().then(function(mediaStream){
localMedia.addStream(mediaStream);
localMedia.attach('#video-local');
twilioClient.connect({to: 'randomRoomname'}). then(function(activeRoom){
Ember.debug('Connected to the Room: ' activeRoom.name);
activeRoom.participants.forEach(function(participant) {
participant.media.attach('div#remote-media');
Ember.debug("Already in activeRoom: '" participant.identity "'");
});
activeRoom.once('participantConnected', function(participant){
participant.media.attach('div#remote-media');
Ember.debug('Participant ' participant.identity ' is connected');
});
activeRoom.once('participantDisconnected', function(participant){
Ember.debug('Participant ' participant.identity ' is disconnected');
});
}, function(error) {
Ember.debug('Failed to connect to room as ' error);
});
});
Видеотека Twilio взята из этого CDN.
Код Ruby:
video_token = Twilio::Util::AccessToken.new(ENV['TWILIO_ACCOUNT_SID'], ENV['TWILIO_API_KEY'], ENV['TWILIO_API_SECRET'], 3600, identity)}
grant = Twilio::Util::AccessToken::VideoGrant.new
grant.configuration_profile_sid = ENV['TWILIO_CONFIGURATION_SID']
video_token.add_grant grant
json :identity => identity, :video_token => video_token.to_jwt
Twilio- используемый драгоценный камень ruby: версия 4.13.0.
PS: Я использую action cable для обмена сообщениями между участниками для некоторых других функций в соответствии с моими требованиями.
Я пропускаю какие-либо другие конфигурации или мне нужно включить что-либо со стороны twilio? Я использую этот учебник.
Ответ №1:
Без журналов я не могу быть уверен, что происходит не так; однако я вижу некоторые улучшения, которые вы могли бы внести.
-
Вы создаете LocalMedia и добавляете к нему MediaStream, но вы никогда не используете его. Вместо этого, я думаю, вам следует передать его в свой
connect
вызов, напримерtwilioClient.connect({to: 'randomRoomname', localMedia: localMedia}).then(function(activeRoom) {
-
Вероятно, вам следует передать
audio: true
andvideo: true
вgetUserMedia
вызов, напримерtwilioVideo.getUserMedia({ audio: true, video: true }).then(function(mediaStream){
-
В последней строке, я думаю, вам следует обработать случай ошибки, если
getUserMedia
произойдет сбой, напримерtwilioVideo.getUserMedia({ audio: true, video: true }).then(function(mediaStream){ // ... }, function(error) { console.error('getUserMedia failed:' error); });
-
Вы также можете включить ведение журнала отладки, например
var twilioClient = new twilioVideo.Client(data.video_token, { logLevel: 'debug' });
Можете ли вы повторить попытку после внесения этих изменений?
Комментарии:
1. Спасибо за ваш ответ. Я попытался улучшить свой код с учетом ваших предложений. Но мне все равно не помогло. Здесь я прилагаю свои журналы конфигурации twilio. Также, просматривая журналы, я обнаружил, что треки отправляются через сообщения wss. Это мешает мне улучшить этот модуль приложения. 🙁