snk-rt-video-pc
v0.1.0
Published
腾讯实时音视频PC端SDK
Downloads
3
Readme
webpack3 ie8
特殊说明,webpack支持IE8,但是框架中集成了stateMachine 和 RXJS库,这两个库并不支持IE8,但是支持IE9+
1.npm install
2.删除node_modules\babel-runtime\helpers\classCallCheck.js 的抛出异常的代码
// node_modules\babel-runtime\helpers\classCallCheck.js
"use strict";
exports.__esModule = true;
exports.default = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
// 不然打包报错
// throw new TypeError("Cannot call a class as a function");
}
};
运行
npm start
打包
npm run build
/src/entry/RtVideo.js
业务相关说明
一、主接口
引入方式
1、<script type="text/javascript" src="./snk-sse-0.1.0.js?a64d399f9a7fadbf7e21"></script>
2、import RtVideo from snk-rt-video-pc
二、相关初始化 new RtVideo()
相关初始化参数说明
参数名 | 参数类型|说明|参数是否必传 ---|---|---|--- systemCode | String | 业务系统编码 | 是 account | String | 账号 | 是 profile | String | 连接视频环境选择-"dev"/"test" | 可选 sseServerUrl | Url | 连接消息通知的URL,与profile必须任选一,外网环境必传 | 可选 videoServiceUrl | Url | 发送命令的URL,与profile必须任选一,外网环境必传 | 可选 stateServiceUrl | Url | 上报坐席状态的URL,与profile必须任选一,外网环境必传 | 可选 token | String | 为网络安全,如果有外网环境的需求,必传,其他环境不需要 | 可选 next | function | 初始化后,相关业务回调(如状态变化、来电通知) |是 error | function | 初始化后,相关错误回调 |否 complete | function | 初始化后,相关回调 |否
示例代码
<script>
function onLoad() {
var rtVideo = new RtVideo({ systemCode: 'videoReview', profile: 'test', account: '[email protected]',
// token: 'e94605b0d08f4531a3e065270ac4544c',
// sseServerUrl: 'https://proxytest.sinosafe.com.cn/zzlp01//push-client/',
// videoServiceUrl: 'https://proxytest.sinosafe.com.cn/zzlp01/rtv/',
// stateServiceUrl: 'https://proxytest.sinosafe.com.cn/zzlp01/dispatch/',
}, {
next: function (event) { // 处理业务
var Consts = RtVideo.Consts;
if (event.type === Consts.VideoEventType.INCOMING_CALL) { // 用户来电会话ID
sid = event.data.sid;
} else if (event.type === Consts.VideoEventType.STATE_CHANGE) { // 状态变化
document.querySelector('#state').innerHTML = event.data.state;
} else if (event.type === Consts.VideoEventType.EXCHANGE_CALL) { // 切换坐席请求
document.querySelector('#state1').innerHTML = '切换坐席请求';
sid = event.data.sid;
}
},
error: function (e) { // 处理错误消息
console.error(e);
},
complete: function () {
}
});
}
</script>
三、rtVideo 提供的相关方法
方法API说明
方法名| 方法说明| 参数名 | 参数类型|参数说明|参数是否必传 ---|---|---|---|---|--- state() | 主动获取当前通话状态 |无| 无| 无|无 rest() | 在ready状态下,可以设置休息 |无| 无| 无|无 back() | 在rest状态下,可以由休息设置在线 |无| 无| 无|无 answer() | 应答通话 | sid | string | 会话ID,在next回调中获得,一个通话拥有唯一的ID | 是 refuse() | 在通话未接通情况下,拒绝应答 | sid | string | 会话ID,在next回调中获得,一个通话拥有唯一的ID | 是 hangUp() | 在通话已经接通情况下,挂断通话 | sid | string | 会话ID,在next回调中获得,一个通话拥有唯一的ID | 是 snapshot() | 坐席端截图,一次调用,只是截图一个屏(流)的图片 |type | string | 可选 "pusher" 或 "player" | 是 reconnect() | 可以使网页重新连接 EXE |无| 无| 无| 无 askChangePerson() | 主视频方主动发起切换人员请求 | { sid: sid, newer: newer }| JSON | sid:当前会话id; newer: 被转接方账号 | 是 cancelChangePerson() | 主视频方取消发起的切换请求 | { sid: sid, newer: newer }| JSON | sid:当前会话id; newer: 被转接方账号 | 是 acceptChangePerson() | 被切换方接受切换请求 | { sid: sid }| JSON | sid:当前会话id | 是 refuseChangePerson() | 被切换方拒绝切换请求 | { sid: sid }| JSON | sid:当前会话id | 是 askAddPerson() | 主视频方主动发起增加三方请求 | { sid: sid, newer: newer }| JSON | sid:当前会话id; newer: 被增加方账号 | 是 cancelAddPerson() | 主视频方主动取消增加三方请求 | { sid: sid, newer: newer }| JSON | sid:当前会话id; newer: 被增加方账号 | 是 removeAddPerson() | 已接通三方视频后,主视频方踢掉第三方 | { sid: sid, newer: newer }| JSON | sid:当前会话id; newer: 被增加方账号 | 是 acceptAddPerson() | 第三方接受三方视频请求 | { sid: sid }| JSON | sid:当前会话id | 是 refuseAddPerson() | 第三方拒绝三方视频请求 | { sid: sid }| JSON | sid:当前会话id | 是 quitAddPerson() | 已接通三方视频后,第三方操作退出 | { sid: sid }| JSON | sid:当前会话id | 是
示例代码
<script>
/*
sid: 当前会话ID
type: 截图类型, pusher推流 或player拉流
obj: { sid: sid, newer: newer }
*/
rtVideo.state() // 获取当前状态
rtVideo.rest() // 休息
rtVideo.back() // 休息返回
rtVideo.answer(sid) // 接听
rtVideo.refuse(sid) // 拒绝
rtVideo.hangUp(sid) // 挂断
rtVideo.snapshot(type) // 坐席端截图
rtVideo.reconnect() // 当exe不小心关闭,重新呼起EXE无反应,调用后,网页重新连接exe
---------------------------------------------------------------------
rtVideo.askChangePerson (obj) // 切换坐席请求
rtVideo.cancelChangePerson(obj) // 取消坐席请求
rtVideo.acceptChangePerson (obj) // 接受切换坐席请求
rtVideo.refuseChangePerson (obj) // 拒绝切换坐席请求
---------------------------------------------------------------------
rtVideo.askAddPerson (obj) // 发起第三方请求
rtVideo.cancelAddPerson(obj) // 取消第三方请求
rtVideo.removeAddPerson(obj) // 移除第三方请求
rtVideo.acceptAddPerson (obj) // 接受第三方请求
rtVideo.refuseAddPerson (obj) // 拒绝第三方请求
rtVideo.quitAddPerson (obj) // 主动退出第三方请求
</script>
四、回调函数相关
事件类型
type | 说明 | 作用 ---|---|--- INCOMING_CALL | 来电事件 | 返回会话ID sid RECOVERY_CALL | 恢复来电事件 |返回会话ID sid INCOMING_CALL_HANGUP | 用户挂断来电或会话结束 | 通知事件 VIDEOTAPE | 视频录像 | 返回视频地址 SNAPSHOT | 截图事件 | 返回图像的 base64 STATE_CHANGE | 状态变化事件 | 返回当前状态state,具体相关状态可看下方“ 通话状态 ”说明 HTTP_BACK | 转移通话、增加三方等事件| 主要是操作失败后,相关提示信息,比如第三方正在通话中 EXE_ERROR | 视频EXE事件 | EXE报错事件 EXCHANGE_CALL | 切换坐席通知 | 交互时收到切换通知 ADD_CALL | 增加坐席通知 | 交互时收到增加通知
/**
* 业务端的事件类型
*/
const VideoEventType = {
INCOMING_CALL: 'INCOMING_CALL', // 来电事件
RECOVERY_CALL: 'RECOVERY_CALL', // 恢复来电事件
INCOMING_CALL_HANGUP: 'INCOMING_CALL_HANGUP', // 用户挂断来电或会话结束
VIDEOTAPE: 'VIDEOTAPE', // 视频录像
SNAPSHOT: 'SNAPSHOT', // 截图事件
STATE_CHANGE: 'STATE_CHANGE', // 状态变化事件
HTTP_BACK: 'HTTP_BACK', // http请求返回
EXE_EVENT: 'EXE_EVENT', // exe异常事件
EXCHANGE_CALL: 'EXCHANGE_CALL', // 坐席切换请求
ADD_CALL: 'ADD_CALL' // 坐席增加请求
}
通话状态(STATE_CHANGE事件或主动获取时返回的状态)
state | 状态说明| 状态 ---|---|--- disconnected | 未连接或初始化失败 | 异常 ready | 初始化成功,可接听状态 | 准备就绪 leave | 调用rest后的状态 | 离开 wait | 当用户拨打后未接听状态 | 待接听 busy | 正在通话状态 | 通话中
/**
* 通话状态状态
*/
const ServiceFsmState = {
DISCONNECTED: 'disconnected', // 连接断开(致命异常)
READY: 'ready', // 准备就绪
LEAVE: 'leave', // 离开、休息
WAIT: 'wait', // 待接听
BUSY: 'busy' // 通话中
}
相关事件码(事件码说明)
msgType | 所属事件 | 说明 ---|---|--- 50200 | INCOMING_CALL | 客户端来电 50203 | VIDEOTAPE | 视频录制资源 30000 | INCOMING_CALL_HANGUP| 会话结束 30019 | INCOMING_CALL_HANGUP| 用户离线 20100 | EXCHANGE_CALL | 切换坐席请求 20101 | EXCHANGE_CALL | 接受切换请求 20102 | EXCHANGE_CALL | 拒绝切换请求 20103 | EXCHANGE_CALL | 取消切换请求 20200 | ADD_CALL | 第三方增加请求 20201 | ADD_CALL | 第三方座席接听 20202 | ADD_CALL | 第三方座席拒绝 20203 | ADD_CALL | 第三方座席退出 20204 | ADD_CALL | 第三方座席取消 100025| HTTP_BACK | 操作失败,该会话已经结束 200001| HTTP_BACK | 操作失败,服务受理失败 200002| HTTP_BACK | 操作失败,服务受理超时 300001| HTTP_BACK | 操作失败,从调度系统获取坐席失败 300002| HTTP_BACK | 操作失败,向调度系统拒接任务失败 300003| HTTP_BACK | 操作失败,坐席忙线 400001| HTTP_BACK | 操作失败,正在切换坐席中 400002| HTTP_BACK | 操作失败,不能切换给自己 400003| HTTP_BACK | 操作失败,正在等待被切换方应答 400004| HTTP_BACK | 操作失败(未启用) 400005| HTTP_BACK | 操作失败,对方已受理切换请求取消失败 400006| HTTP_BACK | 操作失败,受理超时或被请求方取消 500001| HTTP_BACK | 操作失败
/**
* 视频信令命令码
*/
const VideoControlCode = {
INCOMING_CALL: 50200, // 客户端推拉流资源
USER_INTERRUPT : 30017, // 用户挂断
USER_OFF_LINE: 30019, // 用户离线
AUTO_END_SESSION: 30000, // 会话自动结束
STAFF_CHANGE_ASK: 20100, // 坐席切换请求
STAFF_CHANGE_CALL_BACK_ACCEPT: 20101, // 收到接受切换回复
STAFF_CHANGE_CALL_BACK_REJECT: 20102, // 收到拒绝切换回复
STAFF_CHANGE_CALL_BACK_CANCEL: 20103, // 被切换方收到坐席取消切换
STAFF_CHANGE_LIVE_SRC: 50201, // 坐席切换受理结果推拉流资源
PARTICIPATOR_LIVE_SRC: 50202, // 添加第三方受理结果推拉流资源
VIDEO_REC_SRC: 50203, // 视频录制资源
IMG_SRC: 50204, // 平台转发微信小程序侧上传的图片的信息给接入系统
END_SESSION: 30025, // 会话结束
ADDPARTICIPATOR_ASK: 20200, // 添加第三方坐席请求
ADDPARTICIPATOR_CALL_BACK_ACCEPT: 20201, // 第三方座席接听
ADDPARTICIPATOR_CALL_BACK_REJECT: 20202, // 第三方座席拒绝
ADDPARTICIPATOR_DEL: 20203, // 第三方座席退出
ADDPARTICIPATOR_CANCEL: 20204, // 第三方收到主坐席取消
}