Web

最近更新时间:2024-08-22 16:35:21

我的收藏
注意:
TCCC 是加载 SDK 后的全局变量,可直接访问。

通用结构

AgentStatus

座席状态。
字段
描述
free
空闲
busy
忙碌
arrange
话后整理
notReady
示忙
rest
小休

ServerType

端服务类型,描述电话类型会话时使用的端类型。
字段
描述
staffSeat
Web 座席类型
staffPhoneSeat
座席手机类型
miniProgramSeat
小程序类型
staffExtensionSeat
话机类型

CommonSDKResponse

参数
类型
必填
备注
options
status
'success' |'error'
SDK API 调用结果,成功时返回 success,失败返回 error
errorMsg
string
错误信息,当 status 为 error 时返回

Call(电话客服和音频客服相关接口函数)

电话呼出

tccc.Call.startOutboundCall(options): Promise<CallResponse>

参数
类型
必填
备注
options
phoneNumber
String
被叫号码
phoneDesc
String
号码备注,在通话条中会替代号码显示
uui
String
用户自定义数据,传入后可通过 电话 CDR 事件 推送返回
skillGroupId
String
指定技能组内绑定的外呼号码
callerPhoneNumber
String
指定外呼号码
servingNumberGroupIds
String[]
指定号码 ID 列表
phoneEncodeType
'number'
目前仅支持 'number',在开启 号码映射 时强制使用真实号码
CallResponse 描述如下:
参数
类型
必填
备注
response
sessionId
String
指定会话 ID
calleeLocation
String
被叫号码归属地址
calleePhoneNumber
String
被叫号码
callerPhoneNumber
String
外呼时使用的主叫号码
serverType
String
表示外呼时使用的端类型,可选值有:staffSeat,staffPhoneSeat,staffExtensionSeat。详细说明参见 会话服务类型
remark
String
被叫号码备注

接听会话

tccc.Call.accept(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID,从 tccc.events.callIn 事件中获取

挂断会话

tccc.Call.hungUp(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

删除会话

tccc.Call.deleteCall(options)

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

静音

tccc.Call.muteMic(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

取消静音

tccc.Call.unmuteMic(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

当前是否静音

tccc.Call.isMicMuted(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

发起内部通话

tccc.Call.startInternalCall(): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
calleeUserId
String
被叫座席账号
useMobile
Boolean
是否呼叫对方手机

转接会话

tccc.Call.transfer(): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID
skillGroupId
String
转接到指定技能组
userId
String
转接到指定座席

呼叫保持

tccc.Call.hold(): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

取消通话保持

tccc.Call.unHold(): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

发送分机号

tccc.Call.sendDigits(): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID
dtmfText
String
需要发送的分机号

Chat(在线客服相关接口函数)

接听会话

tccc.Chat.accept(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

结束会话

tccc.Chat.end(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

转接会话

tccc.Chat.transfer(): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID
skillGroupId
String
转接到指定技能组
userId
String
转接到指定座席

Video(视频客服相关接口函数)

接听会话

tccc.Video.accept(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

挂断会话

tccc.Video.end(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

静音

tccc.Video.muteMic(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

取消静音

tccc.Video.unmuteMic(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

关闭摄像头

tccc.Video.muteVideo(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

开启摄像头

tccc.Video.unmuteVideo(options): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID

转接会话

tccc.Video.transfer(): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
sessionId
String
指定会话 ID
skillGroupId
String
转接到指定技能组
userId
String
转接到指定座席

Agent(座席状态相关接口函数)

更多座席状态枚举类型请参见 座席状态

上线

tccc.Agent.online(): void

下线

tccc.Agent.offline(): void

设置座席状态

tccc.Agent.setStatus(optoins): Promise<CommonSDKResponse>

参数
类型
必填
备注
options
status
String
座席状态,可选值:
free:空闲
rest:小休
arrange:话后整理
notReady:示忙
stopNotReady:停止示忙
restReason
String
小休原因

获取座席状态

tccc.Agent.getStatus():AgentStatus

Devices(设备相关接口函数)

检测当前浏览器是否支持

tccc.Devices.isBrowserSupported(): boolean

说明:
TCCC Web SDK 支持 Chrome 56、Edge 80以上的浏览器。

返回麦克风设备列表

tccc.Devices.getMicrophones(): Promise<MediaDeviceInfo []>

返回扬声器设备列表

tccc.Devices.getSpeakers(): Promise<MediaDeviceInfo []>

UI(座席界面相关接口函数)

隐藏 SDK 所有 UI

tccc.UI.hide(): void

显示 SDK 所有 UI

tccc.UI.show(): void

显示浮动按钮

tccc.UI.showfloatButton(): void

隐藏浮动按钮

tccc.UI.hidefloatButton(): void

显示工作台

tccc.UI.showWorkbench(): void

隐藏工作台

tccc.UI.hideWorkbench(): void

显示通话条

tccc.UI.showNotificationBar(): void

隐藏通话条

tccc.UI.hideNotificationBar(): void

修改SDK本地设置

支持关闭SDK铃声和系统通知

tccc.UI.updateUserCustomSettings(settings): void

settings内参数都是可选项,支持增量更新
参数
类型
必填
备注
settings
disableRingtone
Boolean
true 表示禁用 SDK 的铃声,包括来电铃声、接听铃声
disableNotification
Boolean
true 表示禁用 SDK 的系统通知

Events(事件)

事件监听

tccc.on(event, callback)

取消事件监听

tccc.off(event, callback)

SDK 初始化完成

tccc.events.ready

当 SDK 初始化完成时触发,此时可安全调用API
callback 参数
类型
必填
备注
options
tabUUID
String
表示当前页面的唯一 ID,刷新后会变,用于多 Tab 集成 SDK

会话呼入

tccc.events.callIn

会话呼入类型包括:
phone:电话会话
im:在线会话
voip:音频会话
video:视频会话
internal:内线会话

电话会话呼入

callback 参数
类型
必填
备注
options
sessionId
String
会话 ID
type
'phone'
电话会话类型
timeout
Number
会话接入超时时长,0代表不超时
calleePhoneNumber
String
被叫号码
callerPhoneNumber
String
主叫号码
callerLocation
String
主叫号码归属地
remark
String
备注
ivrPath
{key: String, label: String}[]
-
用户的 IVR 按键路径,key 表示对应按键,label 表示对应的按键标签
protectedCallee
String
在开启号码映射时存在,表示被叫
protectedCaller
String
在开启号码映射时存在,表示主叫
serverType
'staffSeat' | 'staffPhoneSeat' | 'staffExtensionSeat'
表示呼入到座席哪一端,staffSeat 为默认值,表示 Web 座席;StaffPhoneSeat 表示呼入到座席手机,MiniProgramSeat 表示小程序座席,staffExtensionSeat 表示呼入到座席绑定的话机

在线会话呼入

callback 参数
类型
必填
备注
options
sessionId
String
会话 ID
type
'phone'
电话会话类型
timeout
Number
会话接入超时时长,0代表不超时
nickname
String
用户昵称
avatar
String
用户头像
remark
String
备注
peerSource
String
渠道来源
channelName
String
自定义参数
clientData
String
用户自定义参数

音频会话呼入

callback 参数
类型
必填
备注
options
sessionId
String
会话 ID
type
'voip'
音频会话类型
timeout
Number
会话接入超时时长,0代表不超时
callee
String
渠道入口
calleeRemark
String
渠道入口备注
userId
String
用户的 openId
nickname
String
用户授权后可获得微信昵称
avatar
String
用户授权后可获得微信头像
remark
String
备注
peerSource
String
主叫号码归属地
ivrPath
{key: String, label: String}[]
用户的 IVR 按键路径,key 表示对应按键,label 表示对应的按键标签
clientData
String
用户自定义参数

视频会话呼入

callback 参数
类型
必填
备注
options
sessionId
String
会话 ID
type
'video'
视频会话类型
timeout
String
会话接入超时时长,0代表不超时
userId
String
用户的 openId
nickname
String
用户授权后可获得微信昵称
avatar
String
用户授权后可获得微信头像
remark
String
备注

内部会话呼入

callback 参数
类型
必填
备注
options
sessionId
String
会话 ID
type
'internal'
内部会话类型
timeout
Number
会话接入超时时长,0代表不超时
peerUserId
String
主叫座席的账号

座席接入会话

tccc.events.userAccessed

callback 参数
类型
必填
备注
options
sessionId
String
指定会话 ID
tabUUID
String
开启多Tab集成时存在,表示哪个Tab接听的会话

会话超时转接事件

tccc.events.autoTransfer

callback 参数
类型
必填
备注
options
sessionId
String
指定会话 ID

会话结束事件

tccc.events.sessionEnded

callback 参数
类型
必填
备注
options
sessionId
String
指定会话 ID
closeBy
String
表示挂断方:
client:用户挂断
seat:座席挂断
admin:系统挂断
timer:定时器挂断
mainReason
String
仅在电话类型,并且挂断方为"admin"时存在,表示挂断原因
subReason
String
仅在电话类型,并且挂断方为"admin"时存在,表示挂断的详细原因

外呼成功事件

tccc.events.callOuted

callback 参数
类型
必填
备注
options
sessionId
String
指定会话 ID
callerPhoneNumber
String
外呼使用的主叫号码
calleePhoneNumber
String
被叫号码
serverType
'staffSeat' | 'staffPhoneSeat' | 'staffExtensionSeat' |
'MiniProgramSeat'
表示座席外呼类型:
staffSeat 为默认值,表示 Web 座席
StaffPhoneSeat 表示使用手机外呼
MiniProgramSeat 表示使用小程序外
staffExtensionSeat 表示使用话机外呼
tabUUID
String
开启多Tab集成时存在,表示哪个Tab发起的外呼

外呼对方接听事件

tccc.events.calloutAccepted

callback 参数
类型
必填
备注
options
sessionId
String
指定会话 ID

会话转接事件

tccc.events.transfer

callback 参数
类型
必填
备注
options
sessionId
String
指定会话 ID

座席状态变更事件

tccc.events.statusChanged

callback 参数
类型
必填
备注

options
status
详细说明请参见 座席状态


座席被踢下线事件

tccc.events.kickedOut

座席多端登录时触发。

语音识别事件

tccc.events.asr

callback 参数
类型
必填
备注

options
sessionId
String
指定会话 ID

result
ASR识别结果
语音识别结果,结构体请参见 文档

flow
'IN' | 'OUT'
识别方向
IN:用户侧
OUT:座席侧


多Tab集成SDK

默认情况下,TCCC Web SDK只允许在一个地方登录,多处登录会触发kickedOut事件。开启多Tab功能后,任意一个页面发起的通话,都会在其他页面显示,开发者可根据业务逻辑自行隐藏UI,或者监听对应事件处理

限制条件

1. 同一个浏览器的多个窗口,注意不能开启无痕模式
2. SDK集成在业务系统处于同一个域名
3. 不支持移动端浏览器

集成步骤

1. 初始化SDK,参考Web
2. 增加enableShared参数,表示启用多Tab功能
function injectTcccWebSDK(SdkURL) {
if (window.tccc) {
console.warn('已经初始化SDK了,请确认是否重复执行初始化');
return;
}
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.setAttribute('crossorigin', 'anonymous');
script.src = SdkURL;
/*
* 增加enableShared,表示启用多Tab功能
*/
script.dataset.enableShared = 'true'
document.body.appendChild(script);
script.addEventListener('load', () => {
window.tccc.on(window.tccc.events.ready, ({ tabUUID }) => {
resolve('初始化成功,当前tabUUID为' + tabUUID)
});
window.tccc.on(window.tccc.events.tokenExpired, ({message}) => {
console.error('初始化失败', message)
reject(message)
})
})
})
}
3. 处理多Tab逻辑
触发callOuted(外呼成功)和userAccessed(座席接听成功)事件时,会增加tabUUID字段,表示哪个页面发起的外呼/接听
let curTabUUID = '';

window.tccc.on(window.tccc.events.ready, ({ tabUUID }) => {
console.log('初始化成功,当前tabUUID为' + tabUUID)
curTabUUID = tabUUID;
});

window.tccc.on(window.tccc.events.callOuted, ({ sessionId, tabUUID }) => {
if (tabUUID && tabUUID !== curTabUUID) {
// 接收到其他页面的外呼成功事件,业务可自行处理
}
})

window.tccc.on(window.tccc.events.userAccessed, ({ sessionId, tabUUID }) => {
if (tabUUID && tabUUID !== curTabUUID) {
// 接收到其他页面的接听成功事件,业务可自行处理
// 此处为示例代码,会忽略该事件
return;
}
})