Types - Cognigy Documentation
WebRTCClientConfig
The configuration object passed to createWebRTCClient().
interface WebRTCClientConfig {
endpointUrl: string;
userId?: string;
captureAudio?: boolean;
pcConfig?: RTCConfiguration;
}
| Property | Type | Description | Required |
|---|---|---|---|
endpointUrl |
string |
URL to fetch SIP configuration from the Cognigy Voice Gateway Endpoint. | Yes |
userId |
string |
Optional user identifier for the session. | No |
captureAudio |
boolean |
When set to true, the SDK emits the captureAudio event with the remote MediaStream during a call. Defaults to false. |
No |
pcConfig |
RTCConfiguration |
Custom WebRTC peer connection configuration. Use this to specify STUN/TURN servers or other RTCPeerConnection settings. |
No |
WebRTCClient
The main client interface returned by createWebRTCClient(). Provides all call control, state query, and event handling methods.
| Method | Reference |
|---|---|
connect() |
connect |
disconnect() |
disconnect |
connectAndCall() |
connectAndCall |
startCall() |
startCall |
endCall() |
endCall |
mute() |
mute |
unmute() |
unmute |
sendInfo() |
sendInfo |
isConnected() |
isConnected |
getCurrentSession() |
getCurrentSession |
on() |
on |
off() |
off |
destroy() |
destroy |
CallSession
Represents an active call session.
interface CallSession {
id: string;
status: SessionStatus;
direction: 'incoming' | 'outgoing';
startTime: Date;
answerTime?: Date;
duration: number;
muted: boolean;
localHold: boolean;
remoteHold: boolean;
}
| Property | Type | Description |
|---|---|---|
id |
string |
Unique identifier for the call session. |
status |
SessionStatus |
Current session status: 'init', 'ringing', 'answered', 'failed', or 'ended'. |
direction |
`'incoming' | 'outgoing'` |
startTime |
Date |
Timestamp when the session was created. |
answerTime |
`Date | undefined` |
duration |
number |
Call duration in seconds since the call was answered. |
muted |
boolean |
Whether the local microphone is muted. |
localHold |
boolean |
Whether the call is on hold locally. |
remoteHold |
boolean |
Whether the call is on hold by the remote party. |
SessionStatus
type SessionStatus = 'init' | 'ringing' | 'answered' | 'failed' | 'ended';
CallEndInfo
Contains information about why a call ended.
interface CallEndInfo {
originator: 'local' | 'remote' | null;
cause: string | null;
description?: string | null;
}
| Property | Type | Description |
|---|---|---|
originator |
`'local' | 'remote' |
cause |
`string | null` |
description |
`string | null |
Transcription Data
The transcription event emits the value of the _transcription property from incoming SIP INFO messages. The structure depends on your Cognigy Voice Gateway configuration, but typically has the following shape:
interface TranscriptionData {
messages: { text: string }[];
originator: 'user' | 'bot';
}
| Property | Type | Description |
|---|---|---|
originator |
string |
Indicates the source of the transcription, for example, 'user' or 'bot'. |
messages |
{ text: string }[] |
Array of message objects, each containing a text field. |
WebRTCClientEvents
Type map of all event names to their callback signatures. Use this for type-safe event handling. The following events are emitted by the client:
| Event | Callback Signature |
|---|---|
connecting |
() => void |
connected |
() => void |
disconnected |
() => void |
registered |
() => void |
unregistered |
() => void |
ringing |
(session: CallSession) => void |
answered |
(session: CallSession) => void |
ended |
(session: CallSession, endInfo: CallEndInfo) => void |
failed |
(session: CallSession, endInfo: CallEndInfo) => void |
muted |
(session: CallSession) => void |
unmuted |
(session: CallSession) => void |
audioEnded |
() => void |
infoSent |
(text: string, data: Record<string, any>) => void |
infoReceived |
(data: { originator: string, info: { body: string } }) => void |
transcription |
(transcription: { originator: string; messages: { text: string }[] }) => void |
error |
(error: Error) => void |
captureAudio |
(stream: MediaStream) => void |
import type { WebRTCClientEvents } from '@cognigy/click-to-call-sdk';
const handleAnswered: WebRTCClientEvents['answered'] = (session) => {
console.log('Call answered:', session.id);
};
client.on('answered', handleAnswered);
TypeScript Usage
The SDK is written in TypeScript and ships comprehensive type definitions. All interfaces and types can be imported directly:
import type {
WebRTCClient,
CallSession,
CallEndInfo,
WebRTCClientEvents
} from '@cognigy/click-to-call-sdk';
Type-Safe Event Handling
Use the WebRTCClientEvents type map for fully typed event callbacks:
const handleAnswered: WebRTCClientEvents['answered'] = (session) => {
console.log('Call answered:', session.id);
};
client.on('answered', handleAnswered);
Type-Safe Info Messages
When sending structured data via sendInfo(), you can define your data shape:
interface MyInfoData {
action: string;
payload: { key: string; value: number };
}
const data: MyInfoData = {
action: 'update',
payload: { key: 'score', value: 42 }
};
await client.sendInfo('custom-action', data);
Last modified on July 6, 2026.