Audio Device Selection
Audio Device Selection
The Twilio Client element can enumerate the browser's audio devices and let your users choose which microphone and speaker to use. On initialization (after microphone permission is granted) the element populates the device-list states; you bind those to dropdowns and feed the chosen id back into the element.
Output (speaker) selection relies on the browser's setSinkId API and is not supported in every browser. Check the Output Device Supported state before showing a speaker picker.
Element fields
Selected input device id
The deviceId of the microphone to use. Set this from the user's dropdown selection.
Selected output device id
The deviceId of the speaker to use.
Device-list states
The Input devices and Output devices states are lists of text, each entry formatted as label - deviceId. Bind a dropdown's option list to the state, and when the user picks an option, extract the id after the last - and write it to the matching Selected … device id field.
Input devices
list of text
Available microphones (label - deviceId).
Output devices
list of text
Available speakers (label - deviceId).
Output Device Supported
yes/no
Whether the browser supports choosing an output device.
Debugging selection (requested vs applied)
When a selection doesn't seem to take effect, these states show what the element requested versus what the browser actually applied:
Requested Input Device Id
text
The input id the element tried to apply.
Applied Input Device Id
text
The input id currently in effect.
Requested Output Device Id
text
The output id the element tried to apply.
Applied Output Device Id
text
The output id currently in effect.
Output Device Applied
yes/no
Whether the requested output device was applied.
Output Device Error
text
Any error raised while applying an output device.
Device Selection Debug
text
Human-readable trace of the last device-selection attempt.
If Requested and Applied differ, the browser rejected the change — often because the device was unplugged, the id is stale (re-enumerate on devicechange), or output selection isn't supported. See Troubleshooting.