Skip to content
Snippets Groups Projects
Commit ceea7b7e authored by gcampes's avatar gcampes
Browse files

Implements audio transfer from echo test

parent 79e7bc19
No related branches found
No related tags found
No related merge requests found
import BaseAudioBridge from './base';
import { Tracker } from 'meteor/tracker';
import VoiceUsers from '/imports/api/2.0/voice-users';
const STUN_TURN_FETCH_URL = Meteor.settings.public.media.stunTurnServersFetchAddress;
const MEDIA_TAG = Meteor.settings.public.media.mediaTag;
......@@ -66,7 +68,7 @@ export default class SIPBridge extends BaseAudioBridge {
joinAudio({ isListenOnly, extension, inputStream }, managerCallback) {
return new Promise((resolve, reject) => {
const callExtension = extension || this.userData.voiceBridge;
const callExtension = extension + this.userData.voiceBridge || this.userData.voiceBridge;
const callback = (message) => {
managerCallback(message).then(resolve);
......@@ -82,6 +84,32 @@ export default class SIPBridge extends BaseAudioBridge {
});
}
transferCall(onTransferStart, onTransferSuccess) {
return new Promise((resolve) => {
onTransferStart();
this.currentSession.dtmf(1);
Tracker.autorun((c) => {
const selector = { meetingId: this.userData.meetingId, intId: this.userData.userId };
const query = VoiceUsers.find(selector);
console.log(selector);
window.Kappa = query;
query.observeChanges({
changed: (id, fields) => {
console.log('changed', fields);
if (fields.joined) {
console.log('LUL', fields.joined);
onTransferSuccess();
c.stop();
resolve();
}
},
});
});
})
}
exitAudio() {
return new Promise((resolve) => {
this.currentSession.on('bye', () => {
......@@ -119,6 +147,9 @@ export default class SIPBridge extends BaseAudioBridge {
this.userAgent = new window.SIP.UA({
uri: `sip:${encodeURIComponent(username)}@${server}`,
wsServers: `${(protocol === 'https:' ? 'wss://' : 'ws://')}${server}/ws`,
log: {
builtinEnabled: false,
},
displayName: username,
register: false,
traceSip: true,
......
......@@ -13,8 +13,7 @@ export default withModalMounter(createContainer(({ mountModal }) =>
},
joinMicrophone: () => {
console.log('JOIN MIC FROM CONTAINER');
Service.exitAudio().then(() => Service.joinMicrophone())
.then(() => mountModal(null));
Service.transferCall().then(() => mountModal(null));
},
joinListenOnly: () => {
Service.joinListenOnly().then(() => mountModal(null))
......
......@@ -14,7 +14,7 @@ export default createContainer(() => ({
handlePlayAudioSample: (deviceId) => {
console.log('handle play audio sample', deviceId);
const sound = new Audio('resources/sounds/audioSample.mp3');
sound.setSinkId(deviceId);
if (deviceId) sound.setSinkId(deviceId);
sound.play();
},
}), AudioTestContainer);
......@@ -5,6 +5,7 @@ import Meetings from '/imports/api/2.0/meetings';
const init = () => {
console.log('Running audio service init.');
const meetingId = Auth.meetingID;
const userId = Auth.userID;
const sessionToken = Auth.sessionToken;
const User = Users.findOne({ userId });
......@@ -16,6 +17,7 @@ const init = () => {
const microphoneLockEnforced = false;
const userData = {
meetingId,
userId,
sessionToken,
username,
......@@ -29,6 +31,7 @@ const init = () => {
export default {
init,
exitAudio: () => AudioManager.exitAudio(),
transferCall: () => AudioManager.transferCall(),
joinListenOnly: () => AudioManager.joinAudio({ isListenOnly: true }),
joinMicrophone: () => AudioManager.joinAudio(),
joinEchoTest: () => AudioManager.joinAudio({ isEchoTest: true }),
......
......@@ -110,6 +110,10 @@ class AudioManager {
return this.bridge.exitAudio()
}
transferCall() {
return this.bridge.transferCall(this.onTransferStart.bind(this), this.onAudioJoin.bind(this));
}
toggleMuteMicrophone() {
console.log('toggleMuteMicrophone', this);
makeCall('toggleSelfVoice').then((res) => {
......@@ -137,6 +141,11 @@ class AudioManager {
console.log('onAudioJoin', this);
}
onTransferStart() {
this.isEchoTest = false;
this.isConnecting = true;
}
onAudioExit() {
this.isConnected = false;
this.isConnecting = false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment