Skip to content

Commit 07499c5

Browse files
authored
Update 5
1 parent 85220b1 commit 07499c5

File tree

1 file changed

+87
-5
lines changed

1 file changed

+87
-5
lines changed

articles/communication-services/concepts/voice-video-calling/includes/user-facing-diagnostics-web.md

Lines changed: 87 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ User Facing Diagnostics (UFD) are enabled to expose user-impacting events happen
2323
User Facing Diagnostics (UFD) enable you to see when local or remote participants are experiencing issues that affect audio-video call quality. UFD provides real-time diagnostics on network conditions, device functionality, and media performance. This diagnostic information helps developers identify problems such as poor connectivity, muted microphones, or low bandwidth. While UFDs doesn't automatically fix these issues, it enables applications to offer proactive feedback to users, suggesting solutions like checking their internet connection or adjusting device settings. Based on this data, users can either correct the issue themselves (such as turn-off video when the network is weak) or display the information through the User Interface.
2424

2525
There are some minor differences in using **remote UFDs** and **local UFDs**. Those differences are:
26-
- The calling SDK doesn't send all of the **remote UFDs** that are available to **local UFDs**.
26+
- The calling SDK doesn't send all of the **remote UFDs** that are available from a **local UFDs**.
2727
- The calling SDK only exposes and stream remote UFDs up to a maximum of 20 participants on the call. When the number of participants exceeds 20, we limit and cease transmission of **remote UFDs** to prevent overloading the network with these events.
2828
- The calling SDK filters so you only see three (3) **remote UFD** events per minute coming from a unique client.
2929
- From the client SDK perspective, you need to enable the functionality for the local UFDs to be sent remotely.
@@ -172,6 +172,11 @@ console.log(
172172
`value type = ${latestNetworkDiagnostics.noNetwork.valueType}`
173173
);
174174

175+
console.log(
176+
`networkRelaysNotReachable: ${latestNetworkDiagnostics.networkRelaysNotReachable.value}, ` +
177+
`value type = ${latestNetworkDiagnostics.networkRelaysNotReachable.valueType}`
178+
);
179+
175180
console.log(
176181
`networkReconnect: ${latestNetworkDiagnostics.networkReconnect.value}, ` +
177182
`value type = ${latestNetworkDiagnostics.networkReconnect.valueType}`
@@ -182,25 +187,72 @@ console.log(
182187
`value type = ${latestNetworkDiagnostics.networkReceiveQuality.valueType}`
183188
);
184189

190+
console.log(
191+
`networkSendQuality: ${latestNetworkDiagnostics.networkSendQuality.value}, ` +
192+
`value type = ${latestNetworkDiagnostics.networkSendQuality.valueType}`
193+
);
194+
185195
const latestMediaDiagnostics = userFacingDiagnostics.media.getLatest();
186196

197+
console.log(
198+
`noSpeakerDevicesEnumerated: ${latestMediaDiagnostics.noSpeakerDevicesEnumerated.value}, ` +
199+
`value type = ${latestMediaDiagnostics.noSpeakerDevicesEnumerated.valueType}`
200+
);
201+
187202
console.log(
188203
`speakingWhileMicrophoneIsMuted: ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.value}, ` +
189204
`value type = ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.valueType}`
190205
);
191206

192207
console.log(
193-
`cameraStartFailed: ${latestMediaDiagnostics.cameraStartFailed.value}, ` +
194-
`value type = ${latestMediaDiagnostics.cameraStartFailed.valueType}`
208+
`noMicrophoneDevicesEnumerated: ${latestMediaDiagnostics.noMicrophoneDevicesEnumerated.value}, ` +
209+
`value type = ${latestMediaDiagnostics.noMicrophoneDevicesEnumerated.valueType}`
195210
);
196211

197212
console.log(
198213
`microphoneNotFunctioning: ${latestMediaDiagnostics.microphoneNotFunctioning.value}, ` +
199214
`value type = ${latestMediaDiagnostics.microphoneNotFunctioning.valueType}`
200215
);
216+
217+
console.log(
218+
`microphoneMuteUnexpectedly: ${latestMediaDiagnostics.microphoneMuteUnexpectedly.value}, ` +
219+
`value type = ${latestMediaDiagnostics.microphoneMuteUnexpectedly.valueType}`
220+
);
221+
222+
console.log(
223+
`microphonePermissionDenied: ${latestMediaDiagnostics.microphonePermissionDenied.value}, ` +
224+
`value type = ${latestMediaDiagnostics.microphonePermissionDenied.valueType}`
225+
);
226+
227+
console.log(
228+
`cameraFreeze: ${latestMediaDiagnostics.cameraFreeze.value}, ` +
229+
`value type = ${latestMediaDiagnostics.cameraFreeze.valueType}`
230+
);
231+
232+
console.log(
233+
`cameraStartFailed: ${latestMediaDiagnostics.cameraStartFailed.value}, ` +
234+
`value type = ${latestMediaDiagnostics.cameraStartFailed.valueType}`
235+
);
236+
237+
console.log(
238+
`cameraStartTimedOut: ${latestMediaDiagnostics.cameraStartTimedOut.value}, ` +
239+
`value type = ${latestMediaDiagnostics.cameraStartTimedOut.valueType}`
240+
);
241+
242+
console.log(
243+
`cameraPermissionDenied: ${latestMediaDiagnostics.cameraPermissionDenied.value}, ` +
244+
`value type = ${latestMediaDiagnostics.cameraPermissionDenied.valueType}`
245+
);
246+
247+
console.log(
248+
`cameraStoppedUnexpectedly: ${latestMediaDiagnostics.cameraStoppedUnexpectedly.value}, ` +
249+
`value type = ${latestMediaDiagnostics.cameraStoppedUnexpectedly.valueType}`
250+
);
251+
252+
201253
```
202254

203-
Here's sample code to generate the latest Remote UFD value delivered to the calling SDK. If a diagnostic is undefined, it means the UFD hasn't been raised.
255+
Here's sample code to generate the latest Remote UFD value delivered to the calling SDK. If a diagnostic is undefined, it means the UFD hasn't been raised from the remote client SDK.
204256
```js
205257
const latestRemoteDiagnostics = userFacingDiagnostics.remote.getLatest();
206258

@@ -219,6 +271,11 @@ console.log(
219271
`value type = ${latestRemoteDiagnostics.networkReceiveQuality.valueType}`
220272
);
221273

274+
console.log(
275+
`networkSendQuality: ${latestRemoteDiagnostics.networkSendQuality.value}, ` +
276+
`value type = ${latestRemoteDiagnostics.networkSendQuality.valueType}`
277+
);
278+
222279
console.log(
223280
`cameraStartFailed: ${latestRemoteDiagnostics.cameraStartFailed.value}, ` +
224281
`value type = ${latestRemoteDiagnostics.cameraStartFailed.valueType}`
@@ -229,4 +286,29 @@ console.log(
229286
`value type = ${latestRemoteDiagnostics.microphoneNotFunctioning.valueType}`
230287
);
231288

232-
```
289+
console.log(
290+
`microphoneMuteUnexpectedly: ${latestRemoteDiagnostics.microphoneMuteUnexpectedly.value}, ` +
291+
`value type = ${latestRemoteDiagnostics.microphoneMuteUnexpectedly.valueType}`
292+
);
293+
294+
console.log(
295+
`cameraFreeze: ${latestRemoteDiagnostics.cameraFreeze.value}, ` +
296+
`value type = ${latestRemoteDiagnostics.cameraFreeze.valueType}`
297+
);
298+
299+
console.log(
300+
`cameraStartFailed: ${latestRemoteDiagnostics.cameraStartFailed.value}, ` +
301+
`value type = ${latestRemoteDiagnostics.cameraStartFailed.valueType}`
302+
);
303+
304+
console.log(
305+
`cameraStartTimedOut: ${latestRemoteDiagnostics.cameraStartTimedOut.value}, ` +
306+
`value type = ${latestRemoteDiagnostics.cameraStartTimedOut.valueType}`
307+
);
308+
309+
console.log(
310+
`cameraStoppedUnexpectedly: ${latestRemoteDiagnostics.cameraStoppedUnexpectedly.value}, ` +
311+
`value type = ${latestRemoteDiagnostics.cameraStoppedUnexpectedly.valueType}`
312+
);
313+
314+
```

0 commit comments

Comments
 (0)