Field | Description |
free | Idle: Agent is online at their workstation but not currently engaged in a call. |
busy | In Call: Agent is handling an inbound or outbound call and will not receive new call assignments during this time. |
arrange | After-Call Work (ACW): Admins can set a wrap-up timer for agents to organize notes, during which no new calls are assigned. |
notReady | Busy: agent will not receive new inbound calls, but can make outbound calls. |
rest | On Break: agents can select a break reason such as "Meal," "Meeting," or "Training" (reasons are configured by the admin in the Management Panel). |
Field | Description |
staffSeat | Web agent to make and answer calls through the web server. |
staffPhoneSeat | Agent who make and answer calls through mobile device. |
miniProgramSeat | Agent who make and answer calls through wechat mini-program. |
staffExtensionSeat | Agent who make and answer calls through SIP phone device. |
Parameter | Type | Required | Remarks | |
options | status | 'success' |'error' | Yes | Result of SDK API call. Returns 'success' on success, and 'error' on failure. |
| errorMsg | string | No | Error message, returned when status is 'error' |
Parameter | Type | Required | Remarks | |
options | phoneNumber | String | Yes | Callee Number |
| phoneDesc | String | No | Number remarks, which will replace the number displayed in the call bar |
| uui | String | No | |
| skillGroupId | String | No | Skill group ID associated with outbound call number. |
| callerPhoneNumber | String | No | Number that uses to make outbound call. |
| servingNumberGroupIds | String[] | No | Number ID list |
| phoneEncodeType | 'number' | No | Currently, only 'number' is supported, forcing the use of actual numbers when number mapping is enabled. |
Parameter | Type | Required | Remarks | |
response | sessionId | String | Yes | Session ID |
| calleeLocation | String | No | Callee number location |
| calleePhoneNumber | String | Yes | Callee Number |
| callerPhoneNumber | String | Yes | Caller Number that is used to make the outbound call |
| serverType | String | Yes | Service Endpoint Type: Describes the type of agent device used during call sessions. Enum value: staffSeat, staffPhoneSeat, and staffExtensionSeat. For details, see Session Service Type. |
| remark | String | No | Callee number remarks |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID, obtained from the tccc.events.callIn event |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | calleeUserId | String | Yes | Agent account (Callee Side) |
| useMobile | Boolean | No | Whether to call agent mobile or not |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| skillGroupId | String | No | Transfers to a specified skill group. |
| userId | String | No | Transfers to a specified agent. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | |
| textOnly | Boolean | No | The default is false, which means audio monitoring is initiated. Set it to true to enable text monitoring instead. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session has been taken over (intercepted) by Admin. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| dtmfText | String | No | The extension number to be sent |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| skillGroupId | String | No | Transfers to a specified skill group. |
| userId | String | No | Transfers to a specified agent. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| skillGroupId | String | No | Transfers to a specified skill group. |
| userId | String | No | Transfers to a specified agent. |
Parameter | Type | Required | Remarks | |
options | status | String | Yes | Agent status, valid values: free: Idle, available to start service rest: On break arrange: After-call-work notReady: Busy stopNotReady: Stops showing busy |
| restReason | String | No | Break Reason |
Parameter | Type | Required | Remarks | |
settings | disableRingtone | Boolean | No | true means disable SDK's ringtones (e.g., inbound call and answer tones). |
| disableNotification | Boolean | No | true means disable SDK system notifications |
Callback Parameter | Type | Required | Remarks | |
options | tabUUID | String | Yes | A unique ID for the current page that changes after refresh, used for multi-tab SDK integration. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| type | 'phone' | Yes | Type of voice session (e.g., Web, mobile, sip phone calls) |
| timeout | Number | Yes | Session connection timeout duration, (0 means no timeout is applied) |
| calleePhoneNumber | String | Yes | Callee Number |
| callerPhoneNumber | String | No | Caller Number |
| callerLocation | String | No | Caller number location |
| remark | String | No | Remarks |
| ivrPath | {key: String, label: String}[] | - | User IVR path: KEY represents the key pressed at each node, and LABEL represents the label for the key. |
| protectedCallee | String | No | When admin enables number masking to protect real numbers, the masked number will be shown in this field for the callee. |
| protectedCaller | String | No | When admin enables number masking to protect real numbers, the masked number will be shown in this field for the caller. |
| serverType | 'staffSeat' | 'staffPhoneSeat' | 'staffExtensionSeat' | Yes | Indicates the device used by the agent to answer incoming calls: 1) staffSeat (default): Web agent. 2) StaffPhoneSeat: Agent's mobile phone. 3) MiniProgramSeat: Mini Program agent. 4) staffExtensionSeat: Agent's linked desk phone. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| type | 'phone' | Yes | Type of voice session (e.g., Web, mobile, sip phone calls) |
| timeout | Number | Yes | Session connection timeout duration, (0 means no timeout is applied) |
| nickname | String | Yes | User's nickname |
| avatar | String | No | User's profile photo |
| remark | String | No | Remarks |
| peerSource | String | No | Channel Source |
| channelName | String | No | Custom parameter |
| clientData | String | No | User-defined parameter |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| type | 'voip' | Yes | Audio session type |
| timeout | Number | Yes | Session connection timeout duration, (0 means no timeout is applied) |
| callee | String | Yes | Channel |
| calleeRemark | String | No | Channel remarks |
| userId | String | Yes | User's openId |
| nickname | String | No | Users will get a WeChat nickname after authorization. |
| avatar | String | No | Users will receive a WeChat profile photo after authorization. |
| remark | String | No | Remarks |
| peerSource | String | No | Caller number location |
| ivrPath | {key: String, label: String}[] | No | User IVR path: KEY represents the key pressed at each node, and LABEL represents the label for the key. |
| clientData | String | No | User-defined parameter |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| type | 'video' | Yes | Video session type |
| timeout | String | Yes | Session connection timeout duration, (0 means no timeout is applied) |
| userId | String | Yes | User's openId |
| nickname | String | No | Users will get a WeChat nickname after authorization. |
| avatar | String | No | Users will receive a WeChat profile photo after authorization. |
| remark | String | No | Remarks |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| type | 'internal' | Yes | Internal session type |
| timeout | Number | Yes | Session connection timeout duration, (0 means no timeout is applied) |
| peerUserId | String | Yes | Caller's account |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| tabUUID | String | No | Present in multi-tab integration, it indicates which tab the agent used to answer. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| closeBy | String | Yes | Indicates the hang-up party: client: Hang up by user seat: Hang up by agent admin: Hang up by system timer: Hang up by timer |
| mainReason | String | No | This is only applied in voice call, present when the disconnector is "admin," indicating the reason for the hung up. |
| subReason | String | No | This is only applied in voice call, present when the disconnector is "admin," indicating the detailed reason for the hung up. |
Callback Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
| callerPhoneNumber | String | Yes | Caller number used for making an outbound call |
| calleePhoneNumber | String | Yes | Callee Number |
| serverType | 'staffSeat' | 'staffPhoneSeat' | 'staffExtensionSeat' | 'MiniProgramSeat' | Yes | Indicates agent uses what device to make outbound calls: `staffSeat` - default value, indicating agent is using web browser to make calls. StaffPhoneSeat indicates using mobile outbound call MiniProgramSeat indicates using mini program outbound call staffExtensionSeat indicates using the phone for outbound calls |
| tabUUID | String | No | Once multi-tab integration turned on, it indicates which tab the agent used to answer. |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | |
options | sessionId | String | Yes | Session ID |
Parameter | Type | Required | Remarks | | |
options | status | No | |
Parameter | Type | Required | Remarks | | |
options | sessionId | String | Yes | Session ID | |
| result | ASR recognition result | Yes | | |
| flow | 'IN' | 'OUT' | Yes | Recognition direction IN: User side OUT: Agent side | |
function injectTcccWebSDK(SdkURL) {if (window.tccc) {console.warn('The SDK has been initialized. Please confirm whether the initialization is being executed repeatedly');return;}return new Promise((resolve, reject) => {const script = document.createElement('script');script.setAttribute('crossorigin', 'anonymous');script.src = SdkURL;/** Add enableShared to enable multi-tab feature*/script.dataset.enableShared = 'true'document.body.appendChild(script);script.addEventListener('load', () => {window.tccc.on(window.tccc.events.ready, ({ tabUUID }) => {resolve('Initialization succeeded, current tabUUID is ' + tabUUID)});window.tccc.on(window.tccc.events.tokenExpired, ({message}) => {console.error('Initialization failed', message)reject(message)})})})}
let curTabUUID = '';window.tccc.on(window.tccc.events.ready, ({ tabUUID }) => {console.log('Initialization succeeded, current tabUUID is ' + tabUUID)curTabUUID = tabUUID;});window.tccc.on(window.tccc.events.callOuted, ({ sessionId, tabUUID }) => {if (tabUUID && tabUUID !== curTabUUID) {// Received outbound call success event from another page, business logic can handle it}})window.tccc.on(window.tccc.events.userAccessed, ({ sessionId, tabUUID }) => {if (tabUUID && tabUUID !== curTabUUID) {// Received call answered event from another page, business logic can handle it// This is sample code, this event will be ignoredreturn;}})