Call Drops Playbook¶
Symptom: Calls disconnecting unexpectedly.
Hypotheses¶
| Hypothesis | Likely Cause | Evidence Tag |
|---|---|---|
| Network instability | Sudden loss of Wi-Fi or cellular connectivity | [Measured] |
| Token expiry during call | The user's access token expired while the call was active | [Observed] |
| SRTP timeout | Secure Real-time Transport Protocol session timed out | [Correlated] |
| Signaling failure | The WebSocket signaling connection was lost and could not be recovered | [Inferred] |
| Participant removed | An admin or another participant disconnected the user | [Observed] |
Evidence Collection¶
1. User Facing Diagnostics (UFD)¶
Look for no-network, call-ended, or network-disconnected events.
2. Log Analytics¶
Query the ACSCallSummaryEvents table for CallEndReason.
3. App Logs¶
Look for 401 Unauthorized or 403 Forbidden errors around the time of the call drop.
Validation¶
[Measured] Monitor Connection State¶
Check the CallConnectionState property in the SDK. If it transition from Connected to Disconnected without a user action, a drop occurred.
[Observed] Validate Token Expiration¶
Verify if the token expired during the call. If so, a new token should have been provided via the onTokenExpired event.
[Correlated] Identify Timeout Errors¶
Check for specific error codes like SignalingConnectionLost or MediaConnectionLost in the call summary logs.
Mitigation¶
- Implement Token Refresh: Use the
onTokenExpiredevent to refresh the token in the background and prevent session termination. - Handle Reconnection: Implement logic to automatically reconnect if the signaling connection is lost.
- Notify User: Use UFD to inform the user when their network is unstable and the call may be at risk of dropping.
- Log End Reasons: Collect and analyze the
CallEndReasonfrom the SDK to identify patterns of drops across users and regions. - Optimize Network: Advise users to use a stable Wi-Fi connection and avoid switching between networks during a call.
See Also¶
Sources¶
- Azure Communication Services Call Summary Events
- Handling Call Drops and Reconnection in the ACS SDK