Client Methods
The RTVI clients expose a number of core methods. These are documented below.
RTVI implementations will often publish helper libraries that extend the core client with additional methods and events. For more on helpers, see here.
Session connectivity
connect()
Promise<void>
Connect to a real-time session with your bot. This method sends a web request baseUrl
+ endpoints.connect
and passes the response your transport class.
A server-side connect endpoint will typically:
- Authenticate / configure the connect request.
- Initialize the bot process.
- Return a the necessary authentication tokens and configuration to the client’s transport class.
Calling connect()
asynchronously will resolve when the bot and client signal
that they are ready. See messages and events. If you want to
call connect()
without await
, you can use the onBotReady
callback or
BotReady
event to know when you can interact with the bot.
Attempting to call connect()
when the transport is not in a ‘connected’
state will throw an error. You should disconnect from a session
first before attempting to connect again.
This method can be try / catched to handle errors at startup:
disconnect()
Disconnects from the active session and reinitialzie the transport.
For most bots that implement the RTVI standard the bot will exit and cleanup when the client disconnects.
Bot configuration
Methods to query and update the configuration of the bot the client is connected to.
See: configuration.
getBotConfig()
Promise<RTVIClientConfigOption[]>
Returns a Promise that resolves with the bot’s current configuration.
A typical config might look like this.
The client’s current config state can be accessed with rtviClient.getConfig
. This property is hydrated with the bot’s config after connect()
is called, and after any updateConfig
request.
updateConfig()
Promise<RTVIMessage>
Update the bot’s config. Passing a partial config is fine. Only the individual options that are passed to the updateConfig()
call will be updated. You can omit any services or options within a service that you don’t want to change.
Returns a Promise that resolves with the full updated configuration.
On resolve, will trigger the onConfigUpdate
callback and ConfigUpdated
event.
On reject, will trigger the onMessageError
callback and MessageError
event.
rtviClientConfigOption[]
partial object with the new configuration
Should the new config be immediately applied (interrupting the bot), or wait until the current pipeline turn concludes.
describeConfig()
Promise<unknown>
Describe the shape of available config options for the bot the client is connected to.
Returns a Promise that resolve’s with the bot’s configuration description.
getServiceOptionsFromConfig()
rtviClientConfigOption | undefined
Config helper method that returns configuration options for specified service key.
If connected, this method will first call getConfig
to get the latest config from the bot. If not connected, it will expect a config
array to be passed.
Service key / string identifier e.g. llm
Optional RTVIClientConfigOption[]
to query (vs. using remote config). This
can be useful when working with configuration arrays before connecting to a
bot.
Returns new instance (copy) of the service options array.
Returns undefined when an invalid service key is provided.
getServiceOptionValueFromConfig()
unknown | undefined
Returns configuration option value (unknown) for specified service key and option name. As with getServiceOptionsFromConfig
, this method will first call getConfig
to get the latest config from the bot if connected, or expect a config
array to be passed.
Service key / string identifier e.g. llm
Service option to retrieve e.g. model
Optional RTVIClientConfigOption[]
to query (vs. using remote config). This
can be useful when working with configuration arrays before connecting to a
bot.
Returns new instance (copy) of the service options array.
Returns undefined when an invalid service key or unknown option value is provided.
setServiceOptionInConfig()
Promise<RTVIClientConfigOption[] | undefined>
Config helper method that sets a new value for a service option in the config. Returns new instance of config with updated option(s) for specified service key and option name.
Note: does not update current config, only returns a new object (call updateConfig to apply changes).
Service key / string identifier e.g. llm
Service option value to update, or array of service options.
Config object to update, otherwise uses a clone of the current bot config by
called getConfig
config.
You can pass a single ConfigOption
object…
…or an array of ConfigOption
objects.
You can pass an optional config object to update, otherwise calls getConfig
to get the latest config from the bot if in ready state. Returns new instance (copy) of the client config.
setConfigOptions()
Promise<RTVIClientConfigOption[]>
Config helper method that sets new values for multiple service options in the config.
Convenience method for calling setServiceOptionInConfig
multiple times.
You can pass an optional config object to update, otherwise calls getConfig
to get the latest config from the bot if in ready state. Returns new instance (copy) of the client config.
Note: does not update current config, only returns a new object (call updateConfig to apply changes).
Array of service options to update.
Config object to update (if not provided, calls getConfig
to get the latest
bot configuration.)
Messages
Dispatches a RTVIMessage
data object to the bot.
See: messages and events.
sendMessage()
An RTVIMessage
object containing the type of message and data object to
dispatch.
Messages are sychronous events that are dispatched to the bot. They do not return a Promise and cannot be awaited.
See messages for more information.
Actions
Dispatches a service-specific action to the bot.
See: actions.
describeActions()
Promise<unknown>
Describe the actions implemented by the bot that the client is connected to.
Returns a Promise that resolves with the bot’s actions description.
action()
Promise<RTVIActionResponse>
Dispatch an action message to the bot.
What actions a bot responds to depend on on how your bot has been configured. RTVI defines an actions protocol, but does not define any specific actions. Helper libraries will often install convenience methods that make it less verbose (and more type-safe) to call actions.
The action to dispatch.
Returns Promise<RTVIActionResponse>
.
Devices
initDevices()
Initialize the media device selection machinery in the web browser. This method can be called before connect()
to test and switch between camera and microphone sources.
getAllMics()
Returns a list of available microphones in the form of MediaDeviceInfo[]
.
getAllCams()
Returns a list of available cameras in the form of MediaDeviceInfo[]
.
updateMic()
Switches to the microphone identified by the provided micId
, which should map a deviceId
in the list returned from getAllMics()
.
deviceId
updateCam()
Switches to the camera identified by the provided camId
, which should map a deviceId
in the list returned from getAllCams()
.
deviceId
enableMic(enable: boolean)
Turn on or off (unmute or mute) the client mic input.
enableCam(enable: boolean)
Turn on or off the client cam input.
Tracks (audio and video)
tracks()
Returns available MediaStreamTrack
objects for both the client and the bot.