# 快速搭建Plugin
# 插件概述
该插件是为小程序设计的视频客服访客插件,支持点对点呼叫和业务号呼叫,支持发送在线消息。
Plugin 文件夹中包含样式文件和多个组件,style 文件夹、tools.wxs 文件、talk-view 组件、local-stream 组件、remote-stream 组件和 JRTCSDK-Wechat.js 库是必需的,视频客服访客插件还需要集成 guest 组件,将它们一起放入项目 components 文件夹下即可。
# 引入组件
在项目的 WXML 文件中和 JSON 文件中按以下方式引入即可,引入组件时,可以将部分登录参数通过以下方式传给组件,通过该方法传递过后,登录时则无需传递已传递的登录参数。还需要传递回调函数给组件。注:引入绑定时,需全部小写,不能使用驼峰命名。
<guest
id="guest"
signal-server="http://192.168.4.171:19993"
room-server="http://192.168.4.171:9000"
app-key="05c97ce0d0a84d2592334093"
app-name="视频客服访客"
display-name=""
token=""
token-type="jrtc_access"
token-extra-param=""
bindonlogin="onLogin"
bindonlogout="onLogout"
...>
</guest>
{
"usingComponents": {
"guest": "/components/guest/guest"
}
}
回调函数按需传递,没有使用的无需传递。
# 插件通用属性
| 属性 | 类型 | 参数/属性值 | 必填 | 说明 |
|---|---|---|---|---|
| signal-server | String | 否 | signal环境 | |
| room-server | String | 否 | room环境 | |
| app-key | String | 否 | appKey | |
| app-name | String | 否 | app名称 | |
| display-name | String | 否 | 昵称 | |
| token | String | 否 | token | |
| token-type | String | 否 | token类型 | |
| token-extra-param | String | 否 | token校验拓展参数 | |
| subscribeWidth | Number | 1920 | 否 | 订阅视频清晰度-宽度 |
| subscribeHeight | Number | 1080 | 否 | 订阅视频清晰度-高度 |
| closeCameraBackgroundColor | String | #1C1C1E | 否 | 关闭摄像头后背景颜色 |
| videoHoldLastFrame | Boolean | false | 否 | 保留最后一帧画面 |
| closeCameraIconSrc | String | 否 | 关闭摄像头图标样式 | |
| newMessageToast | String | 您收到了一条消息,点击消息查看 | 否 | 收到新消息的提示语 |
| toastColor | String | #FFFFFF | 否 | 消息提示文字颜色 |
| toastBackgroundColor | String | #252525cc | 否 | 消息提示遮罩背景色 |
| bindonlogin | Function | result, reason | 否 | 登录的回调 (opens new window) |
| bindonlogout | Function | reason | 否 | 登出的回调 (opens new window) |
| bindonclientstatechanged | Function | state, oldState | 否 | 登录状态的回调 (opens new window) |
| bindononlinemessagereceived | Function | message, userId | 否 | 收到在线消息的回调 (opens new window) |
| bindononlinemessagesendresult | Function | result, operatorId | 否 | 发送在线消息的回调 (opens new window) |
| bindongetallgroups | Function | result, groups (opens new window) | 否 | 查询所有业务组的回调 (opens new window) |
| bindoncallstatechange | Function | type (opens new window), inviter (opens new window), reason (opens new window) | 否 | 通话状态改变的回调 (opens new window) |
| bindonmemberjoin | Function | participant (opens new window) | 否 | 成员加入的回调 (opens new window) |
| bindonmemberleave | Function | participant (opens new window) | 否 | 成员离开的回调 (opens new window) |
| bindonmemberupdate | Function | participant (opens new window),changeParam (opens new window) | 否 | 成员属性更新的回调 (opens new window) |
| bindonurgentresult | Function | agree | 否 | 加急申请的回调 (opens new window) |
| bindonholdstatechange | Function | hold | 否 | 通话保持的回调 (opens new window) |
| bindoncalltypechange | Function | callType (opens new window) | 否 | 通话类型改变的回调 (opens new window) |
| bindonerror | Function | event (opens new window) | 否 | 错误事件的回调 (opens new window) |
# 登录
在登录时需要设置几个参数,如下表。
| 参数名 | 参数含义 | 是否必填 |
|---|---|---|
| signalServer | signal环境 | 是 |
| roomServer | room环境 | 是 |
| appKey | appkey | 是 |
| userId | 账号 | 是 |
| displayName | 昵称 | 否 |
| token | token | 否 |
| tokenType | token类型 | 否 |
| tokenExtraParam | token校验拓展参数 | 否 |
设置好参数后,即可调用 login (opens new window) 方法进行登录。调用时需要把这些参数作为一个对象传给 login (opens new window) 方法,引入时已传递的参数则可以不用再传递。下面是一个简单的示例。
const guestComponent = this.selectComponent('#guest');
const clientEnv = {
signalServer: 'http://192.168.4.171:19993',
roomServer: 'http://192.168.4.171:9000',
appKey: '05c97ce0d0a84d2592334093',
userId: '',
displayName: '',
token: '',
tokenType: 'jrtc_access',
tokenExtraParam: '',
};
guestComponent.login(clientEnv);
# 登出
登出无需设置参数,只需调用 logout (opens new window) 方法即可,下面是一个简单的示例。
const guestComponent = this.selectComponent('#guest');
guestComponent.logout();
# 获取登录状态
可以使用登录状态的回调获取当前登录状态,它可以获取两个参数 state (opens new window)、oldState,state 表示当前的登录状态,oldState 表示之前的状态。下面是一个示例。
/**
* 登录状态变化通知
*
* @param state 当前状态值
* @param oldState 之前状态值
* state = 1 未登录
* state = 2 登录中
* state = 3 已登录
* state = 4 登出中
*/
onClientStateChanged(e){
const { state, oldState } = e.detail;
console.log('onClientStateChanged oldState: ', oldState, 'state: ', state);
},
# 查询业务组
登录成功之后即可调用 queryGroup (opens new window) 方法后,可在 onGetAllGroups (opens new window) 回调中获取所有业务号信息,获取之后即可通过业务号进行呼叫。
const guestComponent = this.selectComponent('#guest');
guestComponent.queryGroup();
