Bonjour,
J’essaie de créer une conférence d’appel audio.
J’ai deux appels que je stock dans un objet callSessions
et j’ai un objet de mon appel actif dans callSession
callSessions = {
5trjkpi2f30v553292lm: {
answerTime: Date Tue Nov 21 2023 09:16:21 GMT+0100 (heure normale d’Europe centrale)
answeredBySystem: undefined
autoAnswer: false
call: undefined
callId: undefined
callerNumber: undefined
cameraEnabled: false
conference: false
creationTime: Date Tue Nov 21 2023 09:16:15 GMT+0100 (heure normale d’Europe centrale)
dialedExtension: ""
displayName: "1006"
endTime: null
ignored: false
isCaller: true
muted: false
number: "1006"
paused: false
recording: false
recordingPaused: false
ringing: false
screensharing: false
sipCallId: "5trjkpi2f30v553292lm"
sipSession: Object { pendingReinvite: false, pendingReinviteAck: false, _state: "Established", … }
sipStatus: "Established"
startTime: Date Tue Nov 21 2023 09:16:15 GMT+0100 (heure normale d’Europe centrale)
type: "CallSession"
videoMuted: false
videoRemotelyDowngraded: undefined
},
5trjkf8fv5o58ko3thoi: {
answerTime: Date Tue Nov 21 2023 09:16:35 GMT+0100 (heure normale d’Europe centrale)
answeredBySystem: undefined
autoAnswer: false
call: undefined
callId: "5trjkf8fv5o58ko3thoi"
callerNumber: undefined
cameraEnabled: false
conference: false
creationTime: Date Tue Nov 21 2023 09:16:30 GMT+0100 (heure normale d’Europe centrale)
dialedExtension: ""
displayName: "1005"
endTime: null
ignored: false
isCaller: true
muted: false
number: "1005"
paused: false
recording: false
recordingPaused: false
ringing: false
screensharing: false
sipCallId: "5trjkf8fv5o58ko3thoi"
sipSession: Object { pendingReinvite: false, pendingReinviteAck: false, _state: "Established", … }
sipStatus: "Established"
startTime: Date Tue Nov 21 2023 09:16:30 GMT+0100 (heure normale d’Europe centrale)
type: "CallSession"
videoMuted: false
videoRemotelyDowngraded: undefined
}
}
mon appel actif
callSession = {
answerTime: Date Tue Nov 21 2023 09:16:35 GMT+0100 (heure normale d’Europe centrale)
answeredBySystem: undefined
autoAnswer: false
call: undefined
callId: undefined
callerNumber: undefined
cameraEnabled: false
conference: false
creationTime: Date Tue Nov 21 2023 09:16:30 GMT+0100 (heure normale d’Europe centrale)
dialedExtension: ""
displayName: "1005"
endTime: null
ignored: false
isCaller: true
muted: false
number: "1005"
paused: false
recording: false
recordingPaused: false
ringing: false
screensharing: false
sipCallId: "5trjkf8fv5o58ko3thoi"
sipSession: Object { pendingReinvite: false, pendingReinviteAck: false, _state: "Established", … }
sipStatus: "Established"
startTime: Date Tue Nov 21 2023 09:16:30 GMT+0100 (heure normale d’Europe centrale)
type: "CallSession"
videoMuted: false
videoRemotelyDowngraded: undefined
}
ici, je récupère dans callSessions l’appel qui n’est pas identique à callSession (l’appel en cours) et le met dans un tableau
autreObjet = [
0: {
answerTime: Date Tue Nov 21 2023 09:16:21 GMT+0100 (heure normale d’Europe centrale)
answeredBySystem: undefined
autoAnswer: false
call: undefined
callId: undefined
callerNumber: undefined
cameraEnabled: false
conference: false
creationTime: Date Tue Nov 21 2023 09:16:15 GMT+0100 (heure normale d’Europe centrale)
dialedExtension: ""
displayName: "1006"
endTime: null
ignored: false
isCaller: true
muted: false
number: "1006"
paused: false
recording: false
recordingPaused: false
ringing: false
screensharing: false
sipCallId: "5trjkpi2f30v553292lm"
sipSession: Object { pendingReinvite: false, pendingReinviteAck: false, _state: "Established", … }
sipStatus: "Established"
startTime: Date Tue Nov 21 2023 09:16:15 GMT+0100 (heure normale d’Europe centrale)
type: "CallSession"
videoMuted: false
videoRemotelyDowngraded: undefined
}
]
lorsque je fais:
callSession.getTalkingToIds()
, j’obtiens un tableau vide
et
callSession.callId: undefined
j’utilise donc ce code
const merge2Calls = async () => {
let adHocConference;
// if callSessions = 2 add second call
if(Object.keys(callSessions).length === 2) {
let autreObjet = Object.values(callSessions).find(objet => objet !== callSessions[callSession.getId()]);
adHocConference = await Wazo.Phone.startConference(callSession.sipSession._id, [autreObjet]);
}
si je mets:
adHocConference = await Wazo.Phone.startConference(callSession, [autreObjet]);
cela me dit
host_call_id [ “Missing data for required field.” ]
Si je met
callSession.callId = callSession.sipSession._id
cela me renvoi l’erreur
TypeError: cyclic object value
quand je regarde le code source, j’ai
async startConference(host: CallSession, otherCalls: CallSession[]): Promise<AdHocAPIConference> {
const participants = [host, ...otherCalls].reduce((acc: Record<string, any>, participant: CallSession) => {
acc[participant.getTalkingToIds()[0]] = participant;
return acc;
}, {});
if (!this.phone) {
return Promise.reject();
}
const adHocConference = new AdHocAPIConference({
phone: this.phone,
host,
participants,
});
return adHocConference.start();
}
et participant.getTalkingToIds()[0] renvoi
“TypeError: participant.getTalkingToIds is not a function”
Il aurait fallu avoir participant[0].getTalkingToIds() mais cela me renvoi un tableau vide
Pouvez-vous m’aider à comprendre comment utiliser la fonction ?
merci !!