1.0.54 • Published 4 months ago

emicnet-bs-sdk v1.0.54

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

易米 SDK

概述

将 bs 客户端所有通话相关的操作和消息推送整合在这 SDK 中。

安装

// or pnpm
npm i emicnet-bs-sdk

接口及使用方式

初始化 (init)

// 引入
import sdk from 'emicnet-bs-sdk'

// 参数及回调初始化
const { status, message } = sdk.init(params)
// message maybe is a ParamsError information

// or
sdk.init(params, ({ status, message }) => {})

init 参数说明

参数名称数据类型是否必须备注
paramsobject

params 参数说明

参数名称数据类型是否必须备注/说明可选值
seidstring超级企业 id
ccgeidstring子企业 id
uidstring坐席 id
tokenstring坐席登录 token
numberstring坐席分机号
modenumber坐席登录模式voip:2, sip:5, cb_extension: 4
timeoutnumber用于设置 http 请求的超时时间默认值为 5, 单位为秒
CMUrlstringCM 服务器地址
WSUrlstringwebsocket 服务器地址

示例代码

const { status, message } = sdk.init(params)

sdk.on('WSReady', ({ status, message }) => {})

sdk.init() 的返回值中,status === 1 代表初始化完成,不代表初始化成功。

初始化是否成功需要通过监听 sdk.on('WSReady', ({ status, message }) => {}), 判断 status 是否等于 1,status === 1 则代表 websocket 连接成功并使用传入的坐席信息通过了 websocket 服务器的验证,此时才是初始化成功。如果 status === 0,通过 message 可以得知原因。

message 的值包括 success,failed,disconnect,${ error }; success 表示连接上服务器并鉴权成功;failed 表示连接上服务器但是鉴权失败。

实例销毁 (destroy)

用于销毁当前的 SDK 实例。

sdk.destroy()

sdk.destroy() 内部的逻辑主要是释放内存和断连 websocket。

websocket 重连 (wsReconnect)

用于手动重新连接 websocket。

sdk.wsReconnect()

websocket 断连 (wsDisconnect)

用于手动断开 websocket 连接。

sdk.wsDisconnect()

token 更新(refreshToken)

用于更新在 sdk.init() 中传入的 token。

sdk.refreshToken(token)

参数说明

参数名称数据类型是否必须备注/说明
tokenstring

签入(checkIn)

用于将签入坐席。

try {
    const { code, data } = await sdk.checkIn(params)
    // code === 200 代表接口调用成功
    // data.data.status 是 CR 给的状态码 200 表示成功
    // data.data 是一个对象里面有当前坐席的状态信息
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
modenumber
numberstring
switchNumberstring
uniqueIdstring
callGroupIdstring
callGroupNamestring
deviceNumberstringmode 为 5 或者 4 时,是必须参数
preStatusIdnumber默认值为 2,即空闲
preStatusNamestring当以忙碌子状态签入时必传,固定为忙碌
preSubStatusIdnumber忙碌子状态id
preSubStatusNamestring忙碌子状态名称
autoAnswernumber默认值为 0,当为 1 时仅在mode 为 5 或者 4 时有效
callintype_lastnumber最后签入的呼叫类型
device_number_laststring最后签入的设备号码

签出(checkOut)

用于签出坐席。

try {
    const { code, data } = await sdk.checkOut(params)
    // code === 200 代表接口调用成功
    // data.data.status 是 CR 给的状态码 200 表示成功
    // data.data 是一个对象里面有当前坐席的状态信息
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
forceLogoutnumber可选值为 1 和 0,当为 1 时,表示强制签出。

置闲(setReady)

用于设置坐席为空闲状态。

try {
    const { code, data } = await sdk.setReady()
    // code === 200 代表接口调用成功
    // data.data.status 是 CR 给的状态码 200 表示成功
    // data.data 是一个对象里面有当前坐席的状态信息
} catch (error) {
    // may be is a ParamsError
}

置忙(setBusy)

用于设置坐席为忙碌状态。

try {
    const { code, data } = await sdk.setBusy(params)
    // code === 200 代表接口调用成功
    // data.data.status 是 CR 给的状态码 200 表示成功
    // data.data 是一个对象里面有当前坐席的状态信息
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
subStatusIdnumber忙碌子状态的 id
subStatusNamestring忙碌子状态的 name
statusNameLaststring上一状态名
subStatusNameLaststring上一子状态名

坐席模式切换(changeSeatMode)

用于设置坐席为移动坐席或固定坐席。

try {
    const { code, data } = await sdk.changeSeatMode(params)
    // code === 200 代表接口调用成功
    // data.data.status 是 CR 给的状态码 200 表示成功
    // data.data 是一个对象里面有当前坐席的状态信息
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
modenumber可选值 1 和 2,1 为移动坐席,2 为固定坐席
statusIdstring坐席状态ID
statusNamestring坐席状态名称
subStatusIdstring忙碌子状态ID
subStatusNamestring忙碌子状态名称

坐席开启夜间模式(setNightMode)

用于为坐席开启夜间模式。

try {
    const { code, info } = await sdk.setNightMode(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
nightModenumber默认值为 1
nightNumberstring夜间服务的话机号

预设忙碌(preSetBusy)

在通话中时,可将坐席通话结束后的状态设置为忙碌。

try {
    const { code, data } = await sdk.preSetBusy(params)
    // code === 200 代表接口调用成功
    // data.data.status 是 CR 给的状态码 200 表示成功
    // data.data 是一个对象里面有当前坐席的状态信息
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring当前正在通话的唯一标识
subStatusIdnumber忙碌子状态的 id
subStatusNamestring忙碌子状态的 name

取消预设忙碌(cancelPreSetBusy)

在通话中时,取消 preSetBusy 操作。

try {
    const { code, data } = await sdk.cancelPreSetBusy(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring当前正在通话的唯一标识

呼出(callOut)

用于发起呼叫。

try {
    const { status, data, info } = await sdk.callOut(params)
    // status 是 CR 给的状态码 200 表示成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
calleestring呼出的号码

挂机(hungUp)

在通话中时,坐席主动挂断通话。

try {
    const { status, data, info } = await sdk.hungUp(params)
    // status 是 CR 给的状态码 200 表示成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
modenumber挂机类型(0 默认常规 1 会控)
callIdstring当前正在通话的唯一标识
outlineNumberstringmode:1 会控挂断外线必选
seatNumberstringmode:1 会控挂断坐席必选
IsForcednumber强制执行挂机操作(0 默认常规 1强制)

通话保持(callKeep)

在通话中时,坐席保持通话。

try {
    const { status, data, info } = await sdk.callKeep(params)
    // status 是 CR 给的状态码 200 表示成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring当前正在通话的唯一标识

取消通话保持(callResume)

在通话中时,坐席取消保持通话。

try {
    const { status, data, info } = await sdk.callResume(params)
    // status 是 CR 给的状态码 200 表示成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring当前正在通话的唯一标识

流转(callFlow)

呼入振铃时,坐席流转该通话。

try {
    const { status, data, info } = await sdk.callFlow(params)
    // status 是 CR 给的状态码 200 表示成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring当前正在通话的唯一标识

应答(callInAnswer)

呼入振铃时,坐席应答通话。

try {
    const { status, data, info } = await sdk.callInAnswer(params)
    // status 是 CR 给的状态码 200 表示成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
cidnumber客户id(转接可选)客户呼入、预测试外呼
cm_namestring客户名称(转接可选)客户呼入、预测试外呼
cm_phone_typenumber0 客户个人号码 1 家庭号码 2 单位号码 3 自定义号码 10 未知客户
callIdstring当前正在通话的唯一标识

代答(callPickup)

呼入振铃时,坐席应答通话。

try {
    const { code, data, info } = await SDK.callPickup()
    if (code !== 200) {
        log('CALL_PICKUP error data:', data)
    } else {
        log('CALL_PICKUP success:', info)
    }
} catch (error) {
    log('CALL_PICKUP error:', error)
}

忙时来电应答(busyCallAnswer)

有忙时来电时,坐席应答通话。

try {
    const { code, data, info } = await SDK.busyCallAnswer({ callId: this.callId })
    if (code !== 200) {
        log('BUSY_CALL_ANSWER error data:', data)
    } else {
        log('BUSY_CALL_ANSWER success:', info)
    }
} catch (error) {
    log('BUSY_CALL_ANSWER error:', error)
}

通话强插(callForceInsert)

用于被叫是 DND 或通话中时,强插通话或在被叫 DND 时强制呼叫。

try {
    const { code, data, info } = await sdk.callForceInsert(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring当前正在通话的唯一标识

通话录音状态修改(changeCallRecordingStatus)

用于可录音通话中,暂停或继续录音。

try {
    const { code, data, info } = await sdk.changeCallRecordingStatus(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring当前正在通话的唯一标识
recordingStatusnumber可选值为 1 和 2,1 代表暂停录音,2 代表继续录音

转通话子流程(callTransferToIvr)

用于通话中,转接通话子流程。

try {
    const { code, data, info } = await sdk.callTransferToIvr(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
ivrFlowIdstring通话子流程 id
ivrFlowNamenumber通话子流程 name
encrypted_outline_numberstring通话加密号码
variablesstring依据选择的通话子流程而定

技能组排队优先通话或插入通话(callInsertFromQueue)

用于技能组有排队时,接入技能组的排队通话。

try {
    const { code, data, info } = await sdk.callInsertFromQueue(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
currCallIdstring当前正在通话的唯一标识
gidstring排队中技能组 id
actionstring可选值为 'hangup' 和 'hold',当前正在通话时为必传,用于标识如何处理当前的通话,'hangup' 表示挂断当前,'hold' 表示保持当前

通话静音(callMutely)

用于静音通话中的对象,对象可以是坐席自身,也可以是客户以及其他与会坐席。

try {
    const { code, data, info } = await sdk.callMutely(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
outlineNumberstring静音对象是客户时必传
seatNumberstring静音对象是与会坐席时必传
op_codenumber可选值为 15 和 16,15 表示静音,16 表示取消静音

多方通话(callMultiParty)

通话中时,用于发起多方通话。

try {
    const { code, data, info } = await sdk.callMultiParty(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
seatNumberListstring坐席分机号;多个坐席时使用 , 隔开
seatNameListstring坐席名称;多个坐席时使用,隔开

设置接听电话技能组(setAnswerGroups)

用于通话中,转接通话子流程。

try {
    const { code, data, info } = await SDK.setAnswerGroups({
        gidList: '1,2,3',
        gNameList: 'one,two,three',
    })
    if (code !== 200) {
        log(`CHANGE_CALL_GROUP failed: code:${code} info:${info}`)
    } else {
        log(`CHANGE_CALL_GROUP success: code:${code} info:${info}`)
    }
} catch (error) {
    log('CHANGE_CALL_GROUP error:', error)
}

params 参数说明

参数名称数据类型是否必须备注/说明
gidListstring技能组id集合(“,”逗号隔开)
gNameListstring技能组名称集合(”,”逗号隔开)【客户调用】

转接(callTransfer)

通话中时,用于发起通话转接。

try {
    const { code, data, info } = await sdk.callTransfer(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
op_codenumber可选择为 5, 6, 10, 5 为转坐席,6 为转技能组,10 为转外线,11 为转总机 ,12 语音留言
transferNumberstring坐席分机号
gidstring技能组 gid
outline_numberstring外线号码
voicemailSeatNumberstring留言坐席

取消转接(callTransferAbort)

通话中,用于发起通话转接后取消转接。

try {
    const { code, data, info } = await sdk.callTransferAbort(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
transfer_typestringtransfer_group-转技能组,transfer_seat-转坐席,transfer_outline_number-转外线

三方(callThreeParty)

通话中,用于发起三方通话。

try {
    const { code, data, info } = await sdk.callThreeParty(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
op_codenumber可选择为 1, 2, 3, 1 为转坐席,2 为转技能组,3 为转外线
seatNumberstring坐席分机号
gidstring技能组 gid
outNumberstring外线号码

三方取消(callThreePartyAbort)

通话中,用于发起取消三方通话。

try {
    const { code, data, info } = await sdk.callThreePartyAbort(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
transfer_typestringtransfer_group-转技能组,transfer_seat-转坐席,transfer_outline_number-转外线

咨询(callConsult)

通话中,用于发起咨询通话。

try {
    const { code, data, info } = await sdk.callConsult(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
op_codenumber可选择为 1, 2, 3, 1 为转坐席,2 为转技能组,3 为转外线
seatNumberstring坐席分机号
gidstring技能组 gid
outNumberstring外线号码

咨询取消(callConsultAbort)

通话中,用于发起取消咨询通话。

try {
    const { code, data, info } = await sdk.callConsultAbort(params)
    // code === 200 代表接口调用成功
} catch (error) {
    // may be is a ParamsError
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring排队中通话的唯一标识
transfer_typestringtransfer_group-转技能组,transfer_seat-转坐席,transfer_outline_number-转外线

班长监听(callMonitor)

班长坐席监听技能组内坐席通话的操作。

try {
    const { code, data, info } = await SDK.callMonitor({
        callId: this.callId,
        seatId: '1111',
    })
    if (code !== 200) {
        log(`CALL_MONITOR failed: code:${code} info:${info}`)
    } else {
        log(`CALL_MONITOR success: code:${code} info:${info}`)
    }
} catch (error) {
    log('CALL_MONITOR error:', error)
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring通话的唯一标识
seatIdstring被监听坐席的 uid

班长结束监听(hungUp)

班长坐席监听技能组内坐席通话触发结束监听时调用挂断接口hungUp。

班长强插(callMonitorInsert)

班长坐席监听技能组内坐席通话中进行强插操作进入三方通话。

try {
    const { code, data, info } = await SDK.callMonitorInsert({
        callId: this.callId,
    })
    if (code !== 200) {
        log(`callMonitorInsert failed: code:${code} info:${info}`)
    } else {
        log(`callMonitorInsert success: code:${code} info:${info}`)
    }
} catch (error) {
    log('callMonitorInsert error:', error)
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring通话的唯一标识

班长强拆(callMonitorBreak)

班长坐席监听技能组内坐席通话中进行强拆操作结束通话。

try {
    const { code, data, info } = await SDK.callMonitorBreak({
        callId: this.callId,
    })
    if (code !== 200) {
        log(`callMonitorBreak failed: code:${code} info:${info}`)
    } else {
        log(`callMonitorBreak success: code:${code} info:${info}`)
    }
} catch (error) {
    log('callMonitorBreak error:', error)
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring通话的唯一标识

班长拦截(callMonitorIntercept)

班长坐席监听技能组内坐席通话中进行拦截操作结束坐席与客户的通话,班长与客户进入通话中。

try {
    const { code, data, info } = await SDK.callMonitorIntercept({
        callId: this.callId,
    })
    if (code !== 200) {
        log(`callMonitorIntercept failed: code:${code} info:${info}`)
    } else {
        log(`callMonitorIntercept success: code:${code} info:${info}`)
    }
} catch (error) {
    log('callMonitorIntercept error:', error)
}

params 参数说明

参数名称数据类型是否必须备注/说明
callIdstring通话的唯一标识

事件

SDK 的事件主要分为两类,一类是用于监听 SDK 内部 websocket 的状态,一类用于监听通话相关的推送。

使用方式

// 监听某个事件
sdk.on('eventName', () => {
    // do something
})

// 注销某个事件的监听
sdk.off('eventName')

// 注销所有事件
sdk.off()

事件类型列表

事件名用途参数备注/说明
WSReady监听 sdk 内部 websocket 的状态{ status, message,version }status 可能的值为 0 和 1,1 代表连接成功并通过了鉴权。message 的可能的值为 failed,success,upgrade,logoff,
WSDisconnect监听 sdk 内部 websocket 断联{ status: 0, message: 'disconnect' }
WSError监听 sdk 内部 webscoket 发生错误{ status: 0, message: error.message || error
事件名用途参数备注/说明
callIn有电话呼入通话信息
callRing通话振铃通话信息
callEnd通话挂断通话信息
callEstablished通话建立通话信息
changeStatus坐席状态变更坐席状态信息
beCheckedOut坐席被踢下线坐席状态信息
changeCallInType更换话机模式坐席状态信息
noticePcOnline软电话上线通知坐席状态信息
changeSeatType坐席模式变更坐席状态信息
changeIsMobileSeat切换为移动坐席坐席状态信息
transferThreeParty三方通话通话信息
monitorHangup班长挂断通话信息
monitorInsertNotice班长强插通话信息
busyCallPush忙时来电通话信息
callUnholdNotice提示音结束后解除通话保持禁用通话信息
transferNoticeMonitor班长强插监听坐席转三方通话信息
transferHangup转接挂断通话信息
createSheetSuccess工单创建工单信息
sheetNotice工单工单信息
consultCallNotice咨询通话信息
transferIvrNotice转 IVR通话信息
checkHoldCall通话保持通话信息
groupQueueList技能组排队信息技能组排队信息
scheduledTaskNotice预约外呼推送预约外呼任务信息
multiPartyCall多方通话推送通话信息
transferNotice转接通话信息
noticeLinuxOnlinelinux 软电话上线通知坐席状态信息
inBatchcallTask坐席所属的预测式外呼任务状态变化预测式外呼的状态
1.0.54

4 months ago

1.0.53

4 months ago

1.0.52

4 months ago

1.0.49

6 months ago

1.0.51

6 months ago

1.0.50

6 months ago

1.0.48

6 months ago

1.0.47

8 months ago

1.0.46

8 months ago

1.0.45

8 months ago

1.0.39

11 months ago

1.0.38

11 months ago

1.0.40

10 months ago

1.0.44

9 months ago

1.0.43

9 months ago

1.0.42

10 months ago

1.0.41

10 months ago

1.0.33

11 months ago

1.0.32

11 months ago

1.0.31

11 months ago

1.0.37

11 months ago

1.0.36

11 months ago

1.0.35

11 months ago

1.0.34

11 months ago

1.0.30

11 months ago

1.0.29

11 months ago

1.0.28

11 months ago

1.0.26

11 months ago

1.0.25

11 months ago

1.0.24

11 months ago

1.0.23

12 months ago

1.0.27

11 months ago

1.0.19

12 months ago

1.0.22

12 months ago

1.0.21

12 months ago

1.0.20

12 months ago

1.0.18

12 months ago

1.0.17

12 months ago

1.0.16

12 months ago

1.0.15

12 months ago

1.0.14

12 months ago

1.0.13

12 months ago

1.0.12

12 months ago

1.0.11

12 months ago

1.0.10

12 months ago

1.0.9

12 months ago

1.0.8

12 months ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago