├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── GLOSSARY.md ├── README.md ├── SUMMARY.md ├── api.md ├── book.json ├── chatroom │ ├── ban.md │ ├── block.md │ ├── chatroom.md │ ├── demotion.md │ ├── distribute.md │ ├── gag.md │ ├── keepalive.md │ ├── mute-members.md │ └── whitelist │ │ ├── message.md │ │ └── user.md ├── conversation │ └── conversation.md ├── errorcode.md ├── group │ ├── ban-user.md │ ├── ban.md │ ├── gag.md │ ├── group.md │ ├── mute-all-members.md │ ├── mute-members.md │ └── whiteList │ │ ├── ban-user.md │ │ └── mute-user.md ├── js │ └── banner.js ├── message │ ├── chatroom.md │ ├── group.md │ ├── history.md │ ├── private.md │ └── system.md ├── push │ └── push.md ├── sensitive │ └── sensitive.md ├── style │ ├── logo.png │ └── website.css └── user │ ├── blacklist.md │ ├── block.md │ ├── mute-chatrooms.md │ ├── mute-groups.md │ ├── online-status.md │ ├── tag.md │ └── user.md ├── example ├── co │ ├── chatroom │ │ ├── ban.js │ │ ├── block.js │ │ ├── chatroom.js │ │ ├── demotion.js │ │ ├── distribute.js │ │ ├── gag.js │ │ ├── keepalive.js │ │ └── whitelist │ │ │ ├── message.js │ │ │ └── user.js │ ├── conversation.js │ ├── group │ │ ├── group-gag.js │ │ └── group.js │ ├── message │ │ ├── chatroom.js │ │ ├── group.js │ │ ├── history.js │ │ ├── private.js │ │ └── system.js │ ├── sensitive.js │ └── user │ │ ├── blacklist.js │ │ ├── block.js │ │ └── user.js └── promise │ ├── chatroom │ ├── ban.js │ ├── block.js │ ├── chatroom.js │ ├── demotion.js │ ├── distribute.js │ ├── gag.js │ ├── keepalive.js │ └── whitelist │ │ ├── message.js │ │ └── user.js │ ├── conversation.js │ ├── group │ ├── group-gag.js │ ├── group-mute-all.js │ ├── group-mute-member.js │ ├── group-mute-whitelist.js │ └── group.js │ ├── message │ ├── chatroom.js │ ├── group.js │ ├── history.js │ ├── private.js │ └── system.js │ ├── push.js │ ├── sensitive.js │ └── user │ ├── blacklist.js │ ├── block.js │ ├── tag.js │ └── user.js ├── function-list.md ├── index.js ├── lib ├── chatroom │ ├── api.json │ ├── ban │ │ ├── api.json │ │ └── index.js │ ├── block │ │ ├── api.json │ │ └── index.js │ ├── demotion │ │ ├── api.json │ │ └── index.js │ ├── distribute │ │ ├── api.json │ │ └── index.js │ ├── gag │ │ ├── api.json │ │ └── index.js │ ├── index.js │ ├── keepalive │ │ ├── api.json │ │ └── index.js │ ├── verify.json │ └── whitelist │ │ ├── index.js │ │ ├── message-api.json │ │ ├── message.js │ │ ├── user-api.json │ │ └── user.js ├── conversation-type.js ├── conversation │ ├── api.json │ ├── index.js │ └── verify.json ├── group │ ├── api.json │ ├── gag │ │ ├── api.json │ │ └── index.js │ ├── index.js │ ├── mute-all-member │ │ ├── api.json │ │ └── index.js │ ├── mute-member │ │ ├── api.json │ │ └── index.js │ ├── mute-whitelist │ │ ├── api.json │ │ └── index.js │ └── verify.json ├── message │ ├── chatroom │ │ ├── api.json │ │ └── index.js │ ├── discussion │ │ ├── api.json │ │ └── index.js │ ├── group │ │ ├── api.json │ │ └── index.js │ ├── history │ │ ├── api.json │ │ ├── index.js │ │ └── verify.json │ ├── index.js │ ├── private │ │ ├── api.json │ │ └── index.js │ ├── system │ │ ├── api.json │ │ └── index.js │ └── verify.json ├── push │ ├── api.json │ ├── index.js │ └── verify.json ├── request.js ├── rongcloud.js ├── sensitive │ ├── api.json │ ├── index.js │ └── verify.json ├── user │ ├── api.json │ ├── blacklist │ │ ├── api.json │ │ └── index.js │ ├── block │ │ ├── api.json │ │ └── index.js │ ├── index.js │ ├── online-status │ │ ├── api.json │ │ └── index.js │ ├── tag │ │ ├── api.json │ │ └── index.js │ └── verify.json └── utils.js ├── package.json ├── report-0507.png └── spec ├── chatroomSpec.js ├── conversationSpec.js ├── groupSpec.js ├── helpers └── data.js ├── message ├── chatroomSpec.js ├── discussionSpec.js ├── groupSpec.js ├── historySpec.js ├── privateSpec.js └── systemSpec.js ├── pushSpec.js ├── sensitiveSpec.js ├── support └── jasmine.json └── userSpec.js /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | coverage/* 3 | example/* 4 | docs/* 5 | spec/* -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es6": true 6 | }, 7 | "extends": "eslint:recommended", 8 | "parserOptions": { 9 | "ecmaVersion": 2015, 10 | "sourceType": "module" 11 | }, 12 | "rules": { 13 | "quotes": [2, "single"], 14 | "no-alert": "error", 15 | "no-irregular-whitespace": "error", 16 | "eqeqeq": "warn", 17 | "key-spacing": "error", 18 | "no-dupe-keys": "error", 19 | "no-mixed-spaces-and-tabs": "error", 20 | "no-multiple-empty-lines": ["error", { "max": 1 }], 21 | "no-multi-spaces": ["error", { "ignoreEOLComments": true }], 22 | "no-control-regex": "warn", 23 | "no-use-before-define": "error", 24 | "no-restricted-globals": "warn", 25 | "indent": ["error", 2], 26 | "max-nested-callbacks": ["error", { "max": 3 }], 27 | "no-underscore-dangle": ["warn", { "allow": ["_msg"] }] 28 | } 29 | }; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | coverage 3 | .idea 4 | .DS_Store 5 | **/_book 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 融云 Rong Cloud 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Server SDK 2 | 3 | _单元测试覆盖率:_ 4 | 5 | ![](https://rongcloud.github.io/server-sdk-nodejs/report-0507.png) 6 | 7 | **文档迁移至**: http://www.rongcloud.cn/docs/server_sdk_api/ 8 | 9 | [SDK 功能清单](./function-list.md) 10 | 11 | #### 初始化 12 | 13 | 1、生产环境 Node.js 支持最低版本为 [4.0+](http://nodejs.cn/download/),开发环境要求 Node.js 最低版本为 [8.0+](http://nodejs.cn/download/) 14 | 15 | 2、安装 `rongcloud-sdk` 16 | 17 | ``` 18 | npm install rongcloud-sdk 19 | ``` 20 | 21 | #### 使用 22 | 23 | 请前往 [开发者后台](https://developer.rongcloud.cn) 创建应用 -> 获取 Appkey、Secret 24 | 25 | 以注册用户为例 26 | 27 | **Promise 方式** 28 | 29 | ```js 30 | //替换成您自己的 Appkey 31 | var appkey = '8luwapucoil'; 32 | // 替换成您自己的 Secret 33 | var secret = 'y0iyjl4h3LWz'; 34 | 35 | var RongSDK = require('rongcloud-sdk')({ 36 | appkey: appkey, 37 | secret: secret 38 | }); 39 | 40 | // API 文档: http://www.rongcloud.cn/docs/server/sdk/user/user.html#register 41 | var User = RongSDK.User; 42 | var user = { 43 | id: 'ujadk90ha', 44 | name: 'Maritn', 45 | portrait: 'http://7xogjk.com1.z0.glb.clouddn.com/IuDkFprSQ1493563384017406982' 46 | }; 47 | User.register(user).then(result => { 48 | console.log(result); 49 | }, error => { 50 | console.log(error); 51 | }); 52 | ``` 53 | 54 | **Co 方式** 55 | ```js 56 | //替换成您自己的 Appkey 57 | var appkey = '8luwapucoil'; 58 | // 替换成您自己的 Secret 59 | var secret = 'y0iyjl4h3LWz'; 60 | 61 | var RongSDK = require('rongcloud-sdk')({ 62 | appkey: appkey, 63 | secret: secret 64 | }); 65 | var co = require('co'); 66 | 67 | // API 文档: http://www.rongcloud.cn/docs/server/sdk/user/user.html#register 68 | var User = RongSDK.User; 69 | co(function* (){ 70 | var user = { 71 | id: 'ujadk90ha', 72 | name: 'Maritn', 73 | portrait: 'http://7xogjk.com1.z0.glb.clouddn.com/IuDkFprSQ1493563384017406982' 74 | }; 75 | var result = yield User.register(user) 76 | console.log(result); 77 | }).catch(error => { 78 | console.log(error); 79 | }); 80 | ``` 81 | 82 | #### 文档 83 | 84 | [API 文档](https://www.rongcloud.cn/docs/server_sdk_api/) 85 | 86 | #### 示例 87 | 88 | **[用户模块示例](./example/promise/user)** 89 | 90 | **[消息模块示例](./example/promise/message)** 91 | 92 | **[群组模块示例](./example/promise/group)** 93 | 94 | **[聊天室模块示例](./example/promise/chatroom)** 95 | 96 | **[会话模块示例](./example/promise/conversation.js)** 97 | 98 | **[敏感词模块示例](./example/promise/sensitive.js)** 99 | 100 | **[远程推送](./example/promise/push.js)** 101 | 102 | #### 单元测试 103 | 104 | 1、下载或克隆 `server-sdk-nodejs` 105 | 106 | 2、进入项目 `cd server-sdk-nodejs` 107 | 108 | 3、安装依赖 `npm install` 109 | 110 | 4、运行单元测试 `npm test` 111 | 112 | #### 声明 113 | 114 | 3.0.0 版本 SDK API 不再向老版本兼容,老版本 SDK 可用但不再维护 115 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | #### 使用步骤 2 | 3 | ##### 1、注册开发者,请移步 [开发者后台](https://developer.rongcloud.cn) 4 | 5 | ##### 2、创建应用 6 | 7 | ##### 3、获取 Appkey 、 Secret 8 | 9 | #### Server SDK{#server-sdk} 10 | 11 | 各平台 SDK **源码**、**示例** 请移步: [Java](https://github.com/rongcloud/server-sdk-java)、 [Node.js](https://github.com/rongcloud/server-sdk-nodejs) 12 | 13 | #### SDK 使用指南 14 | 15 | 16 | 17 | >图解 18 | 19 | 蓝色框表示应用服务器 (App Server),用来处理业务数据,比如用户信息、群组关系等 20 | 21 | App Server 会使用到融云 Server SDK: [Java](https://github.com/rongcloud/server-sdk-java)、 [Node.js](https://github.com/rongcloud/server-sdk-nodejs) 22 | 23 | 蓝色为应用(App),客户端发送消息使用,会用到各端 SDK: [iOS](http://www.rongcloud.cn/docs/ios.html#integration)、[Android](http://www.rongcloud.cn/docs/android.html#integration)、[Web](http://www.rongcloud.cn/docs/web.html#sdk)、[Desktop](http://www.rongcloud.cn/docs/desktop.html) 24 | 25 | 绿色框表示融云服务器 (RongCloud Server) ,是消息通道,调用各端 SDK 发送消息即可 26 | -------------------------------------------------------------------------------- /docs/api.md: -------------------------------------------------------------------------------- 1 | ### 文档导航 2 | 3 | 点击模块名称可快速跳转 4 | 5 | ```{mermaid} 6 | graph TB 7 | subgraph 聊天室模块 8 | 聊天室 9 | 聊天室-全局禁言 10 | 聊天室-成员禁言 11 | 聊天室-封禁 12 | 聊天室-消息降级 13 | 聊天室-消息分发 14 | 聊天室-保活 15 | 聊天室-白名单 16 | end 17 | ``` 18 | 19 | ```{mermaid} 20 | graph TB 21 | subgraph 用户模块 22 | 用户 23 | 用户-黑名单 24 | 用户-封禁 25 | 用户-在线状态 26 | end 27 | 28 | subgraph 群组模块 29 | 群组 30 | 群组-禁言 31 | end 32 | 33 | subgraph 消息模块 34 | 消息 35 | 历史消息 36 | end 37 | 38 | subgraph 会话模块 39 | 会话 40 | end 41 | 42 | subgraph 敏感词模块 43 | 敏感词 44 | end 45 | 46 | subgraph 错误码模块 47 | 错误码 48 | end 49 | 50 | click 用户 "./user/" "前往用户模块" 51 | ``` 52 | -------------------------------------------------------------------------------- /docs/book.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "prism", "-highlight", "codetabs", "custom-html","expandable-chapters", 4 | "-sharing", "-fontsettings" 5 | ], 6 | "pluginsConfig": { 7 | "customHTML": { 8 | "js": "js/banner.js" 9 | }, 10 | "prism": { 11 | "css": [ 12 | "prismjs/themes/prism-okaidia.css" 13 | ] 14 | } 15 | }, 16 | "styles": { 17 | "website": "style/website.css" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/chatroom/ban.md: -------------------------------------------------------------------------------- 1 | ## 聊天室全局禁言模块 2 | 3 | 禁止用户在应用内所有聊天室中发言,可将此用户添加到聊天室全局禁言中,被禁言用户可以接收聊天室中聊天信息,但不能发送消息 4 | 5 | 多次调用,以最后一次为准 6 | 7 | 此功能需开通 [专有云服务](http://www.rongcloud.cn/deployment#proprietary-cloud) 8 | 9 | ### Ban.add(chatroom){#add} 10 | 11 | 添加聊天室全局禁言 12 | 13 | `chatroom` 参数的**属性说明**: 14 | 15 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 16 | | :----------|:-------- |:----- |:------------------------------|:-------- | 17 | | members | array | 是 | 成员列表,最多不超过 20 个 |3.0.0 | 18 | | minute | number | 是 | 禁言时长,范围: 1 - 1 \* 30 \* 24 \* 60 分钟 | 3.0.0| 19 | 20 | `members` 说明: 21 | 22 | | 参数 | 类型 | 说明 |最低版本 | 23 | | :----------|:-------- |:------------------------------|:-------- | 24 | | id | string | 添加禁言用户 Id。 | 3.0.0 | 25 | 26 | ##### 请求成功 27 | 28 | ```json 29 | { 30 | "code": 200 31 | } 32 | ``` 33 | 34 | ### Ban.remove(chatroom){#remove} 35 | 36 | 解除聊天室全局禁言 37 | 38 | `chatroom` 参数的**属性说明**: 39 | 40 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 41 | | :----------|:-------- |:----- |:------------------------------|:-------- | 42 | | members | array | 是 | 解除禁言列表 | 3.0.0 | 43 | 44 | `members` 说明: 45 | 46 | | 参数 | 类型 | 说明 |最低版本 | 47 | | :----------|:-------- |:------------------------------|:-------- | 48 | | id | string | 解除禁言用户 Id。 | 3.0.0 | 49 | 50 | ##### 请求成功 51 | 52 | ```json 53 | { 54 | "code": 200 55 | } 56 | ``` 57 | ### Ban.getList(){#getList} 58 | 59 | 获取聊天室全局禁言列表 60 | 61 | ##### 请求成功 62 | 63 | ```json 64 | { 65 | "code": 200, 66 | "members": [{ 67 | "id": "2582", 68 | "time": "2015-09-25 16:12:38" 69 | }] 70 | } 71 | ``` 72 | | 参数 | 类型 | 说明 73 | | :----------|:-------- |:------------------------------ 74 | | id | string | 被禁言用户 Id。 75 | | time | string | 解禁时间 76 | -------------------------------------------------------------------------------- /docs/chatroom/block.md: -------------------------------------------------------------------------------- 1 | ## 聊天室封禁模块 2 | 3 | 将用户踢出聊天室,并在设置`禁言的时间` 范围内禁止加入指定聊天室,多次调用,以最后一次为准 4 | 5 | ### Block.add(chatroom){#add} 6 | 7 | 添加封禁 8 | 9 | `chatroom` 参数的**属性说明**: 10 | 11 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 12 | | :----------|:-------- |:----- |:------------------------------|:-------- | 13 | | id | string | 是 | 聊天室 Id | 3.0.0 | 14 | | members | array | 是 | 封禁列表 | 3.0.0 | 15 | | minute | number | 是 | 封禁时长,范围 1 - 1 \* 30 \* 24 \* 60 分钟 | 3.0.0 | 16 | 17 | `members` 说明: 18 | 19 | | 参数 | 类型 | 说明 |最低版本 | 20 | | :----------|:-------- |:------------------------------|:-------- | 21 | | id | string | 添加封禁用户 Id。 | 3.0.0 | 22 | 23 | ##### 请求成功 24 | 25 | ```json 26 | { 27 | "code": 200 28 | } 29 | ``` 30 | 31 | ### Block.remove(chatroom){#remove} 32 | 33 | 解除封禁 34 | 35 | `chatroom` 参数的**属性说明**: 36 | 37 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 38 | | :----------|:-------- |:----- |:------------------------------|:-------- | 39 | | id | string | 是 | 聊天室 Id | 3.0.0 | 40 | | members | array | 是 | 解除封禁列表 | 3.0.0| 41 | 42 | `members` 说明: 43 | 44 | | 参数 | 类型 | 说明 |最低版本 | 45 | | :----------|:-------- |:------------------------------|:-------- | 46 | | id | string | 解除封禁用户 Id。 | 3.0.0 | 47 | 48 | ##### 请求成功 49 | 50 | ```json 51 | { 52 | "code": 200 53 | } 54 | ``` 55 | ### Block.getList(chatroom){#getList} 56 | 57 | 查询被封禁成员列表 58 | 59 | `chatroom` 参数的**属性说明**: 60 | 61 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 62 | | :----------|:-------- |:----- |:------------------------------|:-------- | 63 | | id | string | 是 | 聊天室 Id | 3.0.0 | 64 | 65 | ##### 请求成功 66 | 67 | ```json 68 | { 69 | "code": 200, 70 | "members": [{ 71 | "id": "2582", 72 | "time": "2015-09-25 16:12:38" 73 | }] 74 | } 75 | ``` 76 | 77 | `members` 说明: 78 | 79 | | 参数 | 类型 | 说明 |最低版本 | 80 | | :----------|:-------- |:------------------------------|:-------- | 81 | | id | string | 被封禁用户 Id。 | 3.0.0 | 82 | | time | string | 解禁时间 | 3.0.0 | 83 | -------------------------------------------------------------------------------- /docs/chatroom/chatroom.md: -------------------------------------------------------------------------------- 1 | ## 聊天室模块 2 | 3 | ### Chatroom.create(chatroom){#Create} 4 | 5 | 创建聊天室 6 | 7 | 聊天室使用步骤: 8 | 9 | 1、App Server 创建聊天室 10 | 11 | 2、客户端调用各端 SDK 加入聊天室 12 | 13 | 3、收发消息 14 | 15 | `chatrooms` 参数的**属性说明**: 16 | 17 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 18 | | :----------|:-------- |:----- |:------------------------------|:-------- | 19 | | id | string | 是 | 聊天室 Id | 3.0.0 | 20 | | name | string | 是 | 聊天室名称 | 3.0.0 | 21 | 22 | ##### 请求成功 23 | 24 | ```json 25 | { 26 | "code": 200 27 | } 28 | ``` 29 | 30 | ### Chatroom.destroy(chatroom){#destroy} 31 | 32 | 销毁聊天室,禁言、封禁关系不销毁 33 | 34 | `chatroom` 参数的**属性说明**: 35 | 36 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 37 | | :----------|:-------- |:----- |:------------------------------|:-------- | 38 | | id | string | 是 | 聊天室 Id | 3.0.0 | 39 | 40 | ##### 请求成功 41 | 42 | ```json 43 | { 44 | "code": 200 45 | } 46 | ``` 47 | 48 | ### Chatroom.get(chatroom){#get} 49 | 50 | 获取聊天室信息,返回按时间排序后的最多 500 个成员信息 51 | 52 | `chatroom` 参数的**属性说明**: 53 | 54 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 55 | | :----------|:-------- |:----- |:------------------------------|:-------- | 56 | | id | string | 是 | 聊天室 Id 列表 | 3.0.0 | 57 | | count | number | 是 | 聊天室成员信息数,最多返回 500 个成员 | 3.0.0 | 58 | | order | number | 是 | 查询聊天室成员顺序, 1: 加入时间正序 2: 加入时间倒序 | 3.0.0 | 59 | 60 | ##### 请求成功 61 | 62 | ```json 63 | { 64 | "code": 200, 65 | "total": 100, 66 | "members": [{ 67 | "id": "member1", 68 | "time": "2018-03-08 16:38:26" 69 | }, 70 | { 71 | "id": "member2", 72 | "time": "2018-03-08 16:38:26" 73 | }] 74 | } 75 | ``` 76 | 77 | | 参数 | 类型 | 说明 78 | | :----------|:-------- |:------------------------------ 79 | | id | string | 用户 Id 80 | | total | string | 当前聊天室中用户数 81 | | time | string | 加入聊天室时间 82 | 83 | ### Chatroom.isExist(chatroom){#isExist} 84 | 85 | 检查用户是否在聊天室 86 | 87 | | 参数 | 类型 | 说明 |最低版本 | 88 | | :----------|:-------- |:------------------------------|:-------- | 89 | | id | string | 聊天室 Id | 3.0.0 | 90 | | members | array | 每次最多 1000 个成员 | 3.0.0 | 91 | 92 | ##### 请求成功 93 | 94 | ```json 95 | { 96 | "code": 200, 97 | "members": [{ 98 | "id": "y41z2IXBW", 99 | "isInChrm": 0 100 | }, { 101 | "id": "niCtlxnas", 102 | "isInChrm": 1 103 | }] 104 | } 105 | ``` 106 | 107 | `members` 说明: 108 | 109 | | 参数 | 类型 | 说明 110 | | :----------|:-------- |:------------------------------ 111 | | id | string | 成员 Id 112 | | isInChrm | number | 是否在聊天室中 1: 在 0: 不在 113 | -------------------------------------------------------------------------------- /docs/chatroom/demotion.md: -------------------------------------------------------------------------------- 1 | ## 聊天室降级{#demotion} 2 | 3 | 聊天室消息级别分两种: `High Level`、`Low Level` 4 | 5 | 默认全部消息类型为 `High Level` 的消息,当服务器负载高时 `Low Level` 的消息优先被丢弃,让出资源给 `High Level` 的消息 6 | 7 | 此功能需开通 [专有云服务](http://www.rongcloud.cn/deployment#proprietary-cloud) 8 | 9 | ### Demotion.add(message){#add} 10 | 11 | 添加应用内聊天室降级消息 12 | 13 | `message` 参数的**属性说明**: 14 | 15 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 16 | | :-------------|:-------- |:----- |:---------------------------------------------------|:-------- | 17 | | objectNames | string | 是 | [消息类型](../GLOSSARY.md#message)列表,最多 20 个 | 3.0.0 | 18 | 19 | `objectNames` 说明: 20 | 21 | | 参数 | 类型 | 说明 |最低版本 | 22 | | :----------|:-------- |:------------------------------|:-------- | 23 | | msgs | string | 消息类型 | 3.0.0| 24 | 25 | ##### 请求成功 26 | 27 | ```json 28 | { 29 | "code": 200 30 | } 31 | ``` 32 | 33 | ### Demotion.remove(message){#remove} 34 | 35 | 移除应用内聊天室降级消息 36 | 37 | `message` 参数的**属性说明**: 38 | 39 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 40 | | :--------------|:-------- |:----- |:--------------------------------------|:-------- | 41 | | objectNames | string | 是 | [消息类型](../GLOSSARY.md#message)列表 | 3.0.0 | 42 | 43 | `objectNames` 说明: 44 | 45 | | 参数 | 类型 | 说明 |最低版本 | 46 | | :----------|:-------- |:------------------------------|:-------- | 47 | | msgs | string | 消息类型 | 3.0.0| 48 | 49 | ##### 请求成功 50 | 51 | ```json 52 | { 53 | "code": 200 54 | } 55 | ``` 56 | 57 | ### Demotion.getList(){#getList} 58 | 59 | 获取应用内聊天室降级消息 60 | 61 | ##### 请求成功 62 | 63 | ```json 64 | { 65 | "code": 200, 66 | "objectNames":[ 67 | "RC:ImgMsg", 68 | "RC:ImgTextMsg" 69 | ] 70 | } 71 | ``` 72 | 73 | | 参数 | 类型 | 说明 74 | | :-------------|:-------- |:------------------------------ 75 | | objectNames | string | 消息类型数组 76 | -------------------------------------------------------------------------------- /docs/chatroom/distribute.md: -------------------------------------------------------------------------------- 1 | ## 聊天室消息分发模块 2 | 3 | 控制聊天室消息分发,停止后,融云服务器将不会同步消息到指定聊天室 4 | 5 | ### Distribute.stop(chatroom){#stop} 6 | 7 | 停止聊天室消息分发 8 | 9 | `chatroom` 参数的**属性说明**: 10 | 11 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 12 | | :----------|:-------- |:----- |:------------------------------|:-------- | 13 | | id | string | 是 | 聊天室 Id | 3.0.0 | 14 | 15 | ##### 请求成功 16 | 17 | ```json 18 | { 19 | "code": 200 20 | } 21 | ``` 22 | 23 | ### Distribute.resume(chatroom){#remove} 24 | 25 | 恢复聊天室消息分发 26 | 27 | `chatroom` 参数的**属性说明**: 28 | 29 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 30 | | :----------|:-------- |:----- |:------------------------------|:-------- | 31 | | id | string | 是 | 聊天室 Id | 3.0.0 | 32 | 33 | ##### 请求成功 34 | 35 | ```json 36 | { 37 | "code": 200 38 | } 39 | ``` 40 | -------------------------------------------------------------------------------- /docs/chatroom/gag.md: -------------------------------------------------------------------------------- 1 | ## 聊天成员禁言模块 2 | 3 | ### Gag.add(chatroom){#add} 4 | 5 | 添加聊天室成员禁言,多次调用,以最后一次为准 6 | 7 | `chatroom` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:-------- | 11 | | id | string | 是 | 聊天室 Id | 3.0.0 | 12 | | members | array | 是 | 禁言列表 | 3.0.0 | 13 | | minute | number | 是 | 禁言时长,范围 1 - 1 \* 30 \* 24 \* 60 分钟| 3.0.0 | 14 | 15 | `members` 说明: 16 | 17 | | 参数 | 类型 | 说明 |最低版本 | 18 | | :----------|:-------- |:------------------------------|:-------- | 19 | | id | string | 添加禁言用户 Id。 | 3.0.0 | 20 | 21 | ##### 请求成功 22 | 23 | ```json 24 | { 25 | "code": 200 26 | } 27 | ``` 28 | 29 | ### Gag.remove(chatroom){#remove} 30 | 31 | 解除聊天室成员禁言 32 | 33 | `chatroom` 参数的**属性说明**: 34 | 35 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 36 | | :----------|:-------- |:----- |:------------------------------|:-------- | 37 | | id | string | 是 | 聊天室 Id | 3.0.0 | 38 | | members | array | 是 | 解除禁言列表 | 3.0.0 | 39 | 40 | `members` 说明: 41 | 42 | | 参数 | 类型 | 说明 |最低版本 | 43 | | :----------|:-------- |:------------------------------|:-------- | 44 | | id | string | 解除禁言用户 Id。 | 3.0.0 | 45 | 46 | ##### 请求成功 47 | 48 | ```json 49 | { 50 | "code": 200 51 | } 52 | ``` 53 | ### Gag.getList(chatroom){#getList} 54 | 55 | 获取聊天室成员禁言列表 56 | 57 | `chatroom` 参数的**属性说明**: 58 | 59 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 60 | | :----------|:-------- |:----- |:------------------------------|:-------- | 61 | | id | string | 是 | 聊天室 Id | 3.0.0 | 62 | 63 | ##### 请求成功 64 | 65 | ```json 66 | { 67 | "code": 200, 68 | "members": [{ 69 | "time": "2015-09-25 16:12:38", 70 | "id": "2582" 71 | }] 72 | } 73 | ``` 74 | 75 | `members` 说明: 76 | 77 | | 参数 | 类型 | 说明 |最低版本 | 78 | | :----------|:-------- |:------------------------------|:-------- | 79 | | id | string | 被禁言用户 Id | 3.0.0| 80 | | time | string | 解禁时间 | 3.0.0 | 81 | -------------------------------------------------------------------------------- /docs/chatroom/keepalive.md: -------------------------------------------------------------------------------- 1 | ## 聊天室保活模块 2 | 3 | 聊天室中 1 小时无人说话,同时没有人加入聊天室时,融云服务端会自动把聊天室内所有成员`踢出`并 `销毁` 聊天室 4 | 5 | 如果不希望聊天室自动销毁,可用此接口将指定聊天室做保活处理,聊天室不会自动销毁 6 | 7 | 此功能需开通 [专有云服务](http://www.rongcloud.cn/deployment#proprietary-cloud) 8 | 9 | ### KeepAlive.add(chatroom){#add} 10 | 11 | 添加保活聊天室 12 | 13 | `chatroom` 参数的**属性说明**: 14 | 15 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 16 | | :----------|:-------- |:----- |:------------------------------|:-------- | 17 | | id | string | 是 | 聊天室 Id | 3.0.0 | 18 | 19 | ##### 请求成功 20 | 21 | ```json 22 | { 23 | "code": 200 24 | } 25 | ``` 26 | 27 | ### KeepAlive.remove(chatroom){#remove} 28 | 29 | 删除保活聊天室 30 | 31 | `chatroom` 参数的**属性说明**: 32 | 33 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 34 | | :----------|:-------- |:----- |:------------------------------|:-------- | 35 | | id | string | 是 | 聊天室 Id | 3.0.0 | 36 | 37 | ##### 请求成功 38 | 39 | ```json 40 | { 41 | "code": 200 42 | } 43 | ``` 44 | ### KeepAlive.getList(){#getList} 45 | 46 | 获取保活聊天室 47 | 48 | ##### 请求成功 49 | 50 | ```json 51 | { 52 | "code": 200, 53 | "chatrooms": ["hkuytd9o1", "lgekdk81"] 54 | } 55 | ``` 56 | 57 | | 参数 | 类型 | 说明 |最低版本 | 58 | | :----------|:-------- |:------------------------------|:-------- | 59 | | chatrooms| array | 保活聊天室列表 | 3.0.0 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /docs/chatroom/mute-members.md: -------------------------------------------------------------------------------- 1 | ## 聊天成员禁言模块 2 | 3 | ### MuteMembers.add(chatroom){#add} 4 | 5 | 添加聊天室成员禁言,多次调用,以最后一次为准 6 | 7 | `chatroom` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:-------- | 11 | | id | string | 是 | 聊天室 Id | 3.0.0 | 12 | | members | array | 是 | 禁言列表 | 3.0.0 | 13 | | minute | number | 是 | 禁言时长,范围 1 - 1 \* 30 \* 24 \* 60 分钟| 3.0.0 | 14 | 15 | `members` 说明: 16 | 17 | | 参数 | 类型 | 说明 |最低版本 | 18 | | :----------|:-------- |:------------------------------|:-------- | 19 | | id | string | 添加禁言用户 Id。 | 3.0.0 | 20 | 21 | ##### 请求成功 22 | 23 | ```json 24 | { 25 | "code": 200 26 | } 27 | ``` 28 | 29 | ### MuteMembers.remove(chatroom){#remove} 30 | 31 | 解除聊天室成员禁言 32 | 33 | `chatroom` 参数的**属性说明**: 34 | 35 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 36 | | :----------|:-------- |:----- |:------------------------------|:-------- | 37 | | id | string | 是 | 聊天室 Id | 3.0.0 | 38 | | members | array | 是 | 解除禁言列表 | 3.0.0 | 39 | 40 | `members` 说明: 41 | 42 | | 参数 | 类型 | 说明 |最低版本 | 43 | | :----------|:-------- |:------------------------------|:-------- | 44 | | id | string | 解除禁言用户 Id。 | 3.0.0 | 45 | 46 | ##### 请求成功 47 | 48 | ```json 49 | { 50 | "code": 200 51 | } 52 | ``` 53 | ### MuteMembers.getList(chatroom){#getList} 54 | 55 | 获取聊天室成员禁言列表 56 | 57 | `chatroom` 参数的**属性说明**: 58 | 59 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 60 | | :----------|:-------- |:----- |:------------------------------|:-------- | 61 | | id | string | 是 | 聊天室 Id | 3.0.0 | 62 | 63 | ##### 请求成功 64 | 65 | ```json 66 | { 67 | "code": 200, 68 | "members": [{ 69 | "time": "2015-09-25 16:12:38", 70 | "id": "2582" 71 | }] 72 | } 73 | ``` 74 | 75 | `members` 说明: 76 | 77 | | 参数 | 类型 | 说明 |最低版本 | 78 | | :----------|:-------- |:------------------------------|:-------- | 79 | | id | string | 被禁言用户 Id | 3.0.0| 80 | | time | string | 解禁时间 | 3.0.0 | 81 | -------------------------------------------------------------------------------- /docs/chatroom/whitelist/message.md: -------------------------------------------------------------------------------- 1 | ## 聊天室消息白名单模块 2 | 3 | 设置消息白名单后,服务器负载高时聊天室中此类型消息不会被丢弃,设置 2 后小时生效 4 | 5 | 设置白名单后,消息优先级高于 [High Level](../demotion.md#demotion) 消息 6 | 7 | 此功能需开通 [专有云服务](http://www.rongcloud.cn/deployment#proprietary-cloud) 8 | 9 | ### Whitelist.add(message){#add} 10 | 11 | 添加聊天室消息白名单 12 | 13 | `message` 参数的**属性说明**: 14 | 15 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 16 | | :----------|:-------- |:----- |:------------------------------|:-------- | 17 | | objectNames | array | 是 | [消息类型](../../GLOSSARY.md#message)列表 | 3.0.0 | 18 | 19 | `objectNames` 说明: 20 | 21 | | 参数 | 类型 | 说明 |最低版本 | 22 | | :----------|:-------- |:------------------------------|:-------- | 23 | | msgs | string | 消息类型 | 3.0.0| 24 | 25 | ##### 请求成功 26 | 27 | ```json 28 | { 29 | "code": 200 30 | } 31 | ``` 32 | 33 | ### Whitelist.remove(message){#remove} 34 | 35 | 删除聊天室消息白名单 36 | 37 | `message` 参数的**属性说明**: 38 | 39 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 40 | | :----------|:-------- |:----- |:------------------------------|:-------- | 41 | | objectNames | string | 是 | [消息类型](../../GLOSSARY.md#message)列表 | 3.0.0 | 42 | 43 | `objectNames` 说明: 44 | 45 | | 参数 | 类型 | 说明 |最低版本 | 46 | | :----------|:-------- |:------------------------------|:-------- | 47 | | msgs | string | 消息类型 | 3.0.0| 48 | 49 | ##### 请求成功 50 | 51 | ```json 52 | { 53 | "code": 200 54 | } 55 | ``` 56 | ### Whitelist.getList(){#getList} 57 | 58 | 获取聊天室消息白名单 59 | 60 | ##### 请求成功 61 | 62 | ```json 63 | { 64 | "code": 200, 65 | "objectNames":["RC:ImgMsg","RC:ImgTextMsg","RC:VcMsg"] 66 | } 67 | ``` 68 | 69 | | 参数 | 类型 | 说明 |最低版本 | 70 | | :----------|:-------- |:------------------------------|:-------- | 71 | | objectNames | string | 白名单消息类型列表 | 3.0.0 | 72 | -------------------------------------------------------------------------------- /docs/chatroom/whitelist/user.md: -------------------------------------------------------------------------------- 1 | ## 聊天室用户白名单模块 2 | 3 | 默认聊天室成员离线 30 秒后或离线后错过 30 条消息,会被踢出聊天室 4 | 5 | 将用户加入白名单后,用户将处于被保护状态,在以上情况下将不会被踢出聊天室 6 | 7 | 白名单中用户在当前聊天室中发送消息的级别将高于 `High Level` 8 | 9 | 聊天室销毁后,对应白名单也自动销毁 10 | 11 | 此功能需开通 [专有云服务](http://www.rongcloud.cn/deployment#proprietary-cloud) 12 | 13 | ### Whitelist.add(chatroom){#add} 14 | 15 | 将用户添加到白名单中 16 | 17 | `chatroom` 参数的**属性说明**: 18 | 19 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 20 | | :----------|:-------- |:----- |:------------------------------|:-------- | 21 | | id | string | 是 | 聊天室 Id |3.0.0| 22 | | members | string | 是 | 白名单列表,最多不超过 5 个| 3.0.0| 23 | 24 | `members` 说明: 25 | 26 | | 参数 | 类型 | 说明 |最低版本 | 27 | | :----------|:-------- |:------------------------------|:-------- | 28 | | id | string | 用户 Id。 | 3.0.0 | 29 | 30 | ##### 请求成功 31 | 32 | ```json 33 | { 34 | "code": 200 35 | } 36 | ``` 37 | 38 | ### Whitelist.remove(chatroom){#remove} 39 | 40 | 将用户从白名单中移除 41 | 42 | `chatroom` 参数的**属性说明**: 43 | 44 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 45 | | :----------|:-------- |:----- |:------------------------------|:-------- | 46 | | id | string | 是 | 聊天室 Id |3.0.0| 47 | | members | string | 是 | 移除白名单 Id 列表 | 3.0.0| 48 | 49 | `members` 说明: 50 | 51 | | 参数 | 类型 | 说明 |最低版本 | 52 | | :----------|:-------- |:------------------------------|:-------- | 53 | | id | string | 用户 Id。 | 3.0.0 | 54 | 55 | ##### 请求成功 56 | 57 | ```json 58 | { 59 | "code": 200 60 | } 61 | ``` 62 | ### Whitelist.getList(){#getList} 63 | 64 | 获取聊天室用户白名单 65 | 66 | ##### 请求成功 67 | 68 | ```json 69 | { 70 | "code": 200, 71 | "members": [{ 72 | "id": "mkij091" 73 | }] 74 | } 75 | ``` 76 | 77 | | 参数 | 类型 | 说明 |最低版本 | 78 | | :----------|:-------- |:------------------------------|:-------- | 79 | | members | array | 白名单列表 |3.0.0 | 80 | 81 | `members` 说明: 82 | 83 | | 参数 | 类型 | 说明 |最低版本 | 84 | | :----------|:-------- |:------------------------------|:-------- | 85 | | id | string | 用户 Id。 | 3.0.0 | 86 | -------------------------------------------------------------------------------- /docs/conversation/conversation.md: -------------------------------------------------------------------------------- 1 | ## 会话模块{#conversation} 2 | 3 | 会话类型说明: 4 | 5 | | 类型 | 说明 6 | | :-----------|:-------- 7 | | PRIVATE | 单聊 8 | | GROUP | 群聊 9 | | DISCUSSION| 讨论组 10 | | SYSTEM | 系统会话 11 | 12 | ### Conversation.mute(conversation){#mute} 13 | 14 | 设置用户某个会话屏蔽 Push 15 | 16 | `conversation` 参数的**属性说明**: 17 | 18 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 19 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 20 | | type | string | 是 | 会话类型 `PRIVATE`、`GROUP`、`DISCUSSION`、`SYSTEM`| 3.0.0 | 21 | | userId | string | 是 | 设置用户 Id | 3.0.0 | 22 | | targetId | string | 是 | 需要屏蔽的目标 Id | 3.0.0 | 23 | 24 | ##### 请求成功 25 | 26 | ```json 27 | { 28 | "code": 200 29 | } 30 | ``` 31 | 32 | ### Conversation.unmute(conversation){#unmute} 33 | 34 | 设置用户某个会话接收 Push 35 | 36 | `conversation` 参数的**属性说明**: 37 | 38 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 39 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 40 | | type | string | 是 | 会话类型 `PRIVATE`、`GROUP`、`DISCUSSION`、`SYSTEM`| 3.0.0 | 41 | | userId | string | 是 | 设置用户 Id | 3.0.0 | 42 | | targetId | string | 是 | 需要接收 Push 的目标 Id | 3.0.0 | 43 | 44 | ##### 请求成功 45 | 46 | ```json 47 | { 48 | "code": 200 49 | } 50 | ``` 51 | 52 | ### Conversation.get(conversation){#get} 53 | 54 | 查询用户某一会话消息免打扰的设置状态。 55 | 56 | `conversation` 参数的**属性说明**: 57 | 58 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 59 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 60 | | type | string | 是 | 会话类型 `PRIVATE`、`GROUP`、`DISCUSSION`、`SYSTEM`| 3.0.0 | 61 | | userId | string | 是 | 设置用户 Id | 3.0.0 | 62 | | targetId | string | 是 | 需要接收 Push 的目标 Id | 3.0.0 | 63 | 64 | ##### 请求成功 65 | 66 | ```json 67 | { 68 | "code": 200, 69 | "isMuted": 0 70 | } 71 | ``` 72 | 73 | | 参数 | 类型 | 说明 74 | | :----------|:-------- |:----- 75 | | code | number | 返回码,200 为正常。 76 | | isMuted | number | 消息免打扰设置状态,0 表示为关闭,1 表示为开启。 77 | -------------------------------------------------------------------------------- /docs/errorcode.md: -------------------------------------------------------------------------------- 1 | #### 错误码 2 | 3 | | 错误码 | 描述 4 | | :-----|:------------ 5 | | 1000 | 服务器端内部逻辑错误,请稍后重试 6 | | 1001 | App Key 与 App Secret 不匹配 7 | | 1002 | 参数错误,详细的描述信息会说明 8 | | 1003 | 无 POST 数据,没有 POST 任何数据 9 | | 1004 | 签名错误,请排查 Appkey、Secret 是否正确 10 | | 1005 | 长度超限,详细的描述信息会说明 11 | | 1006 | App 被锁定或删除 12 | | 1007 | 该方法被限制调用,详细的描述信息会说明 13 | | 1008 | 调用频率超限,详细的描述信息会说明 14 | | 1009 | 未开通该服务,请到开发者管理后台开通或提交工单申请 15 | | 1010 | 未使用已开启的图验功能 16 | | 1011 | 剩余条数不足,需要充值 17 | | 1012 | 图片验证码不正确 18 | | 1013 | 短信通道不可用 19 | | 1014 | 短信验证码已验证过,再次验证失效 20 | | 1015 | 删除的数据不存在,要删除的保活聊天室 ID 不存在 21 | | 1016 | 设置的保活聊天室个数超限 22 | | 1017 | 实时音视频 SDK 版本不支持 音视频 SDK 版本不支持,请使用 2.9.0 及之后的实时音视频 SDK 23 | | 1018 | 实时音视频服务未开启,请到开发者管理后台开通实时音视频服务 24 | | 1019 | 敏感词个数超过限制 25 | | 1050 | 内部服务响应超时 26 | | 1501 | 参数类型不正确,请检查参数类型 27 | | 1502 | 数量超限,详细的描述信息会说明 28 | | 1508 | http 请求体过大,应小于 100 k 29 | | 2007 | 开发环境下注册用户上限为 100 个,生产环境下注册用户不超过 100 可免费使用,超过 100 需要开通 IM 商用版 30 | -------------------------------------------------------------------------------- /docs/group/ban-user.md: -------------------------------------------------------------------------------- 1 | ## 全局群成员禁言服务 2 | 3 | ### Ban.user.add(group){#add} 4 | 5 | 添加全局群组禁言用户,禁止用户在所有群组中发送消息,禁言后只能接收群消息 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | members | array | 是 | 禁言群成员列表 |3.0.0| 12 | | minute | number | 是 | 禁言时长,范围 1 - 1 \* 30 \* 24 \* 60 分钟|3.0.0| 13 | 14 | `members` 说明: 15 | 16 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 17 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 18 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 19 | 20 | ##### 请求成功 21 | 22 | ```json 23 | { 24 | "code": 200 25 | } 26 | ``` 27 | 28 | ### Ban.user.remove(group){#remove} 29 | 30 | 解除禁言 31 | 32 | `group` 参数的**属性说明**: 33 | 34 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 35 | | :----------|:-------- |:----- |:------------------------------|:----- | 36 | | members | array | 是 | 解除禁言群成员列表 |3.0.0| 37 | 38 | `members` 说明: 39 | 40 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 41 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 42 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 43 | 44 | ##### 请求成功 45 | 46 | ```json 47 | { 48 | "code": 200 49 | } 50 | ``` 51 | 52 | ### Ban.user.getList(){#getList} 53 | 54 | 查询全局群禁言成员列表 55 | 56 | 57 | ##### 请求成功 58 | 59 | ```json 60 | { 61 | "code": 200, 62 | "members":[{ 63 | "time":"2018-03-08 16:12:38", 64 | "id":"2582" 65 | }] 66 | } 67 | ``` 68 | 69 | | 参数 | 类型 | 说明 70 | | :----------|:-------- |:----- 71 | | time | number | 解禁时间 72 | | id | string | 成员Id 73 | -------------------------------------------------------------------------------- /docs/group/ban.md: -------------------------------------------------------------------------------- 1 | ## 群组禁言服务 2 | 3 | ### Ban.add(group){#add} 4 | 5 | 设置某一群组禁言,禁言后群组中所有成员禁止发送消息,如需要某些用户可以发言时,可将此用户加入到群禁言用户白名单中。 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 11 | | id | string | 是 | 群 Id | 3.0.0 | 12 | 13 | ##### 请求成功 14 | 15 | ```json 16 | { 17 | "code": 200 18 | } 19 | ``` 20 | 21 | ### Ban.remove(group){#remove} 22 | 23 | 解除群组禁言 24 | 25 | `group` 参数的**属性说明**: 26 | 27 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 28 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 29 | | id | string | 是 | 群 Id | 3.0.0 | 30 | 31 | ##### 请求成功 32 | 33 | ```json 34 | { 35 | "code": 200 36 | } 37 | ``` 38 | 39 | ### Ban.getList(){#getList} 40 | 41 | 查询全部群组禁言列表 42 | 43 | ##### 请求成功 44 | 45 | ```json 46 | { 47 | "code": 200, 48 | "groups":[{ 49 | "id":"3212" 50 | }] 51 | } 52 | ``` 53 | 54 | | 参数 | 类型 | 说明 55 | | :----------|:-------- |:----- 56 | | id | string | 群组 Id 57 | 58 | ### BanStatus.check(group){#check} 59 | 60 | 查询群组是否禁言列表 61 | 62 | `group` 参数的**属性说明**: 63 | 64 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 65 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 66 | | id | string | 是 | 群 Id,最多不超过 20 个 | 3.0.0 | 67 | 68 | ##### 请求成功 69 | 70 | ```json 71 | { 72 | "code": 200, 73 | "groups":[{ 74 | "id":"3212", 75 | "status": 1 76 | }] 77 | } 78 | ``` 79 | 80 | | 参数 | 类型 | 说明 81 | | :----------|:-------- |:----- 82 | | id | string | 群组 Id 83 | | status | number | 禁言状态,0 表示为未禁言、1 表示为禁言 84 | -------------------------------------------------------------------------------- /docs/group/gag.md: -------------------------------------------------------------------------------- 1 | ## 群成员禁言服务 2 | 3 | ### Gag.add(group){#add} 4 | 5 | 添加群成员禁言,禁止群成员在群内发送消息,禁言后只能接收消息 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | id | string | 是 | 群组 Id |3.0.0| 12 | | members | array | 是 | 禁言群成员列表 |3.0.0| 13 | | minute | number | 是 | 禁言时长,范围 1 - 1 \* 30 \* 24 \* 60 分钟|3.0.0| 14 | 15 | `members` 说明: 16 | 17 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 18 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 19 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 20 | 21 | ##### 请求成功 22 | 23 | ```json 24 | { 25 | "code": 200 26 | } 27 | ``` 28 | 29 | ### Gag.remove(group){#remove} 30 | 31 | 解除禁言 32 | 33 | `group` 参数的**属性说明**: 34 | 35 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 36 | | :----------|:-------- |:----- |:------------------------------|:----- | 37 | | id | string | 是 | 群组 Id |3.0.0| 38 | | members | array | 是 | 解除禁言群成员列表 |3.0.0| 39 | 40 | `members` 说明: 41 | 42 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 43 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 44 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 45 | 46 | ##### 请求成功 47 | 48 | ```json 49 | { 50 | "code": 200 51 | } 52 | ``` 53 | 54 | ### Gag.getList(group){#getList} 55 | 56 | 查询禁言成员列表 57 | 58 | `group` 参数的**属性说明**: 59 | 60 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 61 | | :----------|:-------- |:----- |:------------------------------|:----- | 62 | | id | string | 是 | 群组 Id |3.0.0| 63 | 64 | ##### 请求成功 65 | 66 | ```json 67 | { 68 | "code": 200, 69 | "members":[{ 70 | "time":"2018-03-08 16:12:38", 71 | "id":"2582" 72 | }] 73 | } 74 | ``` 75 | | 参数 | 类型 | 说明 76 | | :----------|:-------- |:----- 77 | | time | number | 解禁时间 78 | | id | string | 成员Id 79 | -------------------------------------------------------------------------------- /docs/group/mute-all-members.md: -------------------------------------------------------------------------------- 1 | ## 群组整体禁言服务 2 | 3 | ### MuteAllMembers.add(group){#add} 4 | 5 | 设置某一群组禁言,禁言后群组中所有成员禁止发送消息,如需要某些用户可以发言时,可将此用户加入到群禁言用户白名单中。 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 11 | | members | array | 是 | 群 Id 列表 | 3.0.0 | 12 | 13 | `members` 说明: 14 | 15 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 16 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 17 | | id | string | 是 | 群 Id | 3.0.0 | 18 | 19 | ##### 请求成功 20 | 21 | ```json 22 | { 23 | "code": 200 24 | } 25 | ``` 26 | 27 | ### MuteAllMembers.remove(group){#remove} 28 | 29 | 解除群组禁言 30 | 31 | `group` 参数的**属性说明**: 32 | 33 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 34 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 35 | | members | array | 是 | 群 Id 列表 | 3.0.0 | 36 | 37 | `members` 说明: 38 | 39 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 40 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 41 | | id | string | 是 | 群 Id | 3.0.0 | 42 | 43 | ##### 请求成功 44 | 45 | ```json 46 | { 47 | "code": 200 48 | } 49 | ``` 50 | 51 | ### MuteAllMembers.getList(){#getList} 52 | 53 | 查询全部群组禁言列表 54 | 55 | ##### 请求成功 56 | 57 | ```json 58 | { 59 | "code": 200, 60 | "groups":[ 61 | "3212" 62 | ] 63 | } 64 | ``` 65 | 66 | | 参数 | 类型 | 说明 67 | | :----------|:-------- |:----- 68 | | id | string | 群组 Id 69 | 70 | ### MuteStatus.check(group){#check} 71 | 72 | 查询群组是否禁言列表 73 | 74 | `group` 参数的**属性说明**: 75 | 76 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 77 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 78 | | members | array | 是 | 群 Id 列表 | 3.0.0 | 79 | 80 | `members` 说明: 81 | 82 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 83 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 84 | | id | string | 是 | 群 Id | 3.0.0 | 85 | 86 | ##### 请求成功 87 | 88 | ```json 89 | { 90 | "code": 200, 91 | "groups":[{ 92 | "id":"3212", 93 | "status": 1 94 | }] 95 | } 96 | ``` 97 | 98 | | 参数 | 类型 | 说明 99 | | :----------|:-------- |:----- 100 | | id | string | 群组 Id 101 | | status | number | 禁言状态,0 表示为未禁言、1 表示为禁言 102 | -------------------------------------------------------------------------------- /docs/group/mute-members.md: -------------------------------------------------------------------------------- 1 | ## 群成员禁言服务 2 | 3 | ### MuteMembers.add(group){#add} 4 | 5 | 添加群成员禁言,禁止群成员在群内发送消息,禁言后只能接收消息 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | id | string | 是 | 群组 Id |3.0.0| 12 | | members | array | 是 | 禁言群成员列表 |3.0.0| 13 | | minute | number | 是 | 禁言时长,范围 1 - 1 \* 30 \* 24 \* 60 分钟|3.0.0| 14 | 15 | `members` 说明: 16 | 17 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 18 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 19 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 20 | 21 | ##### 请求成功 22 | 23 | ```json 24 | { 25 | "code": 200 26 | } 27 | ``` 28 | 29 | ### MuteMembers.remove(group){#remove} 30 | 31 | 解除禁言 32 | 33 | `group` 参数的**属性说明**: 34 | 35 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 36 | | :----------|:-------- |:----- |:------------------------------|:----- | 37 | | id | string | 是 | 群组 Id |3.0.0| 38 | | members | array | 是 | 解除禁言群成员列表 |3.0.0| 39 | 40 | `members` 说明: 41 | 42 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 43 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 44 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 45 | 46 | ##### 请求成功 47 | 48 | ```json 49 | { 50 | "code": 200 51 | } 52 | ``` 53 | 54 | ### MuteMembers.getList(group){#getList} 55 | 56 | 查询禁言成员列表 57 | 58 | `group` 参数的**属性说明**: 59 | 60 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 61 | | :----------|:-------- |:----- |:------------------------------|:----- | 62 | | id | string | 是 | 群组 Id |3.0.0| 63 | 64 | ##### 请求成功 65 | 66 | ```json 67 | { 68 | "code": 200, 69 | "members":[{ 70 | "time":"2018-03-08 16:12:38", 71 | "id":"2582" 72 | }] 73 | } 74 | ``` 75 | | 参数 | 类型 | 说明 76 | | :----------|:-------- |:----- 77 | | time | number | 解禁时间 78 | | id | string | 成员Id 79 | -------------------------------------------------------------------------------- /docs/group/whiteList/ban-user.md: -------------------------------------------------------------------------------- 1 | ## 群禁言用户白名单服务 2 | 3 | ### WhiteList.user.add(group){#add} 4 | 5 | 在群组被禁言状态下,如果需要某些用户可以发言时,可将此用户加入到群组禁言用户白名单中。群禁言用户白名单,只有群组被设置为全部禁言时才会生效。 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | id | string | 是 | 群 Id | 3.0.0 | 12 | | members | array | 是 | 白名单成员列表 |3.0.0| 13 | 14 | `members` 说明: 15 | 16 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 17 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 18 | | id | string | 是 | 群成员 Id,每次最多不超过 20 个。 | 3.0.0 | 19 | 20 | ##### 请求成功 21 | 22 | ```json 23 | { 24 | "code": 200 25 | } 26 | ``` 27 | 28 | ### WhiteList.user.remove(group){#remove} 29 | 30 | 移除群禁言白名单用户 31 | 32 | `group` 参数的**属性说明**: 33 | 34 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 35 | | :----------|:-------- |:----- |:------------------------------|:----- | 36 | | id | string | 是 | 群 Id | 3.0.0 | 37 | | members | array | 是 | 白名单成员列表 |3.0.0| 38 | 39 | `members` 说明: 40 | 41 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 42 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 43 | | id | string | 是 | 群成员 Id,每次最多不超过 20 个。 | 3.0.0 | 44 | 45 | ##### 请求成功 46 | 47 | ```json 48 | { 49 | "code": 200 50 | } 51 | ``` 52 | 53 | ### WhiteList.user.getList(group){#getList} 54 | 55 | 查询群禁言白名单用户列表 56 | 57 | `group` 参数的**属性说明**: 58 | 59 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 60 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 61 | | id | string | 是 | 群 Id | 3.0.0 | 62 | 63 | ##### 请求成功 64 | 65 | ```json 66 | { 67 | "code": 200, 68 | "members":[{ 69 | "id":"2582" 70 | }] 71 | } 72 | ``` 73 | 74 | | 参数 | 类型 | 说明 75 | | :----------|:-------- |:----- 76 | | id | string | 成员 Id 77 | -------------------------------------------------------------------------------- /docs/group/whiteList/mute-user.md: -------------------------------------------------------------------------------- 1 | ## 群禁言用户白名单服务 2 | 3 | ### MuteWhiteList.user.add(group){#add} 4 | 5 | 在群组被禁言状态下,如果需要某些用户可以发言时,可将此用户加入到群组禁言用户白名单中。群禁言用户白名单,只有群组被设置为全部禁言时才会生效。 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | id | string | 是 | 群 Id | 3.0.0 | 12 | | members | array | 是 | 白名单成员列表 |3.0.0| 13 | 14 | `members` 说明: 15 | 16 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 17 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 18 | | id | string | 是 | 群成员 Id,每次最多不超过 20 个。 | 3.0.0 | 19 | 20 | ##### 请求成功 21 | 22 | ```json 23 | { 24 | "code": 200 25 | } 26 | ``` 27 | 28 | ### MuteWhiteList.user.remove(group){#remove} 29 | 30 | 移除群禁言白名单用户 31 | 32 | `group` 参数的**属性说明**: 33 | 34 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 35 | | :----------|:-------- |:----- |:------------------------------|:----- | 36 | | id | string | 是 | 群 Id | 3.0.0 | 37 | | members | array | 是 | 白名单成员列表 |3.0.0| 38 | 39 | `members` 说明: 40 | 41 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 42 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 43 | | id | string | 是 | 群成员 Id,每次最多不超过 20 个。 | 3.0.0 | 44 | 45 | ##### 请求成功 46 | 47 | ```json 48 | { 49 | "code": 200 50 | } 51 | ``` 52 | 53 | ### MuteWhiteList.user.getList(group){#getList} 54 | 55 | 查询群禁言白名单用户列表 56 | 57 | `group` 参数的**属性说明**: 58 | 59 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 60 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 61 | | id | string | 是 | 群 Id | 3.0.0 | 62 | 63 | ##### 请求成功 64 | 65 | ```json 66 | { 67 | "code": 200, 68 | "members":[{ 69 | "id":"2582" 70 | }] 71 | } 72 | ``` 73 | 74 | | 参数 | 类型 | 说明 75 | | :----------|:-------- |:----- 76 | | id | string | 成员 Id 77 | -------------------------------------------------------------------------------- /docs/js/banner.js: -------------------------------------------------------------------------------- 1 | module.exports = function($) { 2 | $('.divider').remove(); 3 | $('.gitbook-link').remove(); 4 | var tpl = ` 5 |
6 |
7 | 8 |
9 |
10 | `; 11 | $('body').append(tpl); 12 | return $.html(); 13 | } -------------------------------------------------------------------------------- /docs/message/chatroom.md: -------------------------------------------------------------------------------- 1 | ## 聊天室模块 2 | 3 | ### Chatroom.send(message){#send} 4 | 5 | `message` 参数的**属性说明**: 6 | 7 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 8 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 9 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 10 | | targetId | string | 是 | 聊天室 Id| 3.0.0 | 11 | | objectName | string | 是 | 消息类型,分为两类: [内置消息类型](../GLOSSARY.md#inner-message) 、[自定义消息类型](../GLOSSARY.md#custom-message) | 3.0.0 | 12 | | content | object | 是 | 消息内容| 3.0.0 | 13 | 14 | ##### 请求成功 15 | 16 | ```json 17 | { 18 | "code": 200 19 | } 20 | ``` 21 | 22 | ### Chatroom.broadcast(message){#broadcast} 23 | 24 | 向应用内所有聊天室广播消息,此功能需开通 [专属服务](http://www.rongcloud.cn/deployment#overseas-cloud) 25 | 26 | `message` 参数的**属性说明**: 27 | 28 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 29 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 30 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 31 | | objectName | string | 是 | 消息类型, 分为两类: [内置消息类型](../GLOSSARY.md#inner-message) 、[自定义消息类型](../GLOSSARY.md#custom-message) | 3.0.0 | 32 | | content | object | 是 | 消息内容| 3.0.0 | 33 | 34 | ```json 35 | { 36 | "code": 200 37 | } 38 | ``` 39 | -------------------------------------------------------------------------------- /docs/message/history.md: -------------------------------------------------------------------------------- 1 | ## 历史消息模块 2 | 3 | ### History.get(message){#get} 4 | 5 | 按小时获取历史消息日志文件 URL,包含小时内应用产生的所有消息,消息日志文件无论是否已下载,3 天后将从融云服务器删除 6 | 7 | 消息日志文件按 `小时` 生成,例如: 获取 10 - 11 点的消息, 11 点后生成 8 | 9 | `message` 参数的**属性说明**: 10 | 11 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 12 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 13 | | date | string | 是 | 精确到小时,例如: `2018030210` 表示获取 2018 年 3 月 2 日 10 点至 11 点产生的数据 | 3.0.0 | 14 | 15 | ##### 请求成功 16 | 17 | ```json 18 | { 19 | "code": 200, 20 | "url": "http://120.92.22.186/9/2018030119/5e398bf3-df16-4e75-9385-7e37c65db649.zip" 21 | } 22 | ``` 23 | 24 | ### History.remove(message){#remove} 25 | 26 | 删除历史消息日志文件 27 | 28 | `message` 参数的**属性说明**: 29 | 30 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 31 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 32 | | date | string | 是 | 精确到小时,例如: `2018030210` 表示删除 2018 年 3 月 2 日 10 点至 11 点产生的数据文件 | 3.0.0 | 33 | 34 | ##### 请求成功 35 | 36 | ```json 37 | { 38 | "code": 200 39 | } 40 | ``` -------------------------------------------------------------------------------- /docs/message/private.md: -------------------------------------------------------------------------------- 1 | ## 单聊模块 2 | 3 | ### Private.send(message){#send} 4 | 5 | `message` 参数的**属性说明**: 6 | 7 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 8 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 9 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 10 | | targetId | string | 是 | 接收人 Id| 3.0.0 | 11 | | objectName | string | 是 | 消息类型, 分为两类: [内置消息类型](../GLOSSARY.md#inner-message) 、[自定义消息类型](../GLOSSARY.md#custom-message) | 3.0.0 | 12 | | content | object | 是 | 消息内容| 3.0.0 | 13 | | pushContent | string | 否 | push 内容, 分为两类 [内置消息 Push](../GLOSSARY.md#inner-message-push) 、[自定义消息 Push](../GLOSSARY.md#custom-message-push) | 3.0.0 | 14 | | pushData | object | 否 | iOS 平台为 Push 通知时附加到 payload 中,Android 客户端收到推送消息时对应字段名为 pushData| 3.0.0 | 15 | | count | string | 否 | 针对 iOS 平台,Push 时用来控制未读消息显示数 | 3.0.0 | 16 | | verifyBlacklist | number | 否 | 是否过滤接收用户黑名单列表, 0: 不过滤 、1: 过滤,默认: 0 | 3.0.0 | 17 | | isPersisted | number | 否 | 是否在融云服务器存储, 0: 不存储, 1: 存储, 默认: 1 | 3.0.0 | 18 | | isIncludeSender | string | 否 | 发送者自己是否接收此条消息, 0: 不接收, 1: 接收, 默认: 0| 3.0.0 | 19 | 20 | ##### 请求成功 21 | 22 | ```json 23 | { 24 | "code": 200 25 | } 26 | ``` 27 | 28 | ### Private.recall(message){#recall} 29 | 30 | 撤回已发送的单聊消息,撤回时间无限制,只允许撤回用户自己发送的消息 31 | 32 | `message` 参数的**属性说明**: 33 | 34 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 35 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 36 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 37 | | targetId | string | 是 | 接收人 Id| 3.0.0 | 38 | | uId | string | 是 | 消息的唯一标识,各端 SDK 发送消息成功后会返回 uId | 3.0.0 | 39 | | sentTime | object | 是 | 消息的发送时间,各端 SDK 发送消息成功后会返回 sentTime| 3.0.0 | 40 | 41 | ```json 42 | { 43 | "code": 200 44 | } 45 | ``` 46 | 47 | ### Private.sendTemplate(message){#sendTemplate} 48 | 49 | 向多个用户发送不同内容消息 50 | 51 | `message` 参数的**属性说明**: 52 | 53 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 54 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 55 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 56 | | objectName | string | 是 | 消息类型, 分为两类: [内置消息类型](../GLOSSARY.md#inner-message) 、[自定义消息类型](../GLOSSARY.md#custom-message) | 3.0.0 | 57 | | template | object | 是 | 发送消息模版,必须与 objectName 的消息体一致,详细请参考 [示例](../README.md#server-sdk) | 3.0.0 | 58 | | content | object | 是 | 数据内容,包含消息内容和接收者,详细请参考各平台 [SDK](../README.md)| 3.0.0 | 59 | 60 | ```json 61 | { 62 | "code": 200 63 | } 64 | ``` 65 | -------------------------------------------------------------------------------- /docs/message/system.md: -------------------------------------------------------------------------------- 1 | ## 系统消息模块 2 | 3 | ### System.send(message){#send} 4 | 5 | `message` 参数的**属性说明**: 6 | 7 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 8 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 9 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 10 | | targetId | string | 是 | 接收方 Id| 3.0.0 | 11 | | objectName | string | 是 | 消息类型, 分为两类: [内置消息类型](../GLOSSARY.md#inner-message) 、[自定义消息类型](../GLOSSARY.md#custom-message) | 3.0.0 | 12 | | content | object | 是 | 消息内容| 3.0.0 | 13 | | pushContent | string | 否 | push 内容, 分为两类 [内置消息 Push](../GLOSSARY.md#inner-message-push) 、[自定义消息 Push](../GLOSSARY.md#custom-message-push) | 3.0.0 | 14 | | pushData | object | 否 | iOS 平台为 Push 通知时附加到 payload 中,Android 客户端收到推送消息时对应字段名为 pushData| 3.0.0 | 15 | | isPersisted | string | 否 | 是否在融云服务器存储, 0: 不存储, 1: 存储, 默认: 1 | 3.0.0 | 16 | 17 | ##### 请求成功 18 | 19 | ```json 20 | { 21 | "code": 200 22 | } 23 | ``` 24 | 25 | ### System.broadcast(message){#broadcast} 26 | 27 | 给应用内所有用户发送消息,每小时最多发 2 次,每天最多发送 3 次 28 | 29 | `message` 参数的**属性说明**: 30 | 31 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 32 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 33 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 34 | | objectName | string | 是 | 消息类型, 分为两类: [内置消息类型](../GLOSSARY.md#inner-message) 、[自定义消息类型](../GLOSSARY.md#custom-message) | 3.0.0 | 35 | | content | object | 是 | 消息内容| 3.0.0 | 36 | 37 | ```json 38 | { 39 | "code": 200 40 | } 41 | ``` 42 | 43 | ### System.sendTemplate(message){#sendTemplate} 44 | 45 | `message` 参数的**属性说明**: 46 | 47 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 48 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 49 | | senderId | string | 是 | 发送人 Id| 3.0.0 | 50 | | objectName | string | 是 | 消息类型, 分为两类: [内置消息类型](../GLOSSARY.md#inner-message) 、[自定义消息类型](../GLOSSARY.md#custom-message) | 3.0.0 | 51 | | template | object | 是 | 发送消息模版,必须与 objectName 的消息体一致,详细请参考 [示例](../README.md#server-sdk) | 3.0.0 | 52 | | content | object | 是 | 数据内容,包含消息内容和接收者,详细请参考各平台 [SDK](../README.md)| 3.0.0 | 53 | 54 | ```json 55 | { 56 | "code": 200 57 | } 58 | ``` 59 | -------------------------------------------------------------------------------- /docs/sensitive/sensitive.md: -------------------------------------------------------------------------------- 1 | ## 敏感词模块 2 | 3 | 默认最多设置 50 个敏感词, 设置 2 小时后生效,目前仅支持 `文本消息(RC:TxtMsg)` 的敏感词过滤、替换功能 4 | 5 | 默认不过滤、不替换 Server API 发送的消息,需要过滤敏、替换请 [提交工单](https://developer.rongcloud.cn) 申请开通 6 | 7 | 敏感词替换目前只支持单聊、群聊、聊天室会话类型消息 8 | 9 | ### Sensitive.add(sensitive){#add} 10 | 11 | 添加敏感词 12 | 13 | `sensitive` 参数的**属性说明**: 14 | 15 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 16 | | :----------|:-------- |:----- |:------------------------------|:-------- | 17 | | keyword | string | 是 | 敏感词,最长不超过 32 个字符,格式为汉字、数字、字母|3.0.0| 18 | | type | number | 是 | 0: 敏感词替换 1: 敏感词屏蔽 | 3.0.0| 19 | | replace | string | 否 | 敏感词替换,最长不超过 32 个字符, 敏感词屏蔽可以为空 | 3.0.0| 20 | 21 | ##### 请求成功 22 | 23 | ```json 24 | { 25 | "code": 200 26 | } 27 | ``` 28 | 29 | ### Sensitive.remove(sensitive){#remove} 30 | 31 | 删除敏感词 32 | 33 | `sensitive` 参数的**属性说明**: 34 | 35 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 36 | | :----------|:-------- |:----- |:------------------------------|:-------- | 37 | | keywords | array | 是 | 每次最多删除 50 个敏感词,2 小时后生效| 3.0.0| 38 | 39 | ##### 请求成功 40 | 41 | ```json 42 | { 43 | "code": 200 44 | } 45 | ``` 46 | ### Sensitive.getList(sensitive){#getList} 47 | 48 | 获取敏感词列表 49 | 50 | `sensitive` 参数的**属性说明**: 51 | 52 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 53 | | :----------|:-------- |:----- |:------------------------------|:-------- | 54 | | type | string | 否 | 敏感词类型,0: 敏感词替换, 1: 敏感词屏蔽, 为空获取全部| 3.0.0| 55 | 56 | ##### 请求成功 57 | 58 | ```json 59 | { 60 | "code": 200, 61 | "words": [{ 62 | "type": 0, 63 | "word": "黄赌毒", 64 | "replaceWord": "***" 65 | }] 66 | } 67 | ``` 68 | | 参数 | 类型 | 说明 |最低版本 | 69 | | :----------|:-------- |:------------------------------|:-------- | 70 | | type | string | 敏感词类型,0: 敏感词替换, 1: 敏感词屏蔽|3.0.0| 71 | | keyword | string | 敏感词 |3.0.0| 72 | | replace | string | 被替换的敏感词 | 3.0.0| 73 | -------------------------------------------------------------------------------- /docs/style/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rongcloud/server-sdk-nodejs/e9e9f7a088276791679fe3c150c7eafbe93a4e52/docs/style/logo.png -------------------------------------------------------------------------------- /docs/style/website.css: -------------------------------------------------------------------------------- 1 | .book{ 2 | position: absolute; 3 | width: 100%; 4 | top: 65px; 5 | bottom: 0; 6 | height: auto; 7 | } 8 | 9 | .book .book-summary .exc-trigger:before { 10 | color: gray; 11 | } 12 | 13 | .book-body svg{ 14 | max-width: 1000px !important; 15 | } 16 | 17 | div.page-inner { 18 | position: relative; 19 | max-width: 100%; 20 | margin: 0 auto; 21 | padding: 20px 65px 40px 71px; 22 | } 23 | 24 | .navigation { 25 | min-width: 65px; 26 | } 27 | 28 | .rong-head{ 29 | position: absolute; 30 | top: 0; 31 | width: 100%; 32 | height: 65px; 33 | background: #F1F2F3; 34 | z-index: 11; 35 | } 36 | 37 | .rong-head a{ 38 | color: #FFF; 39 | } 40 | 41 | .rong-head-box-logo{ 42 | background-image: url(logo.png); 43 | background-repeat: no-repeat; 44 | height: 60px; 45 | width: 266px; 46 | background-size: contain; 47 | background-position: center; 48 | float: left; 49 | margin-left: 30px; 50 | } -------------------------------------------------------------------------------- /docs/user/blacklist.md: -------------------------------------------------------------------------------- 1 | ## 用户黑名单 2 | 3 | ### Blacklist.add(user){#add} 4 | 5 | 将对方加入黑名单,屏蔽对方消息,但自己仍可给对方发送消息,应用中每个用户均可设置自己的黑名单 6 | 7 | `user` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | id | string | 是 | 设置黑名单用户的唯一标识 |3.0.0| 12 | | blacklist| array | 是 | 被设置为黑名单的用户列表 |3.0.0| 13 | 14 | ##### 请求成功 15 | 16 | ```json 17 | { 18 | "code": 200 19 | } 20 | ``` 21 | 22 | ### Blacklist.remove(user){#remove} 23 | 24 | 将用户从黑名单中移除 25 | 26 | `user` 参数的**属性说明**: 27 | 28 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 29 | | :----------|:-------- |:----- |:------------------------------|:----- | 30 | | id | string | 是 | 用户唯一标识 |3.0.0| 31 | | blacklist| array | 是 | 被移除黑名单列表 |3.0.0| 32 | 33 | ##### 请求成功 34 | 35 | ```json 36 | { 37 | "code": 200 38 | } 39 | ``` 40 | 41 | ### Blacklist.getList(user){#getList} 42 | 43 | 获取某个用户的黑名单列表 44 | 45 | `user` 参数的**属性说明**: 46 | 47 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 48 | | :----------|:-------- |:----- |:------------------------------|:----- | 49 | | id | string | 是 | 用户唯一标识 |3.0.0| 50 | 51 | ##### 请求成功 52 | 53 | ```json 54 | { 55 | "code": 200, 56 | "users": [{ 57 | "id": "ui023" 58 | }] 59 | } 60 | ``` 61 | | 参数 | 类型 | 说明 62 | | :----------|:-------- |:----- 63 | | users | array | 被加入黑名单的 userId 列表 64 | -------------------------------------------------------------------------------- /docs/user/block.md: -------------------------------------------------------------------------------- 1 | ## 用户封禁 2 | 3 | ### Block.add(user){#add} 4 | 5 | 用户在封禁期间所有 IM 功能均不可用,例如 `连接融云服务器`、`发送消息` 封禁期满后自动解除封禁,功能恢复正常 6 | 7 | `user` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | id | string | 是 | 被封禁的用户唯一标识 |3.0.0| 12 | | minute | number | 是 | 封禁时长 1 - 1 \* 30 \* 24 \* 60 分钟,最大值为 43200 分钟|3.0.0| 13 | 14 | ##### 请求成功 15 | 16 | ```json 17 | { 18 | "code": 200 19 | } 20 | ``` 21 | 22 | ### Block.remove(user){#remove} 23 | 24 | 解除用户封禁 25 | 26 | `user` 参数的**属性说明**: 27 | 28 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 29 | | :----------|:-------- |:----- |:------------------------------|:----- | 30 | | id | string | 是 | 解除封禁用户唯一标识 |3.0.0| 31 | 32 | ##### 请求成功 33 | 34 | ```json 35 | { 36 | "code": 200 37 | } 38 | ``` 39 | 40 | ### Block.getList(){#getList} 41 | 42 | 获取封禁用户列表 43 | 44 | ##### 请求成功 45 | 46 | ```json 47 | { 48 | "code": 200, 49 | "users": [{ 50 | "id": "ujadk90ha", 51 | "blockEndTime": "2018-03-01 11:04:18" 52 | }] 53 | } 54 | ``` 55 | | 参数 | 类型 | 说明 56 | | :-------------|:-------- |:----- 57 | | id | string | 被封禁的用户 Id 58 | | blockEndTime| string | 封禁结束时间 59 | -------------------------------------------------------------------------------- /docs/user/mute-chatrooms.md: -------------------------------------------------------------------------------- 1 | ## 聊天室全局禁言模块 2 | 3 | 禁止用户在应用内所有聊天室中发言,可将此用户添加到聊天室全局禁言中,被禁言用户可以接收聊天室中聊天信息,但不能发送消息 4 | 5 | 多次调用,以最后一次为准 6 | 7 | 此功能需开通 [专有云服务](http://www.rongcloud.cn/deployment#proprietary-cloud) 8 | 9 | ### MuteChatrooms.add(chatroom){#add} 10 | 11 | 添加聊天室全局禁言 12 | 13 | `chatroom` 参数的**属性说明**: 14 | 15 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 16 | | :----------|:-------- |:----- |:------------------------------|:-------- | 17 | | members | array | 是 | 成员列表,最多不超过 20 个 |3.0.0 | 18 | | minute | number | 是 | 禁言时长,范围: 1 - 1 \* 30 \* 24 \* 60 分钟 | 3.0.0| 19 | 20 | `members` 说明: 21 | 22 | | 参数 | 类型 | 说明 |最低版本 | 23 | | :----------|:-------- |:------------------------------|:-------- | 24 | | id | string | 添加禁言用户 Id。 | 3.0.0 | 25 | 26 | ##### 请求成功 27 | 28 | ```json 29 | { 30 | "code": 200 31 | } 32 | ``` 33 | 34 | ### MuteChatrooms.remove(chatroom){#remove} 35 | 36 | 解除聊天室全局禁言 37 | 38 | `chatroom` 参数的**属性说明**: 39 | 40 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 41 | | :----------|:-------- |:----- |:------------------------------|:-------- | 42 | | members | array | 是 | 解除禁言列表 | 3.0.0 | 43 | 44 | `members` 说明: 45 | 46 | | 参数 | 类型 | 说明 |最低版本 | 47 | | :----------|:-------- |:------------------------------|:-------- | 48 | | id | string | 解除禁言用户 Id。 | 3.0.0 | 49 | 50 | ##### 请求成功 51 | 52 | ```json 53 | { 54 | "code": 200 55 | } 56 | ``` 57 | ### MuteChatrooms.getList(){#getList} 58 | 59 | 获取聊天室全局禁言列表 60 | 61 | ##### 请求成功 62 | 63 | ```json 64 | { 65 | "code": 200, 66 | "members": [{ 67 | "id": "2582", 68 | "time": "2015-09-25 16:12:38" 69 | }] 70 | } 71 | ``` 72 | | 参数 | 类型 | 说明 73 | | :----------|:-------- |:------------------------------ 74 | | id | string | 被禁言用户 Id。 75 | | time | string | 解禁时间 76 | -------------------------------------------------------------------------------- /docs/user/mute-groups.md: -------------------------------------------------------------------------------- 1 | ## 全局群成员禁言服务 2 | 3 | ### MuteGroups.add(group){#add} 4 | 5 | 添加全局群组禁言用户,禁止用户在所有群组中发送消息,禁言后只能接收群消息 6 | 7 | `group` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:----- | 11 | | members | array | 是 | 禁言群成员列表 |3.0.0| 12 | | minute | number | 是 | 禁言时长,范围 1 - 1 \* 30 \* 24 \* 60 分钟|3.0.0| 13 | 14 | `members` 说明: 15 | 16 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 17 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 18 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 19 | 20 | ##### 请求成功 21 | 22 | ```json 23 | { 24 | "code": 200 25 | } 26 | ``` 27 | 28 | ### MuteGroups.remove(group){#remove} 29 | 30 | 解除禁言 31 | 32 | `group` 参数的**属性说明**: 33 | 34 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 35 | | :----------|:-------- |:----- |:------------------------------|:----- | 36 | | members | array | 是 | 解除禁言群成员列表 |3.0.0| 37 | 38 | `members` 说明: 39 | 40 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 41 | | :---------------- |:-------- |:----- |:------------------------------|:----- | 42 | | id | string | 是 | 群成员 Id,最大长度 30 个字符 | 3.0.0 | 43 | 44 | ##### 请求成功 45 | 46 | ```json 47 | { 48 | "code": 200 49 | } 50 | ``` 51 | 52 | ### MuteGroups.getList(){#getList} 53 | 54 | 查询全局群禁言成员列表 55 | 56 | 57 | ##### 请求成功 58 | 59 | ```json 60 | { 61 | "code": 200, 62 | "members":[{ 63 | "time":"2018-03-08 16:12:38", 64 | "id":"2582" 65 | }] 66 | } 67 | ``` 68 | 69 | | 参数 | 类型 | 说明 70 | | :----------|:-------- |:----- 71 | | time | number | 解禁时间 72 | | id | string | 成员Id 73 | -------------------------------------------------------------------------------- /docs/user/online-status.md: -------------------------------------------------------------------------------- 1 | ## 用户在线状态 2 | 3 | ### OnlineStatus.check(user){#check} 4 | 5 | 检查用户是否在线,调用频率 每秒 100 次 6 | 7 | `user` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:-------- 11 | | id | string | 是 | 用户唯一标识 | 3.0.0| 12 | 13 | ##### 请求成功 14 | 15 | ```json 16 | { 17 | "code": 200, 18 | "status": 0 19 | } 20 | ``` 21 | 22 | | 参数 | 类型 | 说明 23 | | :----------|:-------- |:----- 24 | | status | number | 1: 在线 0: 离线 25 | -------------------------------------------------------------------------------- /docs/user/tag.md: -------------------------------------------------------------------------------- 1 | ## 用户标签 2 | 3 | ### Tag.set(tag){#set} 4 | 5 | 为应用中的用户添加标签,如果某用户已经添加了标签,再次对用户添加标签时将覆盖之前设置的标签内容。此功能 Java SDK 3.0.4 版本开始支持,Node.js SDK 3.0.1 版本开始支持。 6 | 7 | `tag` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 | 10 | | :----------|:-------- |:----- |:------------------------------| 11 | | userId | string | 是 | 用户 Id。 | 12 | | tags | array | 是 | 用户标签列表,一个用户最多添加 20 个标签,每个 tag 最大不能超过 40 个字节,标签中不能包含特殊字符。 | 13 | 14 | ##### 请求成功 15 | 16 | ```json 17 | { 18 | "code": 200 19 | } 20 | ``` 21 | 22 | ### Tag.batchset(tag){#batchset} 23 | 24 | 批量添加用户标签,此功能 Java SDK 3.0.4 版本开始支持,Node.js SDK 3.0.1 版本开始支持。 25 | 26 | `tag` 参数的**属性说明**: 27 | 28 | | 参数 | 类型 | 必填 | 说明 | 29 | | :----------|:-------- |:----- |:------------------------------| 30 | | userIds | array | 是 | 用户 Id 列表,一次最多支持 1000 个用户。 | 31 | | tags | array | 是 | 用户标签列表,一个用户最多添加 20 个标签,每个 tag 最大不能超过 40 个字节,标签中不能包含特殊字符。 | 32 | 33 | ##### 请求成功 34 | 35 | ```json 36 | { 37 | "code": 200 38 | } 39 | ``` 40 | 41 | ### Tag.get(user){#get} 42 | 43 | 获取用户标签信息,此功能 Java SDK 3.0.4 版本开始支持,Node.js SDK 3.0.1 版本开始支持。 44 | 45 | `user` 参数的**属性说明**: 46 | 47 | | 参数 | 类型 | 必填 | 说明 | 48 | | :----------|:-------- |:----- |:------------------------------| 49 | | userIds | array | 是 | 用户 Id 列表,一次最多支持 50 个用户。 | 50 | 51 | ##### 请求成功 52 | 53 | `JSON 格式:` 54 | 55 | ``` 56 | { 57 | "code": 200, 58 | "result": { 59 | "111": [], 60 | "222": [ 61 | "帅哥","北京" 62 | ] 63 | } 64 | } 65 | ``` 66 | 67 | 名称 | 类型 | 说明 68 | :-------|:-----|:------------------- 69 | `code` | int | 返回码,200 为正常。 70 | `result` | array | 用户所有的标签数组。 -------------------------------------------------------------------------------- /docs/user/user.md: -------------------------------------------------------------------------------- 1 | ## 用户模块 2 | 3 | ### User.register(user){#register} 4 | 5 | 生成用户在融云的唯一身份标识 `Token`,各端 SDK 使用 `Token` 连接融云服务器,终端用户在使用融云通讯能力前必须获取 Token。 6 | 7 | `user` 参数的**属性说明**: 8 | 9 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 10 | | :----------|:-------- |:----- |:------------------------------|:-------- | 11 | | id | string | 是 | 用户唯一标识,支持大小写英文字母、数字、部分特殊符号 + | = - _ 的组合方式,最大长度 64 字节。 |3.0.0| 12 | | name | string | 是 | 用户名称,最大长度 128 字节。用来在 Push 推送时显示用户的名称。 |3.0.0| 13 | | portrait | string | 是 | 用户头像地址,最大长度 1024 字节,例: `http://rongcloud.cn/portrait.jpg` 类型不限制, 建议: `jpg`、`png`|3.0.0| 14 | 15 | ##### 请求成功 16 | 17 | ```json 18 | { 19 | "code": 200, 20 | "userId": "ujadk90ha", 21 | "token": "SfJQnrPDLZNMxSl+cNLZNMxSl+cNGDRLrkqw5cNGDRLrkqw5Xap7yf5" 22 | } 23 | ``` 24 | | 参数 | 类型 | 说明 25 | | :----------|:-------- |:----- 26 | | userId | string | 用户唯一标识 27 | | token | string | 对应在融云服务器的唯一标识 28 | 29 | ### User.update(user){#update} 30 | 31 | 修改用户信息 32 | 33 | `user` 参数的**属性说明**: 34 | 35 | | 参数 | 类型 | 必填 | 说明 |最低版本 | 36 | | :----------|:-------- |:----- |:------------------------------|:-------- | 37 | | id | string | 是 | 用户唯一标识,支持大小写英文字母、数字、部分特殊符号 + | = - _ 的组合方式,最大长度 64 字节。 |3.0.0| 38 | | name | string | 是 | 用户名称,最大长度 128 字节。用来在 Push 推送时显示用户的名称。 |3.0.0| 39 | | portrait | string | 是 | 用户头像地址,最大长度 1024 字节,例: `http://rongcloud.cn/portrait.jpg` 类型不限制, 建议: `jpg`、`png`| 3.0.0| 40 | 41 | ##### 请求成功 42 | 43 | ```json 44 | { 45 | "code": 200 46 | } 47 | ``` 48 | -------------------------------------------------------------------------------- /example/co/chatroom/ban.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var Ban = Chatroom.Ban; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/ban.html#add 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | members: [{ 18 | id: 'member01' 19 | }], 20 | minute: 30 21 | }; 22 | var result = yield Ban.add(chatroom); 23 | console.log(result); 24 | }).catch(error => { 25 | console.log(error); 26 | }); 27 | 28 | /* 29 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/ban.html#remove 30 | */ 31 | co(function *() { 32 | var chatroom = { 33 | members: [{ 34 | id: 'member02' 35 | }] 36 | }; 37 | var result = yield Ban.remove(chatroom); 38 | console.log(result); 39 | }).catch(error => { 40 | console.log(error); 41 | }); 42 | 43 | /* 44 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/ban.html#getList 45 | */ 46 | co(function *() { 47 | var result = yield Ban.getList(); 48 | console.log(result); 49 | }).catch(error => { 50 | console.log(error); 51 | }); 52 | -------------------------------------------------------------------------------- /example/co/chatroom/block.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var Block = Chatroom.Block; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/block.html#add 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | id: 'chrmId001', 18 | members: [{ 19 | id: 'seal9901' 20 | }], 21 | minute: 30 22 | }; 23 | var result = yield Block.add(chatroom); 24 | console.log(result); 25 | }).catch(error => { 26 | console.log(error); 27 | }); 28 | /* 29 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/block.html#remove 30 | */ 31 | co(function *() { 32 | var chatroom = { 33 | id: 'chrmId001', 34 | members: [{ 35 | id: 'seal990' 36 | }] 37 | }; 38 | var result = yield Block.remove(chatroom); 39 | console.log(result); 40 | }).catch(error => { 41 | console.log(error); 42 | }); 43 | /* 44 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/block.html#getList 45 | */ 46 | co(function *() { 47 | var chatroom = { 48 | id: 'chrmId001' 49 | }; 50 | var result = yield Block.getList(chatroom); 51 | console.log(result); 52 | }).catch(error => { 53 | console.log(error); 54 | }); 55 | -------------------------------------------------------------------------------- /example/co/chatroom/chatroom.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#create 13 | */ 14 | co(function *() { 15 | var chatroom = { 16 | id: 'chrm001', 17 | name: 'RongCloud' 18 | }; 19 | var result = yield Chatroom.create(chatroom); 20 | console.log(result); 21 | }).catch(error => { 22 | console.log(error); 23 | }); 24 | 25 | /* 26 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#destroy 27 | */ 28 | co(function *() { 29 | var chatroom = { 30 | id: 'chrm001' 31 | }; 32 | var result = yield Chatroom.destroy(chatroom); 33 | console.log(result); 34 | }).catch(error => { 35 | console.log(error); 36 | }); 37 | 38 | /* 39 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#get 40 | */ 41 | co(function *() { 42 | var chatroom = { 43 | id: 'chrm002', 44 | count: 20, 45 | order: 1 46 | }; 47 | var result = yield Chatroom.get(chatroom); 48 | console.log(result); 49 | }).catch(error => { 50 | console.log(error); 51 | }); 52 | 53 | /* 54 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#isExist 55 | */ 56 | co(function *() { 57 | var chatroom = { 58 | id: 'chrm002', 59 | members: [{ 60 | id: 'sea9902' 61 | }] 62 | }; 63 | var result = yield Chatroom.isExist(chatroom); 64 | console.log(result); 65 | }).catch(error => { 66 | console.log(error); 67 | }); 68 | -------------------------------------------------------------------------------- /example/co/chatroom/demotion.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var Demotion = Chatroom.Demotion; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/demotion.html#add 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | msgs: ['RC:TxtMsg01', 'RC:TxtMsg02'] 18 | }; 19 | var result = yield Demotion.add(chatroom); 20 | console.log(result); 21 | }).catch(error => { 22 | console.log(error); 23 | }); 24 | /* 25 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/demotion.html#remove 26 | */ 27 | co(function *() { 28 | var chatroom = { 29 | msgs: ['RC:TxtMsg01'] 30 | }; 31 | var result = yield Demotion.remove(chatroom); 32 | console.log(result); 33 | }).catch(error => { 34 | console.log(error); 35 | }); 36 | /* 37 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/demotion.html#getList 38 | */ 39 | co(function *() { 40 | var result = yield Demotion.getList(); 41 | console.log(result); 42 | }).catch(error => { 43 | console.log(error); 44 | }); 45 | -------------------------------------------------------------------------------- /example/co/chatroom/distribute.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var Distribute = Chatroom.Distribute; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/distribute.html#stop 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | id: 'chrmId001' 18 | }; 19 | var result = yield Distribute.stop(chatroom); 20 | console.log(result); 21 | }).catch(error => { 22 | console.log(error); 23 | }); 24 | /* 25 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/distribute.html#resume 26 | */ 27 | co(function *() { 28 | var chatroom = { 29 | id: 'chrmId001' 30 | }; 31 | var result = yield Distribute.resume(chatroom); 32 | console.log(result); 33 | }).catch(error => { 34 | console.log(error); 35 | }); 36 | -------------------------------------------------------------------------------- /example/co/chatroom/gag.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var Gag = Chatroom.Gag; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/gag.html#add 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | id: 'chatroom001', 18 | members: [{ 19 | id: 'member02' 20 | }], 21 | minute: 30 22 | }; 23 | var result = yield Gag.add(chatroom); 24 | console.log(result); 25 | }).catch(error => { 26 | console.log(error); 27 | }); 28 | 29 | /* 30 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/gag.html#remove 31 | */ 32 | co(function *() { 33 | var chatroom = { 34 | id: 'chatroom001', 35 | members: [{ 36 | id: 'member02' 37 | }] 38 | }; 39 | var result = yield Gag.remove(chatroom); 40 | console.log(result); 41 | }).catch(error => { 42 | console.log(error); 43 | }); 44 | 45 | /* 46 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/gag.html#getList 47 | */ 48 | co(function *() { 49 | var chatroom = { 50 | id: 'chatroom001' 51 | }; 52 | var result = yield Gag.getList(chatroom); 53 | console.log(result); 54 | }).catch(error => { 55 | console.log(error); 56 | }); 57 | -------------------------------------------------------------------------------- /example/co/chatroom/keepalive.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var KeepAlive = Chatroom.KeepAlive; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/keepalive.html#add 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | id: 'chrmId001' 18 | }; 19 | var result = yield KeepAlive.add(chatroom); 20 | console.log(result); 21 | }).catch(error => { 22 | console.log(error); 23 | }); 24 | 25 | /* 26 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/keepalive.html#remove 27 | */ 28 | co(function *() { 29 | var chatroom = { 30 | id: 'chrmId001' 31 | }; 32 | var result = yield KeepAlive.remove(chatroom); 33 | console.log(result); 34 | }).catch(error => { 35 | console.log(error); 36 | }); 37 | 38 | /* 39 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/keepalive.html#getList 40 | */ 41 | co(function *() { 42 | var result = yield KeepAlive.getList(); 43 | console.log(result); 44 | }).catch(error => { 45 | console.log(error); 46 | }); 47 | -------------------------------------------------------------------------------- /example/co/chatroom/whitelist/message.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var WhiteList = Chatroom.Whitelist.Message; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/message.html#add 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | msgs: ['RC:TxtMsg01'] 18 | }; 19 | var result = yield WhiteList.add(chatroom); 20 | console.log(result); 21 | }).catch(error => { 22 | console.log(error); 23 | }); 24 | /* 25 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/message.html#remove 26 | */ 27 | co(function *() { 28 | var chatroom = { 29 | msgs: ['RC:TxtMsg01'] 30 | }; 31 | var result = yield WhiteList.remove(chatroom); 32 | console.log(result); 33 | }).catch(error => { 34 | console.log(error); 35 | }); 36 | 37 | /* 38 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/message.html#getList 39 | */ 40 | co(function *() { 41 | var result = yield WhiteList.getList(); 42 | console.log(result); 43 | }).catch(error => { 44 | console.log(error); 45 | }); 46 | -------------------------------------------------------------------------------- /example/co/chatroom/whitelist/user.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Chatroom = RongSDK.Chatroom; 10 | var Whitelist = Chatroom.Whitelist.User; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/user.html#add 14 | */ 15 | co(function *() { 16 | var chatroom = { 17 | id: 'chatroom001', 18 | members: [{ 19 | id: 'member01' 20 | }] 21 | }; 22 | var result = yield Whitelist.add(chatroom); 23 | console.log(result); 24 | }).catch(error => { 25 | console.log(error); 26 | }); 27 | 28 | /* 29 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/user.html#remove 30 | */ 31 | co(function *() { 32 | var chatroom = { 33 | id: 'chatroom001', 34 | members: [{ 35 | id: 'member02' 36 | }] 37 | }; 38 | var result = yield Whitelist.remove(chatroom); 39 | console.log(result); 40 | }).catch(error => { 41 | console.log(error); 42 | }); 43 | 44 | /* 45 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/user.html#getList 46 | */ 47 | co(function *() { 48 | var chatroom = { 49 | id: 'chatroom001' 50 | }; 51 | var result = yield Whitelist.getList(chatroom); 52 | console.log(result); 53 | }).catch(error => { 54 | console.log(error); 55 | }); 56 | -------------------------------------------------------------------------------- /example/co/conversation.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | //npm install co --save 3 | var co = require('co'); 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Conversation = RongSDK.Conversation; 10 | 11 | co(function* (){ 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/conversation/conversation.html#mute 14 | */ 15 | var conversation = { 16 | type: 'PRIVATE', 17 | userId: 'mka091amn', 18 | targetId: 'adm1klnm' 19 | }; 20 | var result = yield Conversation.mute(conversation); 21 | console.log(result); 22 | }).catch(error => { 23 | console.log(error); 24 | }); 25 | 26 | co(function* (){ 27 | /* 28 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/conversation/conversation.html#unmute 29 | */ 30 | var conversation = { 31 | type: 'PRIVATE', 32 | userId: 'mka091amn', 33 | targetId: 'adm1klnm' 34 | }; 35 | var result = yield Conversation.unmute(conversation); 36 | console.log(result); 37 | }).catch(error => { 38 | console.log(error); 39 | }); 40 | -------------------------------------------------------------------------------- /example/co/group/group-gag.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Group = RongSDK.Group; 10 | var Gag = Group.Gag; 11 | 12 | /* 13 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/gag.html#add 14 | */ 15 | co(function* (){ 16 | var group = { 17 | id: 'watergroup', 18 | members: [{ 19 | id: 'sea9901' 20 | }], 21 | minute: 50 22 | }; 23 | var result = yield Gag.add(group); 24 | console.log(result); 25 | }).catch(error => { 26 | console.log(error); 27 | }); 28 | 29 | /* 30 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/gag.html#remove 31 | */ 32 | co(function* (){ 33 | var group = { 34 | id: 'watergroup', 35 | members: [{ 36 | id: 'dkamn901' 37 | }] 38 | }; 39 | var result = yield Gag.remove(group); 40 | console.log(result); 41 | }).catch(error => { 42 | console.log(error); 43 | }); 44 | 45 | /* 46 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/gag.html#getList 47 | */ 48 | co(function* (){ 49 | var group = { 50 | id: 'watergroup' 51 | }; 52 | var result = yield Gag.getList(group); 53 | console.log(result); 54 | }).catch(error => { 55 | console.log(error); 56 | }); 57 | -------------------------------------------------------------------------------- /example/co/group/group.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Group = RongSDK.Group; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#sync 13 | */ 14 | co(function* (){ 15 | var user = { 16 | id: 'martin9901', 17 | groups: [{id: 'group999', name: 'RongCloud'}] 18 | }; 19 | var result = yield Group.sync(user); 20 | console.log(result); 21 | }).catch(error => { 22 | console.log(error); 23 | }); 24 | 25 | /* 26 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#create 27 | */ 28 | co(function* (){ 29 | var group = { 30 | id: 'watergroup', 31 | name: 'WaterGroup', 32 | members: [{ 33 | id: 'sea9901' 34 | }] 35 | }; 36 | var result = yield Group.create(group); 37 | console.log(result); 38 | }).catch(error => { 39 | console.log(error); 40 | }); 41 | 42 | /* 43 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#join 44 | */ 45 | co(function* (){ 46 | var group = { 47 | id: 'watergroup', 48 | member: { 49 | id: 'sea9901' 50 | } 51 | }; 52 | var result = yield Group.join(group); 53 | console.log(result); 54 | }).catch(error => { 55 | console.log(error); 56 | }); 57 | 58 | /* 59 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#quit 60 | */ 61 | co(function* (){ 62 | var group = { 63 | id: 'watergroup', 64 | member: { 65 | id: 'sea9901' 66 | } 67 | }; 68 | var result = yield Group.quit(group); 69 | console.log(result); 70 | }).catch(error => { 71 | console.log(error); 72 | }); 73 | 74 | /* 75 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#dismiss 76 | */ 77 | co(function* (){ 78 | var params = { 79 | id: 'watergroup', 80 | member: { 81 | id: 'sea9901' 82 | } 83 | }; 84 | var result = yield Group.dismiss(params); 85 | console.log(result); 86 | }).catch(error => { 87 | console.log(error); 88 | }); 89 | 90 | /* 91 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#update 92 | */ 93 | co(function* (){ 94 | var group = { 95 | id: 'watergroup', 96 | name: 'RongCloud' 97 | }; 98 | var result = yield Group.update(group); 99 | console.log(result); 100 | }).catch(error => { 101 | console.log(error); 102 | }); 103 | 104 | /* 105 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#get 106 | */ 107 | co(function* (){ 108 | var group = { 109 | id: 'watergroup' 110 | }; 111 | var result = yield Group.get(group); 112 | console.log(result); 113 | }).catch(error => { 114 | console.log(error); 115 | }); 116 | -------------------------------------------------------------------------------- /example/co/message/chatroom.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Message = RongSDK.Message; 10 | var Chatroom = Message.Chatroom; 11 | 12 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/chatroom.html#send 13 | co(function* (){ 14 | var message = { 15 | senderId: 'sea9902', 16 | targetId: 'kmn001', 17 | objectName: 'RC:TxtMsg', 18 | content: { 19 | content: '你好,主播' 20 | } 21 | }; 22 | var result = yield Chatroom.send(message); 23 | console.log(result); 24 | }).catch(error => { 25 | console.log(error); 26 | }); 27 | 28 | /* 29 | 30 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/chatroom.html#broadcast 31 | 32 | 此功能需开通专有服务: http://www.rongcloud.cn/deployment#overseas-cloud 33 | */ 34 | 35 | co(function* (){ 36 | var message = { 37 | senderId: 'sea9902', 38 | objectName: 'RC:TxtMsg', 39 | content: { 40 | content: '欢迎来到绿色直播间,禁止谩骂、涉黄等违规行为' 41 | } 42 | }; 43 | var result = yield Chatroom.broadcast(message); 44 | console.log(result); 45 | }).catch(error => { 46 | console.log(error); 47 | }); 48 | -------------------------------------------------------------------------------- /example/co/message/group.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Message = RongSDK.Message; 10 | var Group = Message.Group; 11 | 12 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/group.html#send 13 | co(function* (){ 14 | var message = { 15 | senderId: 'sea9902', 16 | targetId: 'markoiwm', 17 | objectName: 'RC:TxtMsg', 18 | content: { 19 | content: '你好,小明' 20 | } 21 | }; 22 | var result = yield Group.send(message); 23 | console.log(result); 24 | }).catch(error => { 25 | console.log(error); 26 | }); 27 | 28 | /** 29 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/group.html#sendMention 30 | */ 31 | co(function* (){ 32 | var message = { 33 | senderId: 'sea9902', 34 | targetId: 'markoiwm', 35 | objectName: 'RC:TxtMsg', 36 | content: { 37 | content: '你好,小明', 38 | mentionedInfo: { 39 | type: 1, 40 | userIds: ['kladd', 'almmn1'], 41 | pushContent: '问候消息' 42 | } 43 | } 44 | }; 45 | var result = yield Group.sendMention(message); 46 | console.log(result); 47 | }).catch(error => { 48 | console.log(error); 49 | }); 50 | 51 | /* 52 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#recall 53 | 54 | 客户端发送消息成功后可以取到消息的 uId 和 sentTime,可通过客户端将参数传到服务端 55 | */ 56 | co(function* (){ 57 | var message = { 58 | senderId: 'sea9901', 59 | targetId: 'markoiwm', 60 | uId: '5GSB-RPM1-KP8H-9JHF', 61 | sentTime: 1519444243981 62 | }; 63 | var result = yield Group.recall(message); 64 | console.log(result); 65 | }).catch(error => { 66 | console.log(error); 67 | }); 68 | -------------------------------------------------------------------------------- /example/co/message/history.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Message = RongSDK.Message; 10 | var History = Message.History; 11 | 12 | co(function* (){ 13 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/history.html#get 14 | var message = { 15 | date: '2018030613' 16 | }; 17 | var result = yield History.get(message); 18 | console.log(result); 19 | }).catch(error => { 20 | console.log(error); 21 | }); 22 | 23 | co(function* (){ 24 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/history.html#get 25 | var message = { 26 | date: '2018030613' 27 | }; 28 | var result = yield History.remove(message); 29 | console.log(result); 30 | }).catch(error => { 31 | console.log(error); 32 | }); 33 | -------------------------------------------------------------------------------- /example/co/message/private.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Message = RongSDK.Message; 10 | var Private = Message.Private; 11 | 12 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#send 13 | co(function* (){ 14 | var message = { 15 | senderId: 'sea9902', 16 | targetId: 'markoiwm', 17 | objectName: 'RC:TxtMsg', 18 | content: { 19 | content: '你好,小明' 20 | } 21 | }; 22 | var result = yield Private.send(message); 23 | console.log(result); 24 | }).catch(error => { 25 | console.log(error); 26 | }); 27 | 28 | /* 29 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#sendTemplate 30 | 31 | sea9901、sea9902 是用户 Id, 发送成功后: 32 | 33 | sea9901: 34 | 收到消息: 小明语文成绩 90 分 35 | 收到 Push: 小明你的成绩出来了 36 | 37 | sea9902: 38 | 收到消息: 小红语文成绩 95 分 39 | 收到 Push: 小红你的成绩出来了 40 | 41 | 42 | 注意事项: objectName 类型的消息与 template 中的属性需一致,例如: 43 | 44 | 文本消息的 objectName 是 RC:TxtMsg ,属性有 content ,那么 template 的属性是 content 45 | 46 | data 和 push 是必传项 47 | 48 | 消息类型对应关系请参考: http://www.rongcloud.cn/docs/server_sdk_api/GLOSSARY.html 49 | */ 50 | co(function* (){ 51 | var message = { 52 | senderId: 'kamdnq', 53 | objectName: 'RC:TxtMsg', 54 | template: { 55 | content: '{name}, 语文成绩 {score} 分' 56 | }, 57 | content: { 58 | sea9901: { 59 | data: {'{name}': '小明', '{score}': '90'}, 60 | push: '{name} 你的成绩出来了' 61 | }, 62 | sea9902: { 63 | data: {'{name}': '小红', '{score}': '95'}, 64 | push: '{name} 你的成绩出来了' 65 | } 66 | } 67 | }; 68 | var result = yield Private.sendTemplate(message); 69 | console.log(result); 70 | }).catch(error => { 71 | console.log(error); 72 | }); 73 | 74 | /* 75 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#recall 76 | 77 | 客户端发送消息成功后可以取到消息的 uId 和 sentTime,可通过客户端将参数传到服务端 78 | */ 79 | co(function* (){ 80 | var message = { 81 | senderId: 'sea9901', 82 | targetId: 'sea9902', 83 | uId: '5GSB-RPM1-KP8H-9JHF', 84 | sentTime: 1519444243981 85 | }; 86 | var result = yield Private.recall(message); 87 | console.log(result); 88 | }).catch(error => { 89 | console.log(error); 90 | }); 91 | -------------------------------------------------------------------------------- /example/co/message/system.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Message = RongSDK.Message; 10 | var System = Message.System; 11 | 12 | 13 | co(function* (){ 14 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#send 15 | var message = { 16 | senderId: '__system__', 17 | targetId: 'sea9902', 18 | objectName: 'RC:TxtMsg', 19 | content: { 20 | content: '你好,小明,我是系统管理员' 21 | } 22 | }; 23 | var result = yield System.send(message); 24 | console.log(result); 25 | }).catch(error => { 26 | console.log(error); 27 | }); 28 | 29 | co(function* (){ 30 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#broadcast 31 | var message = { 32 | senderId: '__system__', 33 | objectName: 'RC:TxtMsg', 34 | content: { 35 | content: '明天 9:00 ,20 层会议室开大会' 36 | } 37 | }; 38 | var result = yield System.broadcast(message); 39 | console.log(result); 40 | }).catch(error => { 41 | console.log(error); 42 | }); 43 | 44 | /* 45 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#sendTemplate 46 | 47 | sea9901、sea9902 是用户 Id, 发送成功后: 48 | 49 | sea9901: 50 | 收到消息: 小明语文成绩 90 分 51 | 收到 Push: 小明你的成绩出来了 52 | 53 | sea9902: 54 | 收到消息: 小红语文成绩 95 分 55 | 收到 Push: 小红你的成绩出来了 56 | 57 | 58 | 注意事项: objectName 类型的消息与 template 中的属性需一致,例如: 59 | 60 | 文本消息的 objectName 是 RC:TxtMsg ,属性有 content ,那么 template 的属性是 content 61 | 62 | data 和 push 是必传项 63 | 64 | 消息类型对应关系请参考: http://www.rongcloud.cn/docs/server_sdk_api/GLOSSARY.html 65 | */ 66 | co(function* (){ 67 | var message = { 68 | senderId: '__system__', 69 | objectName: 'RC:TxtMsg', 70 | template: { 71 | content: '{name}, 语文成绩 {score} 分' 72 | }, 73 | content: { 74 | sea9901: { 75 | data: {'{name}': '小明', '{score}': '90'}, 76 | push: '{name} 你的成绩出来了' 77 | }, 78 | sea9902: { 79 | data: {'{name}': '小红', '{score}': '95'}, 80 | push: '{name} 你的成绩出来了' 81 | } 82 | } 83 | }; 84 | var result = yield System.sendTemplate(message); 85 | console.log(result); 86 | }).catch(error => { 87 | console.log(error); 88 | }); 89 | -------------------------------------------------------------------------------- /example/co/sensitive.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var Sensitive = RongSDK.Sensitive; 10 | 11 | co(function* (){ 12 | /* 13 | 添加敏感词替换 14 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#add 15 | */ 16 | var rule = { 17 | keyword: '小米手机', 18 | replace: 'iPhone7', 19 | type: 0 20 | }; 21 | var result = yield Sensitive.add(rule); 22 | console.log(result); 23 | }).catch(error => { 24 | console.log(error); 25 | }); 26 | 27 | co(function* (){ 28 | /* 29 | 添加敏感词屏蔽 30 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#add 31 | */ 32 | var rule = { 33 | keyword: '小米手机', 34 | type: 1 35 | }; 36 | var result = yield Sensitive.add(rule); 37 | console.log(result); 38 | }).catch(error => { 39 | console.log(error); 40 | }); 41 | 42 | co(function* (){ 43 | /* 44 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#remove 45 | */ 46 | var rule = { 47 | keywords: '小米手机' 48 | }; 49 | var result = yield Sensitive.remove(rule); 50 | console.log(result); 51 | }).catch(error => { 52 | console.log(error); 53 | }); 54 | 55 | co(function* (){ 56 | /* 57 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#getList 58 | */ 59 | var result = yield Sensitive.getList(); 60 | console.log(result); 61 | }).catch(error => { 62 | console.log(error); 63 | }); 64 | -------------------------------------------------------------------------------- /example/co/user/blacklist.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var User = RongSDK.User; 10 | var Blacklist = User.Blacklist; 11 | 12 | co(function* (){ 13 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/black.html#add 14 | var user = { 15 | id: 'ujadk90ha', 16 | blacklist: [{ 17 | id: 'kkj9o01' 18 | }] 19 | }; 20 | var result = yield Blacklist.add(user); 21 | console.log(result); 22 | }).catch(error => { 23 | console.log(error); 24 | }); 25 | co(function* (){ 26 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/black.html#remove 27 | var user = { 28 | id: 'ujadk90ha', 29 | blacklist: [{ 30 | id: 'kkj9o01' 31 | }] 32 | }; 33 | var result = yield Blacklist.remove(user); 34 | console.log(result); 35 | }).catch(error => { 36 | console.log(error); 37 | }); 38 | co(function* (){ 39 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/black.html#getList 40 | var user = { 41 | id: 'ujadk90ha' 42 | }; 43 | var result = yield Blacklist.getList(user); 44 | console.log(result); 45 | }).catch(error => { 46 | console.log(error); 47 | }); 48 | -------------------------------------------------------------------------------- /example/co/user/block.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | 4 | var RongSDK = require('rongcloud-sdk')({ 5 | appkey: '8luwapkvucoil', 6 | secret: 'y0icysjl4h3LWz' 7 | }); 8 | 9 | var User = RongSDK.User; 10 | var UserBlock = User.Block; 11 | 12 | co(function* (){ 13 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/block.html#add 14 | var user = { 15 | id: 'ujadk90ha', 16 | minute: 60 17 | }; 18 | var result = yield UserBlock.add(user); 19 | console.log(result); 20 | }).catch(error => { 21 | console.log(error); 22 | }); 23 | 24 | co(function* (){ 25 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/block.html#remove 26 | var user = { 27 | id: 'ujadk90ha' 28 | }; 29 | var result = yield UserBlock.remove(user); 30 | console.log(result); 31 | }).catch(error => { 32 | console.log(error); 33 | }); 34 | 35 | co(function* (){ 36 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/block.html#getList 37 | var result = yield UserBlock.getList(); 38 | console.log(result); 39 | }).catch(error => { 40 | console.log(error); 41 | }); 42 | -------------------------------------------------------------------------------- /example/co/user/user.js: -------------------------------------------------------------------------------- 1 | //npm install co --save 2 | var co = require('co'); 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var User = RongSDK.User; 9 | 10 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/user.html#register 11 | co(function* (){ 12 | var user = { 13 | id: 'ujadk90ha', 14 | name: 'Maritn', 15 | portrait: 'http://7xogjk.com1.z0.glb.clouddn.com/IuDkFprSQ1493563384017406982' 16 | }; 17 | user = yield User.register(user); 18 | console.log(user); 19 | }).catch(error => { 20 | console.log(error); 21 | }); 22 | 23 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/user.html#update 24 | co(function* (){ 25 | var user = { 26 | id: 'ujadk90ha', 27 | name: 'MarMar', 28 | portrait: 'http://7xogjk.com1.z0.glb.clouddn.com/IuDkFprSQ1493563384017406982' 29 | }; 30 | user = yield User.update(user); 31 | console.log(user); 32 | }).catch(error => { 33 | console.log(error); 34 | }); 35 | -------------------------------------------------------------------------------- /example/promise/chatroom/ban.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var Ban = Chatroom.Ban; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/ban.html#add 13 | */ 14 | var chatroom = { 15 | members: [{ 16 | id: 'member01' 17 | }], 18 | minute: 30 19 | }; 20 | Ban.add(chatroom).then(result => { 21 | console.log(result); 22 | }, error => { 23 | console.log(error); 24 | }); 25 | 26 | /* 27 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/ban.html#remove 28 | */ 29 | var chatroom = { 30 | members: [{ 31 | id: 'member02' 32 | }] 33 | }; 34 | Ban.remove(chatroom).then(result => { 35 | console.log(result); 36 | }, error => { 37 | console.log(error); 38 | }); 39 | 40 | /* 41 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/ban.html#getList 42 | */ 43 | Ban.getList().then(result => { 44 | console.log(result); 45 | }, error => { 46 | console.log(error); 47 | }); -------------------------------------------------------------------------------- /example/promise/chatroom/block.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var Block = Chatroom.Block; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/block.html#add 13 | */ 14 | var chatroom = { 15 | id: 'chrmId001', 16 | members: [{ 17 | id: 'seal9901' 18 | }], 19 | minute: 30 20 | }; 21 | Block.add(chatroom).then(result => { 22 | console.log(result); 23 | }, error => { 24 | console.log(error); 25 | }); 26 | 27 | /* 28 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/block.html#remove 29 | */ 30 | var chatroom = { 31 | id: 'chrmId001', 32 | members: [{ 33 | id: 'seal990' 34 | }] 35 | }; 36 | Block.remove(chatroom).then(result => { 37 | console.log(result); 38 | }, error => { 39 | console.log(error); 40 | }); 41 | 42 | /* 43 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/block.html#getList 44 | */ 45 | var chatroom = { 46 | id: 'chrmId001' 47 | }; 48 | Block.getList(chatroom).then(result => { 49 | console.log(result); 50 | }, error => { 51 | console.log(error); 52 | }); -------------------------------------------------------------------------------- /example/promise/chatroom/chatroom.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | 10 | /* 11 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#create 12 | */ 13 | var chatroom = { 14 | id: 'chrm001', 15 | name: 'RongCloud' 16 | }; 17 | Chatroom.create(chatroom).then(result => { 18 | console.log(result); 19 | }, error => { 20 | console.log(error); 21 | }); 22 | 23 | /* 24 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#destroy 25 | */ 26 | var chatroom = { 27 | id: 'chrm001' 28 | }; 29 | Chatroom.destroy(chatroom).then(result => { 30 | console.log(result); 31 | }, error => { 32 | console.log(error); 33 | }); 34 | 35 | /* 36 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#get 37 | */ 38 | var chatroom = { 39 | id: 'chrm002', 40 | count: 20, 41 | order: 1 42 | }; 43 | Chatroom.get(chatroom).then(result => { 44 | console.log(result); 45 | }, error => { 46 | console.log(error); 47 | }); 48 | 49 | /* 50 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/chatroom.html#isExist 51 | */ 52 | var chatroom = { 53 | id: 'chrm002', 54 | members: [{ 55 | id: 'sea9902' 56 | }] 57 | }; 58 | Chatroom.isExist(chatroom).then(result => { 59 | console.log(result); 60 | }, error => { 61 | console.log(error); 62 | }); -------------------------------------------------------------------------------- /example/promise/chatroom/demotion.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var Demotion = Chatroom.Demotion; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/demotion.html#add 13 | */ 14 | var chatroom = { 15 | msgs: ['RC:TxtMsg01', 'RC:TxtMsg02'] 16 | }; 17 | Demotion.add(chatroom).then(result => { 18 | console.log(result); 19 | }, error => { 20 | console.log(error); 21 | }); 22 | 23 | /* 24 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/demotion.html#remove 25 | */ 26 | var chatroom = { 27 | msgs: ['RC:TxtMsg01'] 28 | }; 29 | Demotion.remove(chatroom).then(result => { 30 | console.log(result); 31 | }, error => { 32 | console.log(error); 33 | }); 34 | 35 | /* 36 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/demotion.html#getList 37 | */ 38 | Demotion.getList().then(result => { 39 | console.log(result); 40 | }, error => { 41 | console.log(error); 42 | }); -------------------------------------------------------------------------------- /example/promise/chatroom/distribute.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var Distribute = Chatroom.Distribute; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/distribute.html#stop 13 | */ 14 | var chatroom = { 15 | id: 'chrmId001' 16 | }; 17 | Distribute.stop(chatroom).then(result => { 18 | console.log(result); 19 | }, error => { 20 | console.log(error); 21 | }); 22 | 23 | /* 24 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/distribute.html#resume 25 | */ 26 | var chatroom = { 27 | id: 'chrmId001' 28 | }; 29 | Distribute.resume(chatroom).then(result => { 30 | console.log(result); 31 | }, error => { 32 | console.log(error); 33 | }); 34 | -------------------------------------------------------------------------------- /example/promise/chatroom/gag.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var Gag = Chatroom.Gag; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/gag.html#add 13 | */ 14 | var chatroom = { 15 | id: 'chatroom001', 16 | members: [{ 17 | id: 'member02' 18 | }], 19 | minute: 30 20 | }; 21 | Gag.add(chatroom).then(result => { 22 | console.log(result); 23 | }, error => { 24 | console.log(error); 25 | }); 26 | 27 | /* 28 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/gag.html#remove 29 | */ 30 | var chatroom = { 31 | id: 'chatroom001', 32 | members: [{ 33 | id: 'member02' 34 | }] 35 | }; 36 | Gag.remove(chatroom).then(result => { 37 | console.log(result); 38 | }, error => { 39 | console.log(error); 40 | }); 41 | 42 | /* 43 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/gag.html#getList 44 | */ 45 | var chatroom = { 46 | id: 'chatroom001' 47 | }; 48 | Gag.getList(chatroom).then(result => { 49 | console.log(result); 50 | }, error => { 51 | console.log(error); 52 | }); -------------------------------------------------------------------------------- /example/promise/chatroom/keepalive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var KeepAlive = Chatroom.KeepAlive; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/keepalive.html#add 13 | */ 14 | var chatroom = { 15 | id: 'chrmId001' 16 | }; 17 | KeepAlive.add(chatroom).then(result => { 18 | console.log(result); 19 | }, error => { 20 | console.log(error); 21 | }); 22 | 23 | /* 24 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/keepalive.html#remove 25 | */ 26 | var chatroom = { 27 | id: 'chrmId001' 28 | }; 29 | KeepAlive.remove(chatroom).then(result => { 30 | console.log(result); 31 | }, error => { 32 | console.log(error); 33 | }); 34 | 35 | /* 36 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/chatroom/keepalive.html#getList 37 | */ 38 | KeepAlive.getList().then(result => { 39 | console.log(result); 40 | }, error => { 41 | console.log(error); 42 | }); -------------------------------------------------------------------------------- /example/promise/chatroom/whitelist/message.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var WhiteList = Chatroom.Whitelist.Message; 10 | 11 | /* 12 | http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/message.html#add 13 | */ 14 | var chatroom = { 15 | msgs: ['RC:TxtMsg01'] 16 | }; 17 | WhiteList.add(chatroom).then(result => { 18 | console.log(result); 19 | }, error => { 20 | console.log(error); 21 | }); 22 | 23 | /* 24 | http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/message.html#remove 25 | */ 26 | var chatroom = { 27 | msgs: ['RC:TxtMsg01'] 28 | }; 29 | WhiteList.remove(chatroom).then(result => { 30 | console.log(result); 31 | }, error => { 32 | console.log(error); 33 | }); 34 | 35 | /* 36 | http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/message.html#getList 37 | */ 38 | WhiteList.getList().then(result => { 39 | console.log(result); 40 | }, error => { 41 | console.log(error); 42 | }); 43 | -------------------------------------------------------------------------------- /example/promise/chatroom/whitelist/user.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Chatroom = RongSDK.Chatroom; 9 | var Whitelist = Chatroom.Whitelist.User; 10 | 11 | /* 12 | http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/user.html#add 13 | */ 14 | var chatroom = { 15 | id: 'chatroom001', 16 | members: [{ 17 | id: 'member01' 18 | }] 19 | }; 20 | Whitelist.add(chatroom).then(result => { 21 | console.log(result); 22 | }, error => { 23 | console.log(error); 24 | }); 25 | 26 | /* 27 | http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/user.html#remove 28 | */ 29 | var chatroom = { 30 | id: 'chatroom001', 31 | members: [{ 32 | id: 'member02' 33 | }] 34 | }; 35 | Whitelist.remove(chatroom).then(result => { 36 | console.log(result); 37 | }, error => { 38 | console.log(error); 39 | }); 40 | 41 | /* 42 | http://www.rongcloud.cn/docs/server_sdk_api/chatroom/whitelist/user.html#getList 43 | */ 44 | var chatroom = { 45 | id: 'chatroom001' 46 | }; 47 | Whitelist.getList(chatroom).then(result => { 48 | console.log(result); 49 | }, error => { 50 | console.log(error); 51 | }); 52 | -------------------------------------------------------------------------------- /example/promise/conversation.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('../')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Conversation = RongSDK.Conversation; 9 | 10 | /* 11 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/conversation/conversation.html#mute 12 | */ 13 | var conversation = { 14 | type: 'PRIVATE', 15 | userId: 'mka091amn', 16 | targetId: 'adm1klnm' 17 | }; 18 | Conversation.mute(conversation).then(result => { 19 | console.log(result); 20 | }, error => { 21 | console.log(error); 22 | }); 23 | 24 | /* 25 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/conversation/conversation.html#unmute 26 | */ 27 | var conversation = { 28 | type: 'PRIVATE', 29 | userId: 'mka091amn', 30 | targetId: 'adm1klnm' 31 | }; 32 | Conversation.unmute(conversation).then(result => { 33 | console.log(result); 34 | }, error => { 35 | console.log(error); 36 | }); 37 | -------------------------------------------------------------------------------- /example/promise/group/group-gag.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Group = RongSDK.Group; 9 | var Gag = Group.Gag; 10 | 11 | /* 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/gag.html#add 13 | */ 14 | var group = { 15 | id: 'watergroup', 16 | members: [{ 17 | id: 'sea9901' 18 | }], 19 | minute: 50 20 | }; 21 | Gag.add(group).then(result => { 22 | console.log(result); 23 | }, error => { 24 | console.log(error); 25 | }); 26 | 27 | /* 28 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/gag.html#remove 29 | */ 30 | var group = { 31 | id: 'watergroup', 32 | members: [{ 33 | id: 'dkamn901' 34 | }] 35 | }; 36 | Gag.remove(group).then(result => { 37 | console.log(result); 38 | }, error => { 39 | console.log(error); 40 | }); 41 | 42 | /* 43 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/gag.html#getList 44 | */ 45 | var group = { 46 | id: 'watergroup' 47 | }; 48 | Gag.getList(group).then(result => { 49 | console.log(result); 50 | }, error => { 51 | console.log(error); 52 | }); -------------------------------------------------------------------------------- /example/promise/group/group-mute-all.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | var Group = RongSDK.Group; 8 | var MuteAll = Group.Mute.All; 9 | 10 | /* 11 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/mute-all-members.html#add 12 | */ 13 | MuteAll.add({ 14 | groups: [{ 15 | id: 'WaterGroup' 16 | }] 17 | }).then(result => { 18 | console.log(result); 19 | }, error => { 20 | console.log(error); 21 | }); 22 | 23 | /* 24 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/mute-all-members.html#remove 25 | */ 26 | MuteAll.remove({ 27 | groups: [{ 28 | id: 'WaterGroup' 29 | }] 30 | }).then(result => { 31 | console.log(result); 32 | }, error => { 33 | console.log(error); 34 | }); 35 | 36 | /* 37 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/mute-all-members.html#getList 38 | */ 39 | MuteAll.getList().then(result => { 40 | console.log(result); 41 | }, error => { 42 | console.log(error); 43 | }); -------------------------------------------------------------------------------- /example/promise/group/group-mute-member.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Group = RongSDK.Group; 9 | var MuteMember = Group.Mute.Member; 10 | 11 | /* 12 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/mute-members.html#add 13 | */ 14 | var group = { 15 | id: 'watergroup', 16 | members: [{ 17 | id: 'sea9901' 18 | }], 19 | minute: 50 20 | }; 21 | MuteMember.add(group).then(result => { 22 | console.log(result); 23 | }, error => { 24 | console.log(error); 25 | }); 26 | 27 | /* 28 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/mute-members.html#remove 29 | */ 30 | var group = { 31 | id: 'watergroup', 32 | members: [{ 33 | id: 'dkamn901' 34 | }] 35 | }; 36 | MuteMember.remove(group).then(result => { 37 | console.log(result); 38 | }, error => { 39 | console.log(error); 40 | }); 41 | 42 | /* 43 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/mute-members.html#getList 44 | */ 45 | var group = { 46 | id: 'watergroup' 47 | }; 48 | MuteMember.getList(group).then(result => { 49 | console.log(result); 50 | }, error => { 51 | console.log(error); 52 | }); -------------------------------------------------------------------------------- /example/promise/group/group-mute-whitelist.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | var Group = RongSDK.Group; 8 | var MuteWhitelist = Group.Mute.Whitelist; 9 | 10 | /* 11 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/whiteList/mute-user.html#add 12 | */ 13 | MuteWhitelist.add({ 14 | id: 'WaterGroup', 15 | members: [{ 16 | id: 'sea9901' 17 | }] 18 | }).then(result => { 19 | console.log(result); 20 | }, error => { 21 | console.log(error); 22 | }); 23 | 24 | /* 25 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/whiteList/mute-user.html#remove 26 | */ 27 | MuteWhitelist.remove({ 28 | id: 'WaterGroup', 29 | members: [{ 30 | id: 'sea9901' 31 | }] 32 | }).then(result => { 33 | console.log(result); 34 | }, error => { 35 | console.log(error); 36 | }); 37 | /* 38 | API 文档: https://www.rongcloud.cn/docs/server_sdk_api/group/whiteList/mute-user.html#getList 39 | */ 40 | MuteWhitelist.getList({ 41 | id: 'WaterGroup' 42 | }).then(result => { 43 | console.log(result); 44 | }, error => { 45 | console.log(error); 46 | }); -------------------------------------------------------------------------------- /example/promise/group/group.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Group = RongSDK.Group; 9 | 10 | /* 11 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#sync 12 | */ 13 | var user = { 14 | id: 'martin9901', 15 | groups: [{id: 'group999', name: 'RongCloud'}] 16 | }; 17 | Group.sync(user).then(result => { 18 | console.log(result); 19 | }, error => { 20 | console.log(error); 21 | }); 22 | 23 | /* 24 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#create 25 | */ 26 | var group = { 27 | id: 'watergroup', 28 | name: 'WaterGroup', 29 | members: [{ 30 | id: 'sea9901' 31 | }] 32 | }; 33 | Group.create(group).then(result => { 34 | console.log(result); 35 | }, error => { 36 | console.log(error); 37 | }); 38 | 39 | /* 40 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#join 41 | */ 42 | var group = { 43 | id: 'watergroup', 44 | member: { 45 | id: 'sea9901' 46 | } 47 | }; 48 | Group.join(group).then(result => { 49 | console.log(result); 50 | }, error => { 51 | console.log(error); 52 | }); 53 | 54 | /* 55 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#quit 56 | */ 57 | var group = { 58 | id: 'watergroup', 59 | member: { 60 | id: 'sea9901' 61 | } 62 | }; 63 | Group.quit(group).then(result => { 64 | console.log(result); 65 | }, error => { 66 | console.log(error); 67 | }); 68 | 69 | /* 70 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#dismiss 71 | */ 72 | var params = { 73 | id: 'watergroup', 74 | member: { 75 | id: 'sea9901' 76 | } 77 | }; 78 | Group.dismiss(params).then(result => { 79 | console.log(result); 80 | }, error => { 81 | console.log(error); 82 | }); 83 | 84 | /* 85 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#update 86 | */ 87 | var group = { 88 | id: 'watergroup', 89 | name: 'RongCloud' 90 | }; 91 | Group.update(group).then(result => { 92 | console.log(result); 93 | }, error => { 94 | console.log(error); 95 | }); 96 | 97 | /* 98 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/group/group.html#get 99 | */ 100 | var group = { 101 | id: 'watergroup' 102 | }; 103 | Group.get(group).then(result => { 104 | console.log(result); 105 | }, error => { 106 | console.log(error); 107 | }); 108 | -------------------------------------------------------------------------------- /example/promise/message/chatroom.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Message = RongSDK.Message; 9 | var Chatroom = Message.Chatroom; 10 | 11 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/chatroom.html#send 12 | var message = { 13 | senderId: 'sea9902', 14 | targetId: 'kmn001', 15 | objectName: 'RC:TxtMsg', 16 | content: { 17 | content: '你好,主播' 18 | } 19 | }; 20 | Chatroom.send(message).then(result => { 21 | console.log(result); 22 | }, error => { 23 | console.log(error); 24 | }); 25 | 26 | /* 27 | 28 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/chatroom.html#broadcast 29 | 30 | 此功能需开通专有服务: http://www.rongcloud.cn/deployment#overseas-cloud 31 | */ 32 | 33 | var message = { 34 | senderId: 'sea9902', 35 | objectName: 'RC:TxtMsg', 36 | content: { 37 | content: '欢迎来到绿色直播间,禁止谩骂、涉黄等违规行为' 38 | } 39 | }; 40 | Chatroom.broadcast(message).then(result => { 41 | console.log(result); 42 | }, error => { 43 | console.log(error); 44 | }); 45 | -------------------------------------------------------------------------------- /example/promise/message/group.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Message = RongSDK.Message; 9 | var Group = Message.Group; 10 | 11 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/group.html#send 12 | var message = { 13 | senderId: 'sea9902', 14 | targetId: 'markoiwm', 15 | objectName: 'RC:TxtMsg', 16 | content: { 17 | content: '你好,小明' 18 | } 19 | }; 20 | Group.send(message).then(result => { 21 | console.log(result); 22 | }, error => { 23 | console.log(error); 24 | }); 25 | 26 | /** 27 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/group.html#sendMention 28 | */ 29 | var message = { 30 | senderId: 'sea9902', 31 | targetId: 'markoiwm', 32 | objectName: 'RC:TxtMsg', 33 | content: { 34 | content: '你好,小明', 35 | mentionedInfo: { 36 | type: 1, 37 | userIds: ['kladd', 'almmn1'], 38 | pushContent: '问候消息' 39 | } 40 | } 41 | }; 42 | Group.sendMention(message).then(result => { 43 | console.log(result); 44 | }, error => { 45 | console.log(error); 46 | }); 47 | 48 | /* 49 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#recall 50 | 51 | 客户端发送消息成功后可以取到消息的 uId 和 sentTime,可通过客户端将参数传到服务端 52 | */ 53 | var message = { 54 | senderId: 'sea9901', 55 | targetId: 'markoiwm', 56 | uId: '5GSB-RPM1-KP8H-9JHF', 57 | sentTime: 1519444243981 58 | }; 59 | Group.recall(message).then(result => { 60 | console.log(result); 61 | }, error => { 62 | console.log(error); 63 | }); 64 | -------------------------------------------------------------------------------- /example/promise/message/history.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Message = RongSDK.Message; 9 | var History = Message.History; 10 | 11 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/history.html#get 12 | var message = { 13 | date: '2018030613' 14 | }; 15 | History.get(message).then(result => { 16 | console.log(result); 17 | }, error => { 18 | console.log(error); 19 | }); 20 | 21 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/history.html#get 22 | var message = { 23 | date: '2018030613' 24 | }; 25 | History.remove(message).then(result => { 26 | console.log(result); 27 | }, error => { 28 | console.log(error); 29 | }); -------------------------------------------------------------------------------- /example/promise/message/private.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Message = RongSDK.Message; 9 | var Private = Message.Private; 10 | 11 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#send 12 | var message = { 13 | senderId: 'sea9902', 14 | targetId: 'markoiwm', 15 | objectName: 'RC:TxtMsg', 16 | content: { 17 | content: '你好,小明' 18 | } 19 | }; 20 | Private.send(message).then(result => { 21 | console.log(result); 22 | }, error => { 23 | console.log(error); 24 | }); 25 | 26 | /* 27 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#sendTemplate 28 | 29 | sea9901、sea9902 是用户 Id, 发送成功后: 30 | 31 | sea9901: 32 | 收到消息: 小明语文成绩 90 分 33 | 收到 Push: 小明你的成绩出来了 34 | 35 | sea9902: 36 | 收到消息: 小红语文成绩 95 分 37 | 收到 Push: 小红你的成绩出来了 38 | 39 | 40 | 注意事项: objectName 类型的消息与 template 中的属性需一致,例如: 41 | 42 | 文本消息的 objectName 是 RC:TxtMsg ,属性有 content ,那么 template 的属性是 content 43 | 44 | data 和 push 是必传项 45 | 46 | 消息类型对应关系请参考: http://www.rongcloud.cn/docs/server_sdk_api/GLOSSARY.html 47 | */ 48 | var message = { 49 | senderId: 'kamdnq', 50 | objectName: 'RC:TxtMsg', 51 | template: { 52 | content: '{name}, 语文成绩 {score} 分' 53 | }, 54 | content: { 55 | sea9901: { 56 | data: {'{name}': '小明', '{score}': '90'}, 57 | push: '{name} 你的成绩出来了' 58 | }, 59 | sea9902: { 60 | data: {'{name}': '小红', '{score}': '95'}, 61 | push: '{name} 你的成绩出来了' 62 | } 63 | } 64 | }; 65 | Private.sendTemplate(message).then(result => { 66 | console.log(result); 67 | }, error => { 68 | console.log(error); 69 | }); 70 | 71 | /* 72 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#recall 73 | 74 | 客户端发送消息成功后可以取到消息的 uId 和 sentTime,可通过客户端将参数传到服务端 75 | */ 76 | var message = { 77 | senderId: 'sea9901', 78 | targetId: 'sea9902', 79 | uId: '5GSB-RPM1-KP8H-9JHF', 80 | sentTime: 1519444243981 81 | }; 82 | Private.recall(message).then(result => { 83 | console.log(result); 84 | }, error => { 85 | console.log(error); 86 | }); 87 | 88 | -------------------------------------------------------------------------------- /example/promise/message/system.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Message = RongSDK.Message; 9 | var System = Message.System; 10 | 11 | 12 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#send 13 | var message = { 14 | senderId: '__system__', 15 | targetId: 'sea9902', 16 | objectName: 'RC:TxtMsg', 17 | content: { 18 | content: '你好,小明,我是系统管理员' 19 | } 20 | }; 21 | System.send(message).then(result => { 22 | console.log(result); 23 | }, error => { 24 | console.log(error); 25 | }); 26 | 27 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#broadcast 28 | var message = { 29 | senderId: '__system__', 30 | objectName: 'RC:TxtMsg', 31 | content: { 32 | content: '明天 9:00 ,20 层会议室开大会' 33 | } 34 | }; 35 | System.broadcast(message).then(result => { 36 | console.log(result); 37 | }, error => { 38 | console.log(error); 39 | }); 40 | 41 | /* 42 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#sendTemplate 43 | 44 | sea9901、sea9902 是用户 Id, 发送成功后: 45 | 46 | sea9901: 47 | 收到消息: 小明语文成绩 90 分 48 | 收到 Push: 小明你的成绩出来了 49 | 50 | sea9902: 51 | 收到消息: 小红语文成绩 95 分 52 | 收到 Push: 小红你的成绩出来了 53 | 54 | 55 | 注意事项: objectName 类型的消息与 template 中的属性需一致,例如: 56 | 57 | 文本消息的 objectName 是 RC:TxtMsg ,属性有 content ,那么 template 的属性是 content 58 | 59 | data 和 push 是必传项 60 | 61 | 消息类型对应关系请参考: http://www.rongcloud.cn/docs/server_sdk_api/GLOSSARY.html 62 | */ 63 | var message = { 64 | senderId: '__system__', 65 | objectName: 'RC:TxtMsg', 66 | template: { 67 | content: '{name}, 语文成绩 {score} 分' 68 | }, 69 | content: { 70 | sea9901: { 71 | data: {'{name}': '小明', '{score}': '90'}, 72 | push: '{name} 你的成绩出来了' 73 | }, 74 | sea9902: { 75 | data: {'{name}': '小红', '{score}': '95'}, 76 | push: '{name} 你的成绩出来了' 77 | } 78 | } 79 | }; 80 | 81 | System.sendTemplate(message).then(result => { 82 | console.log(result); 83 | }, error => { 84 | console.log(error); 85 | }); -------------------------------------------------------------------------------- /example/promise/push.js: -------------------------------------------------------------------------------- 1 | let RongSDK = require('../../index')({ 2 | appkey: '8luwapkvucoil', 3 | secret: 'y0icysjl4h3LWz' 4 | }); 5 | 6 | let Push = RongSDK.Push; 7 | 8 | // let content = { 9 | // platform: ["ios", "android"], 10 | // audience: { tag: ["女", "年轻"], tag_or: ["北京", "上海"], userid: ["123", "456"], "is_to_all": false }, 11 | // notification: { 12 | // alert: "this is a push", 13 | // ios: { title: "标题", alert: "override alert", extras: { id: "userId2", name: "Lisa" } }, 14 | // android: { alert: "override alert", extras: { id: "userId", name: "martin" } } 15 | // } 16 | // }; 17 | // Push.push(content).then(result => { 18 | // console.log(result); 19 | // }, error => { 20 | // console.log(error); 21 | // }); 22 | 23 | let content = { 24 | platform: ["ios", "android"], 25 | fromUserId: 'mon888', 26 | audience: { tag: ["女", "年轻"], tag_or: ["北京", "上海"], userid: ["123", "456"], is_to_all: false }, 27 | message: { 28 | content: JSON.stringify({ content: 'hello' }), 29 | objectName: "RC:TxtMsg" 30 | }, 31 | notification: { 32 | alert: "this is a push", 33 | ios: { title: "标题", alert: "override alert", extras: { id: "userId2", name: "Lisa" } }, 34 | android: { alert: "override alert", extras: { id: "userId", name: "martin" } } 35 | } 36 | }; 37 | Push.message(content).then(result => { 38 | console.log(result); 39 | }, error => { 40 | console.log(error); 41 | }); 42 | 43 | -------------------------------------------------------------------------------- /example/promise/sensitive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('../')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var Sensitive = RongSDK.Sensitive; 9 | 10 | /* 11 | 添加敏感词替换 12 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#add 13 | */ 14 | var rule = { 15 | keyword: '小米手机', 16 | replace: 'iPhone7', 17 | type: 0 18 | }; 19 | Sensitive.add(rule).then(result => { 20 | console.log(result); 21 | }, error => { 22 | console.log(error); 23 | }); 24 | 25 | /* 26 | 添加敏感词屏蔽 27 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#add 28 | */ 29 | var rule = { 30 | keyword: '小米手机', 31 | type: 1 32 | }; 33 | Sensitive.add(rule).then(result => { 34 | console.log(result); 35 | }, error => { 36 | console.log(error); 37 | }); 38 | 39 | /* 40 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#remove 41 | */ 42 | var rule = { 43 | keywords: '小米手机' 44 | }; 45 | Sensitive.remove(rule).then(result => { 46 | console.log(result); 47 | }, error => { 48 | console.log(error); 49 | }); 50 | 51 | /* 52 | API 文档: http://www.rongcloud.cn/docs/server_sdk_api/sensitive/sensitive.html#getList 53 | */ 54 | Sensitive.getList().then(result => { 55 | console.log(result); 56 | }, error => { 57 | console.log(error); 58 | }); -------------------------------------------------------------------------------- /example/promise/user/blacklist.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('../../')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var User = RongSDK.User; 9 | var Blacklist = User.Blacklist; 10 | 11 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/black.html#add 12 | var user = { 13 | id: 'ujadk90ha', 14 | blacklist: [{ 15 | id: 'kkj9o01' 16 | }] 17 | }; 18 | Blacklist.add(user).then(result => { 19 | console.log(result); 20 | }, error => { 21 | console.log(error); 22 | }); 23 | 24 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/black.html#remove 25 | var user = { 26 | id: 'ujadk90ha', 27 | blacklist: [{ 28 | id: 'kkj9o01' 29 | }] 30 | }; 31 | Blacklist.remove(user).then(result => { 32 | console.log(result); 33 | }, error => { 34 | console.log(error); 35 | }); 36 | 37 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/black.html#getList 38 | var user = { 39 | id: 'ujadk90ha' 40 | }; 41 | Blacklist.getList(user).then(result => { 42 | console.log(result); 43 | }, error => { 44 | console.log(error); 45 | }); -------------------------------------------------------------------------------- /example/promise/user/block.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var User = RongSDK.User; 9 | var UserBlock = User.Block; 10 | 11 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/block.html#add 12 | var user = { 13 | id: 'ujadk90ha', 14 | minute: 60 15 | }; 16 | UserBlock.add(user).then(result => { 17 | console.log(result); 18 | }, error => { 19 | console.log(error); 20 | }); 21 | 22 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/block.html#remove 23 | var user = { 24 | id: 'ujadk90ha' 25 | }; 26 | UserBlock.remove(user).then(result => { 27 | console.log(result); 28 | }, error => { 29 | console.log(error); 30 | }); 31 | 32 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/block.html#getList 33 | UserBlock.getList().then(result => { 34 | console.log(result); 35 | }, error => { 36 | console.log(error); 37 | }); 38 | -------------------------------------------------------------------------------- /example/promise/user/tag.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var User = RongSDK.User; 9 | var UserTag = User.Tag; 10 | 11 | /* 设置指定用户 Tag */ 12 | var user = { 13 | id: 'ujadk90ha', 14 | tags: ["RongCloud"] 15 | }; 16 | UserTag.set(user).then(result => { 17 | console.log(result); 18 | }, error => { 19 | console.log(error); 20 | }); 21 | 22 | /* 移除指定用户 Tag */ 23 | var user = { 24 | id: 'ujadk90ha' 25 | }; 26 | UserTag.remove(user).then(result => { 27 | console.log(result); 28 | }, error => { 29 | console.log(error); 30 | }); 31 | 32 | /* 批量获取用户 Tag */ 33 | var users = [{ 34 | id: 'mon9901' 35 | },{ 36 | id: 'mon9902' 37 | },{ 38 | id: 'ujadk90ha' 39 | }]; 40 | UserTag.getList(users).then(result => { 41 | console.log(result); 42 | }, error => { 43 | console.log(error); 44 | }); 45 | 46 | /* 批量设置用户 Tag */ 47 | var params = { 48 | users: [{ 49 | id: 'mon9901' 50 | },{ 51 | id: 'mon9902' 52 | }], 53 | tags: ["IM", "RTC"] 54 | }; 55 | UserTag.batchSet(params).then(result => { 56 | console.log(result); 57 | }, error => { 58 | console.log(error); 59 | }); 60 | 61 | /* 批量移除用户 Tag */ 62 | var params = { 63 | users: [{ 64 | id: 'mon9901' 65 | }] 66 | }; 67 | UserTag.batchRemove(params).then(result => { 68 | console.log(result); 69 | }, error => { 70 | console.log(error); 71 | }); -------------------------------------------------------------------------------- /example/promise/user/user.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var RongSDK = require('rongcloud-sdk')({ 4 | appkey: '8luwapkvucoil', 5 | secret: 'y0icysjl4h3LWz' 6 | }); 7 | 8 | var User = RongSDK.User; 9 | 10 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/user.html#register 11 | var user = { 12 | id: 'ujadk90ha', 13 | name: 'Maritn', 14 | portrait: 'http://7xogjk.com1.z0.glb.clouddn.com/IuDkFprSQ1493563384017406982' 15 | }; 16 | User.register(user).then(result => { 17 | console.log(result); 18 | }, error => { 19 | console.log(error); 20 | }); 21 | 22 | // API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/user.html#update 23 | var user = { 24 | id: 'ujadk90ha', 25 | name: 'MarMar', 26 | portrait: 'http://7xogjk.com1.z0.glb.clouddn.com/IuDkFprSQ1493563384017406982' 27 | }; 28 | User.update(user).then(result => { 29 | console.log(result); 30 | }, error => { 31 | console.log(error); 32 | }); -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/rongcloud'); -------------------------------------------------------------------------------- /lib/chatroom/ban/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_user_ban_add", 4 | "url": "chatroom/user/ban/add", 5 | "params": { 6 | "chatroom": { 7 | "members": [{ 8 | "id": "akfj0a1" 9 | }], 10 | "minute": 100 11 | } 12 | }, 13 | "response": { 14 | "success": { 15 | "code": 200, 16 | "msg": "成功返回" 17 | }, 18 | "fail": { 19 | "20004": { 20 | "code": "20004", 21 | "msg": "封禁时间不正确, 当前传入为 {{size}}, 正确范围 1 - 1 * 30 * 24 * 60 分钟" 22 | }, 23 | "20005": { 24 | "code": "20005", 25 | "msg": "{{name}} 参数为必传项" 26 | }, 27 | "20006": { 28 | "code": "20006", 29 | "msg": "user 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 30 | }, 31 | "1004": { 32 | "code": "20000", 33 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 34 | }, 35 | "1008": { 36 | "code": "20001", 37 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 38 | } 39 | } 40 | } 41 | }, 42 | "remove": { 43 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_user_ban_remove", 44 | "url": "chatroom/user/ban/remove", 45 | "params": { 46 | "chatroom": { 47 | "members": [{ 48 | "id": "akfj0a1" 49 | }] 50 | } 51 | }, 52 | "response": { 53 | "success": { 54 | "code": 200, 55 | "msg": "成功返回" 56 | }, 57 | "fail": { 58 | "20005": { 59 | "code": "20005", 60 | "msg": "{{name}} 参数为必传项" 61 | }, 62 | "20006": { 63 | "code": "20006", 64 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 65 | }, 66 | "1004": { 67 | "code": "20000", 68 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 69 | }, 70 | "1008": { 71 | "code": "20001", 72 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 73 | } 74 | } 75 | } 76 | }, 77 | "getList": { 78 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_user_ban_query", 79 | "url": "chatroom/user/ban/query", 80 | "params": {}, 81 | "response": { 82 | "success": { 83 | "code": "200", 84 | "members": [{ 85 | "time": "2015-09-25 16:12:38", 86 | "id": "2582" 87 | }] 88 | }, 89 | "fail": { 90 | "1004": { 91 | "code": "20000", 92 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 93 | }, 94 | "1008": { 95 | "code": "20001", 96 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 97 | } 98 | } 99 | } 100 | } 101 | } -------------------------------------------------------------------------------- /lib/chatroom/demotion/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | 参考文档:http://rongcloud.cn/docs/server.html#chatroom_message_priority_add 3 | */ 4 | const config = require('./api.json'); 5 | const verify = require('../verify.json'); 6 | 7 | const request = require('../../request').request; 8 | const utils = require('../../utils'); 9 | 10 | const logger = utils.logger; 11 | const getError = utils.getError; 12 | 13 | const check = utils.check; 14 | 15 | let add = (demotion) => { 16 | let conf = config.add; 17 | let error = check({ 18 | api: conf, 19 | model: 'demotion', 20 | data: demotion, 21 | verify: verify.demotion 22 | }); 23 | if (error) { 24 | return Promise.reject(error); 25 | } 26 | demotion = utils.rename(demotion, { 27 | msgs: 'objectName' 28 | }); 29 | return request({ 30 | url: conf.url, 31 | data: demotion 32 | }).then(result => { 33 | return result.text; 34 | }).catch(error => { 35 | error = getError({ 36 | code: error, 37 | errors: conf.response.fail 38 | }); 39 | logger.log({ 40 | content: error, 41 | level: 'error', 42 | pos: 'ChatroomDemotion.add' 43 | }); 44 | return error; 45 | }); 46 | }; 47 | 48 | let remove = (demotion) => { 49 | let conf = config.remove; 50 | let error = check({ 51 | api: conf, 52 | model: 'demotion', 53 | data: demotion, 54 | verify: verify.demotion 55 | }); 56 | if (error) { 57 | return Promise.reject(error); 58 | } 59 | demotion = utils.rename(demotion, { 60 | msgs: 'objectName' 61 | }); 62 | return request({ 63 | url: conf.url, 64 | data: demotion 65 | }).then(result => { 66 | return result.text; 67 | }).catch(error => { 68 | error = getError({ 69 | code: error, 70 | errors: conf.response.fail 71 | }); 72 | logger.log({ 73 | content: error, 74 | level: 'error', 75 | pos: 'ChatroomDemotion.remove' 76 | }); 77 | return error; 78 | }); 79 | }; 80 | 81 | let getList = () => { 82 | let conf = config.getList; 83 | return request({ 84 | url: conf.url, 85 | data: {} 86 | }).then(result => { 87 | return result.text; 88 | }).catch(error => { 89 | error = getError({ 90 | code: error, 91 | errors: conf.response.fail 92 | }); 93 | logger.log({ 94 | content: error, 95 | level: 'error', 96 | pos: 'ChatroomDemotion.getList' 97 | }); 98 | return error; 99 | }); 100 | }; 101 | 102 | module.exports = { 103 | add: add, 104 | remove: remove, 105 | getList: getList 106 | }; -------------------------------------------------------------------------------- /lib/chatroom/distribute/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "stop": { 3 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_message_stop_distribution", 4 | "url": "chatroom/message/stopDistribution", 5 | "params": { 6 | "chatroom": { 7 | "id": "chatroom01" 8 | } 9 | }, 10 | "response": { 11 | "success": { 12 | "code": "200", 13 | "msg": "成功返回" 14 | }, 15 | "fail": { 16 | "20003": { 17 | "code": "20003", 18 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}} 单位: 字节" 19 | }, 20 | "20005": { 21 | "code": "20005", 22 | "msg": "{{name}} 参数为必传项" 23 | }, 24 | "20006": { 25 | "code": "20006", 26 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 27 | }, 28 | "1004": { 29 | "code": "20000", 30 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 31 | }, 32 | "1008": { 33 | "code": "20001", 34 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 35 | } 36 | } 37 | } 38 | }, 39 | "resume": { 40 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_message_resume_distribution", 41 | "url": "chatroom/message/resumeDistribution", 42 | "params": { 43 | "chatroom": { 44 | "id": "chatroom01" 45 | } 46 | }, 47 | "response": { 48 | "success": { 49 | "code": "200", 50 | "msg": "成功返回" 51 | }, 52 | "fail": { 53 | "20003": { 54 | "code": "20003", 55 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}} 单位: 字节" 56 | }, 57 | "20005": { 58 | "code": "20005", 59 | "msg": "{{name}} 参数为必传项" 60 | }, 61 | "20006": { 62 | "code": "20006", 63 | "msg": "user 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 64 | }, 65 | "1004": { 66 | "code": "20000", 67 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 68 | }, 69 | "1008": { 70 | "code": "20001", 71 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 72 | } 73 | } 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /lib/chatroom/distribute/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | 参考文档:http://rongcloud.cn/docs/server.html#chatroom_message 3 | */ 4 | 5 | const config = require('./api.json'); 6 | const verify = require('../verify.json'); 7 | 8 | const request = require('../../request').request; 9 | const utils = require('../../utils'); 10 | 11 | const _ = utils.underscore; 12 | const logger = utils.logger; 13 | const getError = utils.getError; 14 | 15 | const check = utils.check; 16 | 17 | let resume = (chatroom) => { 18 | let conf = config.resume; 19 | let chrmVerify = _.pick(verify.chatroom, 'id'); 20 | 21 | let error = check({ 22 | api: conf, 23 | model: 'chatroom', 24 | data: chatroom, 25 | verify: chrmVerify 26 | }); 27 | 28 | if (error) { 29 | return Promise.reject(error); 30 | } 31 | 32 | chatroom = utils.rename(chatroom, { 33 | id: 'chatroomId' 34 | }); 35 | 36 | return request({ 37 | url: conf.url, 38 | data: chatroom 39 | }).then(result => { 40 | return result.text; 41 | }).catch(error => { 42 | error = getError({ 43 | code: error, 44 | errors: conf.response.fail 45 | }); 46 | logger.log({ 47 | content: error, 48 | level: 'error', 49 | pos: 'ChatroomDistribute.resume' 50 | }); 51 | return error; 52 | }); 53 | }; 54 | 55 | let stop = (chatroom) => { 56 | let conf = config.stop; 57 | let chrmVerify = _.pick(verify.chatroom, 'id'); 58 | 59 | let error = check({ 60 | api: conf, 61 | model: 'chatroom', 62 | data: chatroom, 63 | verify: chrmVerify 64 | }); 65 | 66 | if (error) { 67 | return Promise.reject(error); 68 | } 69 | 70 | chatroom = utils.rename(chatroom, { 71 | id: 'chatroomId' 72 | }); 73 | 74 | return request({ 75 | url: conf.url, 76 | data: chatroom 77 | }).then(result => { 78 | return result.text; 79 | }).catch(error => { 80 | error = getError({ 81 | code: error, 82 | errors: conf.response.fail 83 | }); 84 | logger.log({ 85 | content: error, 86 | level: 'error', 87 | pos: 'ChatroomDistribute.stop' 88 | }); 89 | return error; 90 | }); 91 | }; 92 | 93 | module.exports = { 94 | resume: resume, 95 | stop: stop 96 | }; -------------------------------------------------------------------------------- /lib/chatroom/keepalive/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_keepalive_add", 4 | "url": "chatroom/keepalive/add", 5 | "params": { 6 | "chatroom": { 7 | "id": "chatroomId01" 8 | } 9 | }, 10 | "response": { 11 | "success": { 12 | "code": "200", 13 | "msg": "成功返回" 14 | }, 15 | "fail": { 16 | "20003": { 17 | "code": "20003", 18 | "msg": "chatroomId 长度超限, chatroomId >= 1 且 chatroomId <= 64 单位: 字节" 19 | }, 20 | "20005": { 21 | "code": "20005", 22 | "msg": "{{name}} 参数为必传项" 23 | }, 24 | "1004": { 25 | "code": "20000", 26 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 27 | }, 28 | "1008": { 29 | "code": "20001", 30 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 31 | } 32 | } 33 | } 34 | }, 35 | "remove": { 36 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_keepalive_remove", 37 | "url": "chatroom/keepalive/remove", 38 | "params": { 39 | "chatroom": { 40 | "id": "chatroomId01" 41 | } 42 | }, 43 | "response": { 44 | "success": { 45 | "code": "200", 46 | "msg": "成功返回" 47 | }, 48 | "fail": { 49 | "20003": { 50 | "code": "20003", 51 | "msg": "chatroomId 长度超限, chatroomId >= 1 且 chatroomId <= 64 单位: 字节" 52 | }, 53 | "20005": { 54 | "code": "20005", 55 | "msg": "{{name}} 参数为必传项" 56 | }, 57 | "1004": { 58 | "code": "20000", 59 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 60 | }, 61 | "1008": { 62 | "code": "20001", 63 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 64 | } 65 | } 66 | } 67 | }, 68 | "getList": { 69 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_keepalive_query", 70 | "url": "chatroom/keepalive/query", 71 | "params": {}, 72 | "response": { 73 | "success": { 74 | "code": "200", 75 | "chatrooms": ["chatroomId1", "chatroomId2"] 76 | }, 77 | "fail": { 78 | "20003": { 79 | "code": "20003", 80 | "msg": "chatroomId 长度超限, chatroomId >= 1 且 chatroomId <= 64 单位: 字节" 81 | }, 82 | "20005": { 83 | "code": "20005", 84 | "msg": "{{name}} 参数为必传项" 85 | }, 86 | "1004": { 87 | "code": "20000", 88 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 89 | }, 90 | "1008": { 91 | "code": "20001", 92 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 93 | } 94 | } 95 | } 96 | } 97 | } -------------------------------------------------------------------------------- /lib/chatroom/keepalive/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | 参考文档:http://rongcloud.cn/docs/server.html#chatroom_keepalive 3 | */ 4 | const config = require('./api.json'); 5 | const verify = require('../verify.json'); 6 | 7 | const request = require('../../request').request; 8 | const utils = require('../../utils'); 9 | 10 | const _ = utils.underscore; 11 | const logger = utils.logger; 12 | const getError = utils.getError; 13 | 14 | const check = utils.check; 15 | 16 | let add = (chatroom) => { 17 | let conf = config.add; 18 | let chrmVerify = _.pick(verify.chatroom, 'id'); 19 | let error = check({ 20 | api: conf, 21 | model: 'chatroom', 22 | data: chatroom, 23 | verify: chrmVerify 24 | }); 25 | 26 | if (error) { 27 | return Promise.reject(error); 28 | } 29 | 30 | chatroom = utils.rename(chatroom, { 31 | id: 'chatroomId' 32 | }); 33 | 34 | return request({ 35 | url: conf.url, 36 | data: chatroom 37 | }).then(result => { 38 | return result.text; 39 | }).catch(error => { 40 | error = getError({ 41 | code: error, 42 | errors: conf.response.fail 43 | }); 44 | logger.log({ 45 | content: error, 46 | level: 'error', 47 | pos: 'ChatroomKeepAlive.add' 48 | }); 49 | return error; 50 | }); 51 | }; 52 | 53 | let remove = (chatroom) => { 54 | let conf = config.remove; 55 | let chrmVerify = _.pick(verify.chatroom, 'id'); 56 | let error = check({ 57 | api: conf, 58 | model: 'chatroom', 59 | data: chatroom, 60 | verify: chrmVerify 61 | }); 62 | 63 | if (error) { 64 | return Promise.reject(error); 65 | } 66 | 67 | chatroom = utils.rename(chatroom, { 68 | id: 'chatroomId' 69 | }); 70 | 71 | return request({ 72 | url: conf.url, 73 | data: chatroom 74 | }).then(result => { 75 | return result.text; 76 | }).catch(error => { 77 | error = getError({ 78 | code: error, 79 | errors: conf.response.fail 80 | }); 81 | logger.log({ 82 | content: error, 83 | level: 'error', 84 | pos: 'ChatroomKeepAlive.remove' 85 | }); 86 | return error; 87 | }); 88 | }; 89 | 90 | let getList = () => { 91 | let conf = config.getList; 92 | 93 | return request({ 94 | url: conf.url, 95 | data: {} 96 | }).then(result => { 97 | return utils.rename(result.text, { 98 | chatroomIds: 'chatrooms' 99 | }); 100 | }).catch(error => { 101 | error = getError({ 102 | code: error, 103 | errors: conf.response.fail 104 | }); 105 | logger.log({ 106 | content: error, 107 | level: 'error', 108 | pos: 'ChatroomKeepAlive.getList' 109 | }); 110 | return error; 111 | }); 112 | }; 113 | 114 | module.exports = { 115 | add: add, 116 | remove: remove, 117 | getList: getList 118 | }; -------------------------------------------------------------------------------- /lib/chatroom/verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "chatroom": { 3 | "_self": { 4 | "require": { 5 | "must": true, 6 | "invalid": "20005" 7 | } 8 | }, 9 | "id": { 10 | "require": { 11 | "must": true, 12 | "invalid": "20005" 13 | } 14 | }, 15 | "name": { 16 | "require": { 17 | "must": true, 18 | "invalid": "20005" 19 | } 20 | }, 21 | "members": { 22 | "require": { 23 | "must": true, 24 | "invalid": "20005" 25 | }, 26 | "typeof": { 27 | "type": "array", 28 | "invalid": "20006" 29 | } 30 | }, 31 | "minute": { 32 | "require": { 33 | "must": true, 34 | "invalid": "20005" 35 | }, 36 | "size": { 37 | "max": 43200, 38 | "min": 1, 39 | "invalid": "20004" 40 | }, 41 | "typeof": { 42 | "type": "number", 43 | "invalid": "20006" 44 | } 45 | } 46 | }, 47 | "demotion": { 48 | "_self": { 49 | "require": { 50 | "must": true, 51 | "invalid": "20005" 52 | } 53 | }, 54 | "msgs": { 55 | "require": { 56 | "must": true, 57 | "invalid": "20005" 58 | }, 59 | "typeof": { 60 | "type": "array", 61 | "invalid": "20006" 62 | } 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /lib/chatroom/whitelist/index.js: -------------------------------------------------------------------------------- 1 | 'user strict'; 2 | const User = require('./user'); 3 | const Message = require('./message'); 4 | 5 | module.exports = { 6 | User: User, 7 | Message: Message 8 | }; -------------------------------------------------------------------------------- /lib/chatroom/whitelist/message-api.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_whitelist_add", 4 | "url": "chatroom/whitelist/add", 5 | "params": { 6 | "chatroom": { 7 | "msgs": ["RC:TxtMsg01"] 8 | } 9 | }, 10 | "response": { 11 | "success": { 12 | "code": "200", 13 | "msg": "成功返回" 14 | }, 15 | "fail": { 16 | "20005": { 17 | "code": "20005", 18 | "msg": "{{name}} 参数为必传项" 19 | }, 20 | "20006": { 21 | "code": "20006", 22 | "msg": "user 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 23 | }, 24 | "1004": { 25 | "code": "20000", 26 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 27 | }, 28 | "1008": { 29 | "code": "20001", 30 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 31 | } 32 | } 33 | } 34 | }, 35 | "remove": { 36 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_whitelist_remove", 37 | "url": "chatroom/whitelist/delete", 38 | "params": { 39 | "chatroom": { 40 | "msgs": ["RC:TxtMsg01"] 41 | } 42 | }, 43 | "response": { 44 | "success": { 45 | "code": "200", 46 | "msg": "成功返回" 47 | }, 48 | "fail": { 49 | "20005": { 50 | "code": "20005", 51 | "msg": "{{name}} 参数为必传项" 52 | }, 53 | "20006": { 54 | "code": "20006", 55 | "msg": "user 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 56 | }, 57 | "1004": { 58 | "code": "20000", 59 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 60 | }, 61 | "1008": { 62 | "code": "20001", 63 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 64 | } 65 | } 66 | } 67 | }, 68 | "getList": { 69 | "docs": "http://rongcloud.cn/docs/server.html#chatroom_whitelist_query", 70 | "url": "chatroom/whitelist/query", 71 | "params": {}, 72 | "response": { 73 | "success": { 74 | "code": "200", 75 | "objectNames": ["RC:TxtMsg"] 76 | }, 77 | "fail": { 78 | "20005": { 79 | "code": "20005", 80 | "msg": "{{name}} 参数为必传项" 81 | }, 82 | "20006": { 83 | "code": "20006", 84 | "msg": "user 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 85 | }, 86 | "1004": { 87 | "code": "20000", 88 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 89 | }, 90 | "1008": { 91 | "code": "20001", 92 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 93 | } 94 | } 95 | } 96 | } 97 | } -------------------------------------------------------------------------------- /lib/chatroom/whitelist/message.js: -------------------------------------------------------------------------------- 1 | /* 2 | 参考文档:http://rongcloud.cn/docs/server.html#chatroom_whitelist_query 3 | */ 4 | const config = require('./message-api.json'); 5 | const verify = require('../verify.json'); 6 | 7 | const request = require('../../request').request; 8 | const utils = require('../../utils'); 9 | 10 | const logger = utils.logger; 11 | const getError = utils.getError; 12 | 13 | const check = utils.check; 14 | 15 | //ChatroomMessageWhiteList 16 | let add = (chatroom) => { 17 | let conf = config.add; 18 | 19 | let error = check({ 20 | api: conf, 21 | model: 'chatroom', 22 | data: chatroom, 23 | verify: verify.demotion 24 | }); 25 | 26 | if (error) { 27 | return Promise.reject(error); 28 | } 29 | 30 | chatroom = utils.rename(chatroom, { 31 | msgs: 'objectnames' 32 | }); 33 | 34 | return request({ 35 | url: conf.url, 36 | data: chatroom 37 | }).then(result => { 38 | return result.text; 39 | }).catch(error => { 40 | error = getError({ 41 | code: error, 42 | errors: conf.response.fail 43 | }); 44 | logger.log({ 45 | content: error, 46 | level: 'error', 47 | pos: 'ChatroomUserWhiteList.add' 48 | }); 49 | return error; 50 | }); 51 | }; 52 | 53 | let remove = (chatroom) => { 54 | let conf = config.remove; 55 | 56 | let error = check({ 57 | api: conf, 58 | model: 'chatroom', 59 | data: chatroom, 60 | verify: verify.demotion 61 | }); 62 | 63 | if (error) { 64 | return Promise.reject(error); 65 | } 66 | 67 | chatroom = utils.rename(chatroom, { 68 | msgs: 'objectnames' 69 | }); 70 | 71 | return request({ 72 | url: conf.url, 73 | data: chatroom 74 | }).then(result => { 75 | return result.text; 76 | }).catch(error => { 77 | error = getError({ 78 | code: error, 79 | errors: conf.response.fail 80 | }); 81 | logger.log({ 82 | content: error, 83 | level: 'error', 84 | pos: 'ChatroomUserWhiteList.reomve' 85 | }); 86 | return error; 87 | }); 88 | }; 89 | 90 | let getList = () => { 91 | let conf = config.getList; 92 | 93 | return request({ 94 | url: conf.url, 95 | data: {} 96 | }).then(result => { 97 | return utils.rename(result.text, { 98 | whitlistMsgType: 'objectNames' 99 | }); 100 | }).catch(error => { 101 | error = getError({ 102 | code: error, 103 | errors: conf.response.fail 104 | }); 105 | logger.log({ 106 | content: error, 107 | level: 'error', 108 | pos: 'ChatroomUserWhiteList.getList' 109 | }); 110 | return error; 111 | }); 112 | }; 113 | 114 | module.exports = { 115 | add: add, 116 | remove: remove, 117 | getList: getList 118 | }; 119 | -------------------------------------------------------------------------------- /lib/conversation-type.js: -------------------------------------------------------------------------------- 1 | let Conversation = { 2 | PRIVATE: 1, 3 | DISCUSSION: 2, 4 | GROUP: 3, 5 | CUSTOMER_SERVICE: 5, 6 | SYSTEM: 6, 7 | APP_PUBLIC: 7, 8 | PUBLIC: 8 9 | }; 10 | 11 | module.exports = { 12 | Conversation: Conversation 13 | }; -------------------------------------------------------------------------------- /lib/conversation/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "mute": { 3 | "docs": "http://rongcloud.cn/docs/server.html#conversation_notification_set", 4 | "url": "conversation/notification/set", 5 | "params": { 6 | "conversation": { 7 | "type": "1", 8 | "targetId": "UAhIaLkR0", 9 | "userId": "b5NwvIrW8" 10 | } 11 | }, 12 | "response":{ 13 | "success": { 14 | "code": "200", 15 | "msg": "成功返回" 16 | }, 17 | "fail": { 18 | "20003": { 19 | "code": "20003", 20 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 21 | }, 22 | "20005": { 23 | "code": "20005", 24 | "msg": "{{name}} 参数为必传项" 25 | }, 26 | "20006": { 27 | "code": "20006", 28 | "msg": "user 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 29 | }, 30 | "1004": { 31 | "code": "20000", 32 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 33 | }, 34 | "1008": { 35 | "code": "20001", 36 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 37 | } 38 | } 39 | } 40 | }, 41 | "unmute": { 42 | "docs": "http://rongcloud.cn/docs/server.html#conversation_notification_set", 43 | "url": "conversation/notification/set", 44 | "params": { 45 | "conversation": { 46 | "type": "1", 47 | "targetId": "UAhIaLkR0", 48 | "userId": "b5NwvIrW8" 49 | } 50 | }, 51 | "response":{ 52 | "success": { 53 | "code": "200", 54 | "msg": "成功返回" 55 | }, 56 | "fail": { 57 | "20003": { 58 | "code": "20003", 59 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 60 | }, 61 | "20005": { 62 | "code": "20005", 63 | "msg": "{{name}} 参数为必传项" 64 | }, 65 | "20006": { 66 | "code": "20006", 67 | "msg": "user 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 68 | }, 69 | "1004": { 70 | "code": "20000", 71 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 72 | }, 73 | "1008": { 74 | "code": "20001", 75 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 76 | } 77 | } 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /lib/conversation/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | 参考文档: http://rongcloud.cn/docs/server.html#conversation_notification_set 3 | */ 4 | const config = require('./api.json'); 5 | const verify = require('./verify.json'); 6 | 7 | const request = require('../request').request; 8 | const utils = require('../utils'); 9 | 10 | const _ = utils.underscore; 11 | const logger = utils.logger; 12 | 13 | const Conversation = require('../conversation-type').Conversation; 14 | 15 | const getError = utils.getError; 16 | const check = utils.check; 17 | 18 | let mute = (conversation) => { 19 | let conf = config.mute; 20 | let error = check({ 21 | api: conf, 22 | model: 'conversation', 23 | data: conversation, 24 | verify: verify.conversation 25 | }); 26 | 27 | if (error) { 28 | return Promise.reject(error); 29 | } 30 | 31 | // 转换会话类型 e.g. PRIVATE => 1 && 设置免打扰标识 32 | let type = conversation.type; 33 | type = Conversation[type]; 34 | conversation = _.extend(_.omit(conversation, 'type'), {type: type, isMuted: 1}); 35 | 36 | conversation = utils.rename(conversation, { 37 | type: 'conversationType', 38 | userId: 'requestId' 39 | }); 40 | 41 | return request({ 42 | url: conf.url, 43 | data: conversation 44 | }).then(result => { 45 | return result.text; 46 | }).catch(error => { 47 | error = getError({ 48 | code: error, 49 | errors: conf.response.fail 50 | }); 51 | logger.log({ 52 | content: error, 53 | level: 'error', 54 | pos: 'Conversation.mute' 55 | }); 56 | return error; 57 | }); 58 | }; 59 | 60 | let unmute = (conversation) => { 61 | let conf = config.unmute; 62 | let error = check({ 63 | api: conf, 64 | model: 'conversation', 65 | data: conversation, 66 | verify: verify.conversation 67 | }); 68 | 69 | if (error) { 70 | return Promise.reject(error); 71 | } 72 | 73 | // 转换会话类型 e.g. PRIVATE => 1 && 设置免打扰标识 74 | let type = conversation.type; 75 | type = Conversation[type]; 76 | conversation = _.extend(_.omit(conversation, 'type'), {type: type, isMuted: 0}); 77 | 78 | conversation = utils.rename(conversation, { 79 | type: 'conversationType', 80 | userId: 'requestId' 81 | }); 82 | 83 | return request({ 84 | url: conf.url, 85 | data: conversation 86 | }).then(result => { 87 | return result.text; 88 | }).catch(error => { 89 | error = getError({ 90 | code: error, 91 | errors: conf.response.fail 92 | }); 93 | logger.log({ 94 | content: error, 95 | level: 'error', 96 | pos: 'Conversation.unmute' 97 | }); 98 | return error; 99 | }); 100 | }; 101 | 102 | module.exports = { 103 | mute: mute, 104 | unmute: unmute 105 | }; -------------------------------------------------------------------------------- /lib/conversation/verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "conversation": { 3 | "_self": { 4 | "require": { 5 | "must": true, 6 | "invalid": "20005" 7 | }, 8 | "typeof": { 9 | "type": "object", 10 | "invalid": "20006" 11 | } 12 | }, 13 | "type": { 14 | "require": { 15 | "must": true, 16 | "invalid": "20005" 17 | } 18 | }, 19 | "targetId": { 20 | "require": { 21 | "must": true, 22 | "invalid": "20005" 23 | }, 24 | "length": { 25 | "max": 64, 26 | "min": 1, 27 | "invalid": "20003" 28 | } 29 | }, 30 | "userId": { 31 | "require": { 32 | "must": true, 33 | "invalid": "20005" 34 | } 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /lib/group/mute-all-member/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "docs": "https://docs.rongcloud.cn/v3/views/im/noui/guide/group/manage/groupblock/serverapi.html#all", 4 | "url": "group/ban/add", 5 | "params": { 6 | "group": { 7 | "groups": [{"id": "1001"}] 8 | } 9 | }, 10 | "response":{ 11 | "success": { 12 | "code": "200", 13 | "msg": "成功返回" 14 | }, 15 | "fail": { 16 | "20005": { 17 | "code": "20005", 18 | "msg": "{{name}} 参数为必传项" 19 | }, 20 | "20003": { 21 | "code": "20003", 22 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}} 单位: 个" 23 | }, 24 | "20006": { 25 | "code": "20006", 26 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 27 | }, 28 | "1004": { 29 | "code": "20000", 30 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 31 | }, 32 | "1008": { 33 | "code": "20001", 34 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 35 | } 36 | } 37 | } 38 | }, 39 | "remove": { 40 | "docs": "https://docs.rongcloud.cn/v3/views/im/noui/guide/group/manage/groupblock/serverapi.html#allremove", 41 | "url": "group/ban/rollback", 42 | "params": { 43 | "group": { 44 | "groups": [{"id": "1001"}] 45 | } 46 | }, 47 | "response": { 48 | "success": { 49 | "code": "200", 50 | "msg": "成功返回" 51 | }, 52 | "fail": { 53 | "20005": { 54 | "code": "20005", 55 | "msg": "{{name}} 参数为必传项" 56 | }, 57 | "20003": { 58 | "code": "20003", 59 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}} 单位: 个" 60 | }, 61 | "1004": { 62 | "code": "20000", 63 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 64 | }, 65 | "1008": { 66 | "code": "20001", 67 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 68 | } 69 | } 70 | } 71 | }, 72 | "getList": { 73 | "docs": "https://docs.rongcloud.cn/v3/views/im/noui/guide/group/manage/groupblock/serverapi.html#allget", 74 | "url": "group/ban/query", 75 | "params": {}, 76 | "response":{ 77 | "success": { 78 | "code": "200", 79 | "users": [{ 80 | "time": "2015-09-25 16:12:38", 81 | "member": { 82 | "id": "2582" 83 | } 84 | }] 85 | }, 86 | "fail": { 87 | "1004": { 88 | "code": "20000", 89 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 90 | }, 91 | "1008": { 92 | "code": "20001", 93 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 94 | } 95 | } 96 | } 97 | } 98 | } -------------------------------------------------------------------------------- /lib/group/mute-whitelist/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "docs": "https://docs.rongcloud.cn/v3/views/im/noui/guide/group/manage/groupblock/serverapi.html#allbanadd", 4 | "url": "group/user/ban/whitelist/add", 5 | "params": { 6 | "group": { 7 | "id": "10001", 8 | "members": [{ "id": "aFo990k" }] 9 | } 10 | }, 11 | "response":{ 12 | "success": { 13 | "code": "200", 14 | "msg": "成功返回" 15 | }, 16 | "fail": { 17 | "20005": { 18 | "code": "20005", 19 | "msg": "{{name}} 参数为必传项" 20 | }, 21 | "20006": { 22 | "code": "20006", 23 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 24 | }, 25 | "1004": { 26 | "code": "20000", 27 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 28 | }, 29 | "1008": { 30 | "code": "20001", 31 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 32 | } 33 | } 34 | } 35 | }, 36 | "remove": { 37 | "docs": "https://docs.rongcloud.cn/v3/views/im/noui/guide/group/manage/groupblock/serverapi.html#allbanremove", 38 | "url": "group/user/ban/whitelist/rollback", 39 | "params": { 40 | "group": { 41 | "id": "10001", 42 | "members": [{"id": "aFo990k"}] 43 | } 44 | }, 45 | "response": { 46 | "success": { 47 | "code": "200", 48 | "msg": "成功返回" 49 | }, 50 | "fail": { 51 | "20005": { 52 | "code": "20005", 53 | "msg": "{{name}} 参数为必传项" 54 | }, 55 | "20006": { 56 | "code": "20006", 57 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 58 | }, 59 | "1004": { 60 | "code": "20000", 61 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 62 | }, 63 | "1008": { 64 | "code": "20001", 65 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 66 | } 67 | } 68 | } 69 | }, 70 | "getList": { 71 | "docs": "https://docs.rongcloud.cn/v3/views/im/noui/guide/group/manage/groupblock/serverapi.html#allbanget", 72 | "url": "group/user/ban/whitelist/query", 73 | "params": { 74 | "group": { 75 | "id": "10001" 76 | } 77 | }, 78 | "response":{ 79 | "success": { 80 | "code": "200" 81 | }, 82 | "fail": { 83 | "20003": { 84 | "code": "20003", 85 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 86 | }, 87 | "20005": { 88 | "code": "20005", 89 | "msg": "{{name}} 参数为必传项" 90 | }, 91 | "1004": { 92 | "code": "20000", 93 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 94 | }, 95 | "1008": { 96 | "code": "20001", 97 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 98 | } 99 | } 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /lib/group/verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "group": { 3 | "_self": { 4 | "require": { 5 | "must": true, 6 | "invalid": "20005" 7 | }, 8 | "typeof": { 9 | "type": "object", 10 | "invalid": "20006" 11 | } 12 | }, 13 | "id": { 14 | "require": { 15 | "must": true, 16 | "invalid": "20005" 17 | }, 18 | "length": { 19 | "max": 64, 20 | "min": 1, 21 | "invalid": "20003" 22 | } 23 | }, 24 | "members": { 25 | "require": { 26 | "must": true, 27 | "invalid": "20005" 28 | }, 29 | "typeof": { 30 | "type": "array", 31 | "invalid": "20006" 32 | }, 33 | "length": { 34 | "max": 999999, 35 | "min": 1, 36 | "invalid": "20003" 37 | } 38 | }, 39 | "name": { 40 | "require": { 41 | "must": true, 42 | "invalid": "20005" 43 | }, 44 | "length": { 45 | "max": 64, 46 | "min": 1, 47 | "invalid": "20003" 48 | } 49 | }, 50 | "groups": { 51 | "require": { 52 | "must": true, 53 | "invalid": "20005" 54 | }, 55 | "typeof": { 56 | "type": "array", 57 | "invalid": "20006" 58 | }, 59 | "length": { 60 | "max": 20, 61 | "min": 1, 62 | "invalid": "20003" 63 | } 64 | } 65 | }, 66 | "user":{ 67 | "id": { 68 | "require": { 69 | "must": true, 70 | "invalid": "20005" 71 | }, 72 | "length": { 73 | "max": 64, 74 | "min": 1, 75 | "invalid": "20003" 76 | } 77 | }, 78 | "groups":{ 79 | "require": { 80 | "must": true, 81 | "invalid": "20005" 82 | }, 83 | "typeof": { 84 | "type": "array", 85 | "invalid": "20006" 86 | } 87 | } 88 | }, 89 | "minute": { 90 | "require": { 91 | "must": true, 92 | "invalid": "20005" 93 | }, 94 | "size": { 95 | "max": 43200, 96 | "min": 0, 97 | "invalid": "20004" 98 | }, 99 | "typeof": { 100 | "type": "number", 101 | "invalid": "20006" 102 | } 103 | }, 104 | "member":{ 105 | "member": { 106 | "require": { 107 | "must": true, 108 | "invalid": "20005" 109 | } 110 | } 111 | } 112 | } -------------------------------------------------------------------------------- /lib/message/chatroom/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "send": { 3 | "url": "message/chatroom/publish", 4 | "params": { 5 | "message": { 6 | "senderId": "2191", 7 | "targetId": "2192", 8 | "objectName": "RC:TxtMsg", 9 | "content": { 10 | "content":"hello" 11 | } 12 | } 13 | }, 14 | "response": { 15 | "success": { 16 | "code": "200", 17 | "msg": "成功返回" 18 | }, 19 | "fail": { 20 | "20002": { 21 | "code": "20002", 22 | "msg": "{{name}} 个数超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 23 | }, 24 | "20003": { 25 | "code": "20003", 26 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 27 | }, 28 | "20005": { 29 | "code": "20005", 30 | "msg": "{{name}} 参数为必传项" 31 | }, 32 | "20006": { 33 | "code": "20006", 34 | "msg": "user 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 35 | }, 36 | "1004": { 37 | "code": "20000", 38 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 39 | }, 40 | "1008": { 41 | "code": "20001", 42 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 43 | } 44 | } 45 | } 46 | }, 47 | "broadcast": { 48 | "url": "message/chatroom/broadcast", 49 | "params": { 50 | "message": { 51 | "senderId": "2191", 52 | "objectName": "RC:TxtMsg", 53 | "content": { 54 | "content":"hello" 55 | } 56 | } 57 | }, 58 | "response": { 59 | "success": { 60 | "code": "200", 61 | "msg": "成功返回" 62 | }, 63 | "fail": { 64 | "20002": { 65 | "code": "20002", 66 | "msg": "{{name}} 个数超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 67 | }, 68 | "20003": { 69 | "code": "20003", 70 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 71 | }, 72 | "20005": { 73 | "code": "20005", 74 | "msg": "{{name}} 参数为必传项" 75 | }, 76 | "20006": { 77 | "code": "20006", 78 | "msg": "{{name}} 类型不正确,请检查参数类型, 应该为 {{type}} 传入为 {{currentType}} " 79 | }, 80 | "1004": { 81 | "code": "20000", 82 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 83 | }, 84 | "1008": { 85 | "code": "20001", 86 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 87 | } 88 | } 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /lib/message/chatroom/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./api.json'); 2 | const verify = require('../verify.json'); 3 | 4 | const request = require('../../request').request; 5 | const utils = require('../../utils'); 6 | 7 | const _ = utils.underscore; 8 | const logger = utils.logger; 9 | 10 | const getError = utils.getError; 11 | const check = utils.check; 12 | 13 | let send = (message) => { 14 | let conf = config.send; 15 | 16 | let content = message.content; 17 | if (_.isObject(content)) { 18 | message.content = JSON.stringify(content); 19 | } 20 | 21 | let error = check({ 22 | api: conf, 23 | model: 'message', 24 | data: message, 25 | verify: verify.message 26 | }); 27 | if (error) { 28 | return Promise.reject(error); 29 | } 30 | 31 | message = utils.rename(message, { 32 | senderId: 'fromUserId', 33 | targetId: 'toChatroomId' 34 | }); 35 | 36 | return request({ 37 | url: conf.url, 38 | data: message 39 | }).then(result => { 40 | return result.text; 41 | }).catch(error => { 42 | error = getError({ 43 | code: error, 44 | errors: conf.response.fail 45 | }); 46 | logger.log({ 47 | content: error, 48 | level: 'error', 49 | pos: 'message.Chatrrom.send' 50 | }); 51 | return error; 52 | }); 53 | }; 54 | 55 | let broadcast = (message) => { 56 | let conf = config.broadcast; 57 | message.content = JSON.stringify(message.content); 58 | 59 | let error = check({ 60 | api: conf, 61 | model: 'message', 62 | data: message, 63 | verify: _.omit(verify.broadcast, 'targetId') 64 | }); 65 | if (error) { 66 | return Promise.reject(error); 67 | } 68 | 69 | message = utils.rename(message, { 70 | senderId: 'fromUserId' 71 | }); 72 | 73 | return request({ 74 | url: conf.url, 75 | data: message 76 | }).then(result => { 77 | return result.text; 78 | }).catch(error => { 79 | error = getError({ 80 | code: error, 81 | errors: conf.response.fail 82 | }); 83 | logger.log({ 84 | content: error, 85 | level: 'error', 86 | pos: 'message.Chatrrom.broadcast' 87 | }); 88 | return error; 89 | }); 90 | }; 91 | 92 | module.exports = { 93 | send: send, 94 | broadcast: broadcast 95 | }; 96 | -------------------------------------------------------------------------------- /lib/message/discussion/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "send": { 3 | "url": "message/discussion/publish", 4 | "params": { 5 | "message": { 6 | "senderId": "2191", 7 | "targetId": "2192", 8 | "objectName": "RC:TxtMsg", 9 | "content": { 10 | "content":"hello" 11 | } 12 | } 13 | }, 14 | "response": { 15 | "success": { 16 | "code": "200", 17 | "msg": "成功返回" 18 | }, 19 | "fail": { 20 | "20002": { 21 | "code": "20002", 22 | "msg": "{{name}} 个数超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 23 | }, 24 | "20003": { 25 | "code": "20003", 26 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 27 | }, 28 | "20005": { 29 | "code": "20005", 30 | "msg": "{{name}} 参数为必传项" 31 | }, 32 | "20006": { 33 | "code": "20006", 34 | "msg": "user 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 35 | }, 36 | "1004": { 37 | "code": "20000", 38 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 39 | }, 40 | "1008": { 41 | "code": "20001", 42 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 43 | } 44 | } 45 | } 46 | }, 47 | "recall": { 48 | "docs": "http://rongcloud.cn/docs/server.html#message_recall", 49 | "url": "message/recall", 50 | "params": { 51 | "message": { 52 | "senderId": "fDR2cVpxxR5zSMUNh3yAwh", 53 | "targetId": "MersNRhaKwJkRV9mJR5JXY", 54 | "uId": "5FGT-7VA9-G4DD-4V5P", 55 | "sentTime": "1507778882124" 56 | } 57 | }, 58 | "response": { 59 | "success": { 60 | "code": "200", 61 | "msg": "成功返回" 62 | }, 63 | "fail": { 64 | "20002": { 65 | "code": "20002", 66 | "msg": "{{name}} 个数超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 67 | }, 68 | "20003": { 69 | "code": "20003", 70 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 71 | }, 72 | "20005": { 73 | "code": "20005", 74 | "msg": "{{name}} 参数为必传项" 75 | }, 76 | "20006": { 77 | "code": "20006", 78 | "msg": "user 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 79 | }, 80 | "1004": { 81 | "code": "20000", 82 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 83 | }, 84 | "1008": { 85 | "code": "20001", 86 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 87 | } 88 | } 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /lib/message/discussion/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./api.json'); 2 | const verify = require('../verify.json'); 3 | 4 | const request = require('../../request').request; 5 | const utils = require('../../utils'); 6 | 7 | const _ = utils.underscore; 8 | const logger = utils.logger; 9 | 10 | const Conversation = require('../../conversation-type').Conversation 11 | 12 | const getError = utils.getError; 13 | const check = utils.check; 14 | 15 | let send = (message) => { 16 | let conf = config.send; 17 | 18 | let content = message.content; 19 | if (_.isObject(content)) { 20 | message.content = JSON.stringify(content); 21 | } 22 | 23 | let error = check({ 24 | api: conf, 25 | model: 'message', 26 | data: message, 27 | verify: verify.message 28 | }); 29 | if (error) { 30 | return Promise.reject(error); 31 | } 32 | 33 | message = utils.rename(message, { 34 | senderId: 'fromUserId', 35 | targetId: 'toDiscussionId' 36 | }); 37 | 38 | return request({ 39 | url: conf.url, 40 | data: message 41 | }).then(result => { 42 | return result.text; 43 | }).catch(error => { 44 | error = getError({ 45 | code: error, 46 | errors: conf.response.fail 47 | }); 48 | logger.log({ 49 | content: error, 50 | level: 'error', 51 | pos: 'message.Discussion.send' 52 | }); 53 | return error; 54 | }); 55 | }; 56 | 57 | let recall = (message) => { 58 | let conf = config.recall; 59 | 60 | let error = check({ 61 | api: conf, 62 | model: 'message', 63 | data: message, 64 | verify: verify.recallMsg 65 | }); 66 | 67 | if (error) { 68 | return Promise.reject(error); 69 | } 70 | 71 | message.type = Conversation.DISCUSSION; 72 | 73 | message = utils.rename(message, { 74 | senderId: 'fromUserId', 75 | type: 'conversationType', 76 | uId: 'messageUID' 77 | }); 78 | 79 | return request({ 80 | url: conf.url, 81 | data: message 82 | }).then(result => { 83 | return result.text; 84 | }).catch(error => { 85 | error = getError({ 86 | code: error, 87 | errors: conf.response.fail 88 | }); 89 | logger.log({ 90 | content: error, 91 | level: 'error', 92 | pos: 'message.Discussion.recall' 93 | }); 94 | return error; 95 | }); 96 | }; 97 | 98 | module.exports = { 99 | send: send, 100 | recall: recall 101 | }; 102 | -------------------------------------------------------------------------------- /lib/message/history/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "get": { 3 | "docs": "http://rongcloud.cn/docs/server.html#history_message_download", 4 | "url": "message/history", 5 | "params": { 6 | "message": { 7 | "date": "2017010101" 8 | } 9 | }, 10 | "response": { 11 | "success": { 12 | "code": "200", 13 | "msg": "成功返回" 14 | }, 15 | "fail": { 16 | "1004": { 17 | "code": "20000", 18 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 19 | }, 20 | "1008": { 21 | "code": "20001", 22 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 23 | }, 24 | "20005": { 25 | "code": "20005", 26 | "msg": "{{name}} 参数为必传项" 27 | }, 28 | "20006": { 29 | "code": "20006", 30 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 31 | } 32 | } 33 | } 34 | }, 35 | "remove": { 36 | "docs": "http://rongcloud.cn/docs/server.html#history_message_delete", 37 | "url": "message/history/delete", 38 | "params": { 39 | "message": { 40 | "date": "2017010101" 41 | } 42 | }, 43 | "response": { 44 | "success": { 45 | "code": "200", 46 | "msg": "成功返回" 47 | }, 48 | "fail": { 49 | "1004": { 50 | "code": "20000", 51 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 52 | }, 53 | "1008": { 54 | "code": "20001", 55 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 56 | }, 57 | "20005": { 58 | "code": "20005", 59 | "msg": "{{name}} 参数为必传项" 60 | }, 61 | "20006": { 62 | "code": "20006", 63 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 64 | } 65 | } 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /lib/message/history/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./api.json'); 2 | const verify = require('./verify.json'); 3 | 4 | const request = require('../../request').request; 5 | const utils = require('../../utils'); 6 | 7 | const logger = utils.logger; 8 | const getError = utils.getError; 9 | 10 | const check = utils.check; 11 | 12 | let get = (message) => { 13 | let conf = config.get; 14 | 15 | let error = check({ 16 | api: conf, 17 | model: 'message', 18 | data: message, 19 | verify: verify.message 20 | }); 21 | if (error) { 22 | return Promise.reject(error); 23 | } 24 | 25 | return request({ 26 | url: conf.url, 27 | data: message 28 | }).then(result => { 29 | return result.text; 30 | }).catch(error => { 31 | error = getError({ 32 | code: error, 33 | errors: conf.response.fail 34 | }); 35 | logger.log({ 36 | content: error, 37 | level: 'error', 38 | pos: 'HistoryMessage.get' 39 | }); 40 | return error; 41 | }); 42 | }; 43 | 44 | let remove = (message) => { 45 | let conf = config.remove; 46 | 47 | let error = check({ 48 | api: conf, 49 | model: 'message', 50 | data: message, 51 | verify: verify.message 52 | }); 53 | if (error) { 54 | return Promise.reject(error); 55 | } 56 | 57 | return request({ 58 | url: conf.url, 59 | data: message 60 | }).then(result => { 61 | return result.text; 62 | }).catch(error => { 63 | error = getError({ 64 | code: error, 65 | errors: conf.response.fail 66 | }); 67 | logger.log({ 68 | content: error, 69 | level: 'error', 70 | pos: 'HistoryMessage.remove' 71 | }); 72 | return error; 73 | }); 74 | }; 75 | 76 | module.exports = { 77 | get: get, 78 | remove: remove 79 | }; -------------------------------------------------------------------------------- /lib/message/history/verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": { 3 | "date": { 4 | "require": { 5 | "must": true, 6 | "invalid": "20005" 7 | } 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /lib/message/index.js: -------------------------------------------------------------------------------- 1 | const History = require('./history'); 2 | const Private = require('./private'); 3 | const Chatroom = require('./chatroom'); 4 | const Discussion = require('./discussion'); 5 | const System = require('./system'); 6 | const Group = require('./group'); 7 | module.exports = { 8 | History: History, 9 | Private: Private, 10 | Chatroom: Chatroom, 11 | Discussion: Discussion, 12 | System: System, 13 | Group: Group 14 | }; 15 | -------------------------------------------------------------------------------- /lib/push/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "push": { 3 | "docs": "https://www.rongcloud.cn/docs/push_service.html#push", 4 | "url": "push", 5 | "params": { 6 | "content": { 7 | "platform": [ 8 | "ios", 9 | "android" 10 | ], 11 | "audience": { 12 | "tag": [ 13 | "女", 14 | "年轻" 15 | ] 16 | }, 17 | "notification": { 18 | "alert": "push content" 19 | } 20 | } 21 | }, 22 | "response": { 23 | "success": { 24 | "code": 200 25 | }, 26 | "fail": { 27 | "2007": { 28 | "code": "10001", 29 | "msg": "测试人数超限, 请前往开发者后台 -> 应用 -> App Key -> 测试用户数,增加测试人数, https://developer.rongcloud.cn" 30 | }, 31 | "20005": { 32 | "code": "20005", 33 | "msg": "{{name}} 参数为必传项" 34 | }, 35 | "20006": { 36 | "code": "20006", 37 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 38 | }, 39 | "1004": { 40 | "code": "20000", 41 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 42 | }, 43 | "1008": { 44 | "code": "20001", 45 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 46 | } 47 | } 48 | } 49 | }, 50 | "message": { 51 | "docs": "https://www.rongcloud.cn/docs/push_service.html#broadcast", 52 | "url": "push", 53 | "params": { 54 | "content": { 55 | "platform": [ 56 | "ios", 57 | "android" 58 | ], 59 | "fromUserId": "userId01", 60 | "audience": { 61 | "tag": [ 62 | "女", 63 | "年轻" 64 | ] 65 | }, 66 | "notification": { 67 | "alert": "push content" 68 | } 69 | } 70 | }, 71 | "response": { 72 | "success": { 73 | "code": "200", 74 | "msg": "成功返回" 75 | }, 76 | "fail": { 77 | "20005": { 78 | "code": "20005", 79 | "msg": "{{name}} 参数为必传项" 80 | }, 81 | "20006": { 82 | "code": "20006", 83 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}} " 84 | }, 85 | "1004": { 86 | "code": "20000", 87 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 88 | }, 89 | "1008": { 90 | "code": "20001", 91 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 92 | } 93 | } 94 | } 95 | } 96 | } -------------------------------------------------------------------------------- /lib/push/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./api.json'); 2 | const verify = require('./verify.json'); 3 | 4 | const request = require('../request').request; 5 | const utils = require('../utils'); 6 | 7 | const rename = utils.rename; 8 | const logger = utils.logger; 9 | 10 | const getError = utils.getError; 11 | const check = utils.check; 12 | 13 | let push = (content) => { 14 | let conf = config.push; 15 | let error = check({ 16 | api: conf, 17 | model: 'content', 18 | data: content, 19 | verify: verify.content 20 | }); 21 | 22 | if (error) { 23 | return Promise.reject(error); 24 | } 25 | 26 | return request({ 27 | url: conf.url, 28 | data: content, 29 | submitType: 'json' 30 | }).then(result => { 31 | return result.text; 32 | }).catch(error => { 33 | error = getError({ 34 | code: error, 35 | errors: conf.response.fail 36 | }); 37 | logger.log({ 38 | content: error, 39 | level: 'error', 40 | pos: 'Push.push' 41 | }); 42 | return error; 43 | }); 44 | }; 45 | 46 | let message = (content) => { 47 | let conf = config.message; 48 | let error = check({ 49 | api: conf, 50 | model: 'content', 51 | data: content, 52 | verify: verify.content 53 | }); 54 | 55 | if (error) { 56 | return Promise.reject(error); 57 | } 58 | 59 | content = rename(content, { 60 | fromUserId: 'fromuserid' 61 | }); 62 | return request({ 63 | url: conf.url, 64 | data: content, 65 | submitType: 'json' 66 | }).then(result => { 67 | return result.text; 68 | }).catch(error => { 69 | error = getError({ 70 | code: error, 71 | errors: conf.response.fail 72 | }); 73 | logger.log({ 74 | content: error, 75 | level: 'error', 76 | pos: 'Push.message' 77 | }); 78 | return error; 79 | }); 80 | }; 81 | 82 | module.exports = { 83 | push: push, 84 | message: message 85 | }; -------------------------------------------------------------------------------- /lib/push/verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "content": { 3 | "_self": { 4 | "require": { 5 | "must": true, 6 | "invalid": "20005" 7 | }, 8 | "typeof": { 9 | "type": "object", 10 | "invalid": "20006" 11 | } 12 | }, 13 | "platform": { 14 | "require": { 15 | "must": true, 16 | "invalid": "20005" 17 | }, 18 | "typeof": { 19 | "type": "array", 20 | "invalid": "20006" 21 | } 22 | }, 23 | "audience": { 24 | "require": { 25 | "must": true, 26 | "invalid": "20005" 27 | }, 28 | "typeof": { 29 | "type": "object", 30 | "invalid": "20006" 31 | } 32 | }, 33 | "fromUserId": { 34 | "require": { 35 | "must": true, 36 | "invalid": "20005" 37 | }, 38 | "typeof": { 39 | "type": "string", 40 | "invalid": "20006" 41 | } 42 | }, 43 | "notification": { 44 | "require": { 45 | "must": true, 46 | "invalid": "20005" 47 | }, 48 | "typeof": { 49 | "type": "object", 50 | "invalid": "20006" 51 | } 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /lib/rongcloud.js: -------------------------------------------------------------------------------- 1 | const request = require('./request'); 2 | const User = require('./user'); 3 | const Sensitive = require('./sensitive'); 4 | const Message = require('./message'); 5 | const Group = require('./group'); 6 | const Conversation = require('./conversation'); 7 | const Chatroom = require('./chatroom'); 8 | const Push = require('./push'); 9 | 10 | let modules = { 11 | User: User, 12 | Sensitive: Sensitive, 13 | Message: Message, 14 | Group: Group, 15 | Conversation: Conversation, 16 | Chatroom: Chatroom, 17 | Push: Push 18 | }; 19 | 20 | module.exports = function (params) { 21 | request.init(params); 22 | return modules; 23 | }; -------------------------------------------------------------------------------- /lib/sensitive/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./api.json'); 2 | const verify = require('./verify.json'); 3 | 4 | const request = require('../request').request; 5 | const utils = require('../utils'); 6 | 7 | const logger = utils.logger; 8 | 9 | const getError = utils.getError; 10 | const check = utils.check; 11 | 12 | /* 13 | 参考文档: http://rongcloud.cn/docs/server.html#sensitiveword 14 | */ 15 | 16 | let add = (rule) => { 17 | let conf = config.add; 18 | rule.replace = rule.replace || ''; 19 | let error = check({ 20 | api: conf, 21 | model: 'rule', 22 | data: rule, 23 | verify: verify.rule 24 | }); 25 | if (error) { 26 | return Promise.reject(error); 27 | } 28 | 29 | rule = utils.rename(rule, { 30 | keyword: 'word', 31 | replace: 'replaceWord' 32 | }); 33 | 34 | // 敏感词屏蔽 35 | if (rule.type === 1) { 36 | delete rule.type 37 | delete rule.replaceWord 38 | } 39 | 40 | return request({ 41 | url: conf.url, 42 | data: rule 43 | }).then(result => { 44 | return result.text; 45 | }).catch(error => { 46 | error = getError({ 47 | code: error, 48 | errors: conf.response.fail 49 | }); 50 | logger.log({ 51 | content: error, 52 | level: 'error', 53 | pos: 'sensitive.add' 54 | }); 55 | return error; 56 | }); 57 | }; 58 | 59 | let remove = (sensitive) => { 60 | let conf = config.remove; 61 | let error = check({ 62 | api: conf, 63 | model: 'sensitive', 64 | data: sensitive, 65 | verify: verify.sensitive 66 | }); 67 | if (error) { 68 | return Promise.reject(error); 69 | } 70 | 71 | sensitive = utils.rename(sensitive, { 72 | keywords: 'words' 73 | }); 74 | 75 | return request({ 76 | url: conf.url, 77 | data: sensitive 78 | }).then(result => { 79 | return result.text; 80 | }).catch(error => { 81 | error = getError({ 82 | code: error, 83 | errors: conf.response.fail 84 | }); 85 | logger.log({ 86 | content: error, 87 | level: 'error', 88 | pos: 'sensitive.remove' 89 | }); 90 | return error; 91 | }); 92 | }; 93 | 94 | let getList = (sensitive) => { 95 | sensitive = sensitive || {type: 2}; 96 | 97 | let conf = config.getList; 98 | let type = sensitive.type; 99 | 100 | return request({ 101 | url: conf.url, 102 | data: { 103 | type: type 104 | } 105 | }).then(result => { 106 | return result.text; 107 | }).catch(error => { 108 | error = getError({ 109 | code: error, 110 | errors: conf.response.fail 111 | }); 112 | logger.log({ 113 | content: error, 114 | level: 'error', 115 | pos: 'sensitive.getList' 116 | }); 117 | return error; 118 | }); 119 | }; 120 | 121 | module.exports = { 122 | add: add, 123 | remove: remove, 124 | getList: getList 125 | }; -------------------------------------------------------------------------------- /lib/sensitive/verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "rule": { 3 | "_self": { 4 | "require": { 5 | "must": true, 6 | "invalid": "20005" 7 | }, 8 | "typeof": { 9 | "type": "object", 10 | "invalid": "20006" 11 | } 12 | }, 13 | "keyword": { 14 | "require": { 15 | "must": true, 16 | "invalid": "20005" 17 | }, 18 | "length": { 19 | "max": 64, 20 | "min": 1, 21 | "invalid": "20003" 22 | } 23 | }, 24 | "replace": { 25 | "length": { 26 | "max": 64, 27 | "min": 0, 28 | "invalid": "20003" 29 | } 30 | } 31 | }, 32 | "sensitive": { 33 | "_self": { 34 | "require": { 35 | "must": true, 36 | "invalid": "20005" 37 | }, 38 | "typeof": { 39 | "type": "object", 40 | "invalid": "20006" 41 | } 42 | }, 43 | "keywords": { 44 | "require": { 45 | "must": true, 46 | "invalid": "20005" 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /lib/user/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "register": { 3 | "docs": "http://rongcloud.cn/docs/server.html#user_get_token", 4 | "url": "user/getToken", 5 | "params": { 6 | "user": { 7 | "id": "aFo990k", 8 | "name": "Martin", 9 | "portrait": "http://image.rongcloud.cn/portrait.png" 10 | } 11 | }, 12 | "response": { 13 | "success": { 14 | "code": 200, 15 | "userId": "jlk456j5", 16 | "token": "MAo+IhwqEO3+h/DdXg1w6m20V27XsDF2Dx+" 17 | }, 18 | "fail": { 19 | "2007": { 20 | "code": "10001", 21 | "msg": "测试人数超限, 请前往开发者后台 -> 应用 -> App Key -> 测试用户数,增加测试人数, https://developer.rongcloud.cn" 22 | }, 23 | "20003": { 24 | "code": "20003", 25 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}} 单位: 字节" 26 | }, 27 | "20005": { 28 | "code": "20005", 29 | "msg": "{{name}} 参数为必传项" 30 | }, 31 | "20006": { 32 | "code": "20006", 33 | "msg": "user 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 34 | }, 35 | "20007": { 36 | "code": "20007", 37 | "msg": "protrait 不是合法地址,请检查 protrait 是否正确" 38 | }, 39 | "1004": { 40 | "code": "20000", 41 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 42 | }, 43 | "1008": { 44 | "code": "20001", 45 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 46 | } 47 | } 48 | } 49 | 50 | }, 51 | "update": { 52 | "docs": "http://rongcloud.cn/docs/server.html#user_refresh", 53 | "url": "user/refresh", 54 | "params": { 55 | "user": { 56 | "id": "aFo990k", 57 | "name": "Martin", 58 | "portrait": "http://image.rongcloud.cn/portrait.png" 59 | } 60 | }, 61 | "response": { 62 | "success": { 63 | "code": "200", 64 | "msg": "成功返回" 65 | }, 66 | "fail": { 67 | "20003": { 68 | "code": "20003", 69 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}}" 70 | }, 71 | "20005": { 72 | "code": "20005", 73 | "msg": "{{name}} 参数为必传项" 74 | }, 75 | "20007": { 76 | "code": "20007", 77 | "msg": "protrait 不是合法地址,请检查 protrait 是否正确" 78 | }, 79 | "1004": { 80 | "code": "20000", 81 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 82 | }, 83 | "1008": { 84 | "code": "20001", 85 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 86 | } 87 | } 88 | } 89 | } 90 | } -------------------------------------------------------------------------------- /lib/user/block/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "add": { 3 | "docs": "http://rongcloud.cn/docs/server.html#user_block_add", 4 | "url": "user/block", 5 | "params": { 6 | "user": { 7 | "id": "aFo990k", 8 | "minute": 30 9 | } 10 | }, 11 | "response": { 12 | "success": { 13 | "code": "200", 14 | "msg": "成功返回" 15 | }, 16 | "fail": { 17 | "20004": { 18 | "code": "20004", 19 | "msg": "封禁时间不正确, 当前传入为 {{size}}, 正确范围 1 - 1 * 30 * 24 * 60 分钟" 20 | }, 21 | "20006": { 22 | "code": "20006", 23 | "msg": "{{name}} 类型不正确,请检查参数类型,应该为 {{type}} 传入为 {{currentType}}" 24 | }, 25 | "20005": { 26 | "code": "20005", 27 | "msg": "{{name}} 参数为必传项" 28 | }, 29 | "1004": { 30 | "code": "20000", 31 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 32 | }, 33 | "1008": { 34 | "code": "20001", 35 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 36 | } 37 | } 38 | } 39 | }, 40 | "remove": { 41 | "docs": "http://rongcloud.cn/docs/server.html#user_unblock", 42 | "url": "user/unblock", 43 | "params": { 44 | "user": { 45 | "id": "aFo990k" 46 | } 47 | }, 48 | "response": { 49 | "success": { 50 | "code": "200", 51 | "msg": "成功返回" 52 | }, 53 | "fail": { 54 | "20006": { 55 | "code": "20006", 56 | "msg": "minute 参数不正确,请检查参数类型,应该为 number 传入为 {{currentType}}" 57 | }, 58 | "20005": { 59 | "code": "20005", 60 | "msg": "{{name}} 参数为必传项" 61 | }, 62 | "1004": { 63 | "code": "20000", 64 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 65 | }, 66 | "1008": { 67 | "code": "20001", 68 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 69 | } 70 | } 71 | } 72 | }, 73 | "getList": { 74 | "docs": "http://rongcloud.cn/docs/server.html#user_block_query", 75 | "url": "user/block/query", 76 | "params": {}, 77 | "response": { 78 | "success": { 79 | "code": "200", 80 | "msg": "成功返回" 81 | }, 82 | "fail": { 83 | "1004": { 84 | "code": "20000", 85 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 86 | }, 87 | "1008": { 88 | "code": "20001", 89 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 90 | } 91 | } 92 | } 93 | } 94 | } -------------------------------------------------------------------------------- /lib/user/block/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./api.json'); 2 | const verify = require('../verify.json'); 3 | 4 | const request = require('../../request').request; 5 | const utils = require('../../utils'); 6 | 7 | const _ = utils.underscore; 8 | const rename = utils.rename; 9 | const logger = utils.logger; 10 | const getError = utils.getError; 11 | 12 | const check = utils.check; 13 | 14 | let add = (user) => { 15 | let conf = config.add; 16 | 17 | let error = check({ 18 | api: conf, 19 | model: 'user', 20 | data: user, 21 | verify: _.pick(verify.user, 'id', 'minute') 22 | }); 23 | 24 | if (error) { 25 | return Promise.reject(error); 26 | } 27 | 28 | user = rename(user, { 29 | id: 'userId' 30 | }); 31 | 32 | return request({ 33 | url: conf.url, 34 | data: user 35 | }).then(result => { 36 | return result.text; 37 | }).catch(error => { 38 | error = getError({ 39 | code: error, 40 | errors: conf.response.fail 41 | }); 42 | logger.log({ 43 | content: error, 44 | level: 'error', 45 | pos: 'add' 46 | }); 47 | return error; 48 | }); 49 | }; 50 | 51 | let remove = (user) => { 52 | let conf = config.remove; 53 | 54 | let error = check({ 55 | api: conf, 56 | model: 'user', 57 | data: user, 58 | verify: { 59 | id: verify.user.id 60 | } 61 | }); 62 | 63 | if (error) { 64 | return Promise.reject(error); 65 | } 66 | 67 | user = rename(user, { 68 | id: 'userId' 69 | }); 70 | 71 | return request({ 72 | url: conf.url, 73 | data: user 74 | }).then(result => { 75 | return result.text; 76 | }).catch(error => { 77 | error = getError({ 78 | code: error, 79 | errors: conf.response.fail 80 | }); 81 | logger.log({ 82 | content: error, 83 | level: 'error', 84 | pos: 'add' 85 | }); 86 | return error; 87 | }); 88 | }; 89 | 90 | let getList = () => { 91 | let conf = config.getList; 92 | 93 | return request({ 94 | url: conf.url, 95 | data: {} 96 | }).then(result => { 97 | return result.text; 98 | }).catch(error => { 99 | error = getError({ 100 | code: error, 101 | errors: conf.response.fail 102 | }); 103 | logger.log({ 104 | content: error, 105 | level: 'error', 106 | pos: 'getList' 107 | }); 108 | return error; 109 | }); 110 | }; 111 | 112 | module.exports = { 113 | add: add, 114 | remove: remove, 115 | getList: getList 116 | }; -------------------------------------------------------------------------------- /lib/user/index.js: -------------------------------------------------------------------------------- 1 | const Blacklist = require('./blacklist'); 2 | const Block = require('./block'); 3 | const Tag = require('./tag'); 4 | const OnlineStatus = require('./online-status'); 5 | 6 | const config = require('./api.json'); 7 | const verify = require('./verify.json'); 8 | 9 | const request = require('../request').request; 10 | const utils = require('../utils'); 11 | 12 | const rename = utils.rename; 13 | const logger = utils.logger; 14 | 15 | const getError = utils.getError; 16 | const check = utils.check; 17 | 18 | let register = (user) => { 19 | let conf = config.register; 20 | let error = check({ 21 | api: conf, 22 | model: 'user', 23 | data: user, 24 | verify: verify.user 25 | }); 26 | 27 | if (error) { 28 | return Promise.reject(error); 29 | } 30 | 31 | user = rename(user, { 32 | id: 'userId', 33 | portrait: 'portraitUri' 34 | }); 35 | 36 | return request({ 37 | url: conf.url, 38 | data: user 39 | }).then(result => { 40 | return result.text; 41 | }).catch(error => { 42 | error = getError({ 43 | code: error, 44 | errors: conf.response.fail 45 | }); 46 | logger.log({ 47 | content: error, 48 | level: 'error', 49 | pos: 'User.register' 50 | }); 51 | return error; 52 | }); 53 | }; 54 | 55 | let update = (user) => { 56 | let conf = config.update; 57 | let error = check({ 58 | api: conf, 59 | model: 'user', 60 | data: user, 61 | verify: verify.user 62 | }); 63 | 64 | if (error) { 65 | return Promise.reject(error); 66 | } 67 | 68 | user = rename(user, { 69 | id: 'userId', 70 | portrait: 'portraitUri' 71 | }); 72 | 73 | return request({ 74 | url: conf.url, 75 | data: user 76 | }).then(result => { 77 | return result.text; 78 | }).catch(error => { 79 | error = getError({ 80 | code: error, 81 | errors: conf.response.fail 82 | }); 83 | logger.log({ 84 | content: error, 85 | level: 'error', 86 | pos: 'User.update' 87 | }); 88 | return error; 89 | }); 90 | }; 91 | 92 | module.exports = { 93 | Block: Block, 94 | Blacklist: Blacklist, 95 | Tag: Tag, 96 | OnlineStatus: OnlineStatus, 97 | register: register, 98 | update: update 99 | }; -------------------------------------------------------------------------------- /lib/user/online-status/api.json: -------------------------------------------------------------------------------- 1 | { 2 | "get": { 3 | "docs": "http://rongcloud.cn/docs/server.html#user_check_online", 4 | "url": "user/checkOnline", 5 | "params": { 6 | "user": { 7 | "id": "aFo990k" 8 | } 9 | }, 10 | "response": { 11 | "success": { 12 | "code": 200, 13 | "status": 1 14 | }, 15 | "fail": { 16 | "20003": { 17 | "code": "20003", 18 | "msg": "{{name}} 长度超限, {{name}} >= {{min}} 且 {{name}} <= {{max}} 单位: 字节" 19 | }, 20 | "20005": { 21 | "code": "20005", 22 | "msg": "id 为必传项" 23 | }, 24 | "20006": { 25 | "code": "20006", 26 | "msg": "user 类型不正确,请检查参数类型,应该为 Object 传入为 {{currentType}} " 27 | }, 28 | "1004": { 29 | "code": "20000", 30 | "msg": "签名错误, 请排查 Appkey、Secret 是否正确" 31 | }, 32 | "1008": { 33 | "code": "20001", 34 | "msg": "调用频率超限,每秒钟限制 100 次,调整频率上限请移步至专有云 http://www.rongcloud.cn/pricing#pay" 35 | } 36 | } 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /lib/user/online-status/index.js: -------------------------------------------------------------------------------- 1 | const config = require('./api.json'); 2 | const verify = require('../verify.json'); 3 | 4 | const request = require('../../request').request; 5 | const utils = require('../../utils'); 6 | 7 | const rename = utils.rename; 8 | const logger = utils.logger; 9 | const getError = utils.getError; 10 | 11 | const check = utils.check; 12 | 13 | let get = (user) => { 14 | let conf = config.get; 15 | let error = check({ 16 | api: conf, 17 | model: 'user', 18 | data: user, 19 | verify: verify.user 20 | }); 21 | 22 | if (error) { 23 | return Promise.reject(error); 24 | } 25 | 26 | user = rename(user, { 27 | id: 'userId' 28 | }); 29 | 30 | return request({ 31 | url: conf.url, 32 | data: user 33 | }).then(result => { 34 | return result.text; 35 | }).catch(error => { 36 | error = getError({ 37 | code: error, 38 | errors: conf.response.fail 39 | }); 40 | logger.log({ 41 | content: error, 42 | level: 'error', 43 | pos: 'OnlineStatus.get' 44 | }); 45 | return error; 46 | }); 47 | }; 48 | 49 | module.exports = { 50 | get: get 51 | }; -------------------------------------------------------------------------------- /lib/user/verify.json: -------------------------------------------------------------------------------- 1 | { 2 | "user": { 3 | "_self": { 4 | "require": { 5 | "must": true, 6 | "invalid": "20005" 7 | }, 8 | "typeof": { 9 | "type": "object", 10 | "invalid": "20006" 11 | } 12 | }, 13 | "id": { 14 | "require": { 15 | "must": true, 16 | "invalid": "20005" 17 | } 18 | }, 19 | "name": { 20 | "require": { 21 | "must": true, 22 | "invalid": "20005" 23 | }, 24 | "length": { 25 | "max": 64, 26 | "min": 1, 27 | "invalid": "20003" 28 | } 29 | }, 30 | "portrait": { 31 | "require": { 32 | "must": true, 33 | "invalid": "20005" 34 | }, 35 | "length": { 36 | "max": 512, 37 | "min": 1, 38 | "invalid": "20003" 39 | } 40 | }, 41 | "minute": { 42 | "require": { 43 | "must": true, 44 | "invalid": "20005" 45 | }, 46 | "size": { 47 | "max": 43200, 48 | "min": 1, 49 | "invalid": "20004" 50 | }, 51 | "typeof": { 52 | "type": "number", 53 | "invalid": "20006" 54 | } 55 | }, 56 | "blacklist": { 57 | "require": { 58 | "must": true, 59 | "invalid": "20005" 60 | }, 61 | "typeof": { 62 | "type": "array", 63 | "invalid": "20006" 64 | } 65 | }, 66 | "tags": { 67 | "require": { 68 | "must": true, 69 | "invalid": "20005" 70 | }, 71 | "typeof": { 72 | "type": "array", 73 | "invalid": "20006" 74 | } 75 | }, 76 | "users": { 77 | "require": { 78 | "must": true, 79 | "invalid": "20005" 80 | }, 81 | "typeof": { 82 | "type": "array", 83 | "invalid": "20006" 84 | } 85 | } 86 | } 87 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rongcloud-sdk", 3 | "version": "3.1.1", 4 | "description": "The Server SDK of RongCloud", 5 | "main": "index.js", 6 | "scripts": { 7 | "eslint": "eslint .", 8 | "test": "istanbul cover node_modules/jasmine/bin/jasmine.js", 9 | "precommit": "npm run eslint" 10 | }, 11 | "precommit": [ 12 | "npm run precommit" 13 | ], 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/rongcloud/server-sdk-nodejs" 17 | }, 18 | "keywords": [ 19 | "mobile", 20 | "im", 21 | "server", 22 | "sdk" 23 | ], 24 | "author": "RongCloud", 25 | "contributors": [ 26 | { 27 | "name": "yuhongda", 28 | "email": "yuhongda0315@163.com" 29 | } 30 | ], 31 | "license": "MIT", 32 | "bugs": { 33 | "url": "https://github.com/rongcloud/server-sdk-nodejs/issues" 34 | }, 35 | "homepage": "http://rongcloud.cn", 36 | "dependencies": { 37 | "superagent": "^3.8.1", 38 | "underscore": "^1.8.3" 39 | }, 40 | "devDependencies": { 41 | "eslint": "^5.9.0", 42 | "istanbul": "^0.4.5", 43 | "jasmine": "^2.8.0", 44 | "precommit": "^1.2.2" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /report-0507.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rongcloud/server-sdk-nodejs/e9e9f7a088276791679fe3c150c7eafbe93a4e52/report-0507.png -------------------------------------------------------------------------------- /spec/conversationSpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Conversation', () => { 3 | let _golbal, Conversation; 4 | beforeAll(function() { 5 | _golbal = this; 6 | Conversation = _golbal.rongSDK.Conversation; 7 | }); 8 | const config = require('../lib/conversation/api.json'); 9 | 10 | describe('mute', () => { 11 | let conf = config.mute; 12 | 13 | let response = conf.response; 14 | let success = response.success.code; 15 | 16 | it('参数无效', () => { 17 | let conversation = _golbal.conversation; 18 | return Conversation.mute({}).catch(error => { 19 | expect(error).not.toBeUndefined(); 20 | }); 21 | }); 22 | 23 | it('Success', () => { 24 | let conversation = _golbal.conversation; 25 | return Conversation.mute(conversation.mute).then(result => { 26 | expect(result.code).toEqual(Number(success)); 27 | }); 28 | }); 29 | 30 | it('Fail', () => { 31 | let conversation = _golbal.conversation.mute; 32 | conversation.type = 'PP'; 33 | return Conversation.mute(conversation).catch(error => { 34 | expect(error).not.toBeUndefined(); 35 | }); 36 | }); 37 | }); 38 | 39 | describe('unmute', () => { 40 | let conf = config.unmute; 41 | 42 | let response = conf.response; 43 | let success = response.success.code; 44 | 45 | it('参数无效', () => { 46 | let conversation = _golbal.conversation; 47 | return Conversation.unmute({}).catch(error => { 48 | expect(error).not.toBeUndefined(); 49 | }); 50 | }); 51 | 52 | it('Success', () => { 53 | let conversation = _golbal.conversation; 54 | return Conversation.unmute(conversation.unmute).then(result => { 55 | expect(result.code).toEqual(Number(success)); 56 | }); 57 | }); 58 | 59 | it('Fail', () => { 60 | let conversation = _golbal.conversation.unmute; 61 | conversation.type = 'PP'; 62 | return Conversation.unmute(conversation).catch(error => { 63 | expect(error).not.toBeUndefined(); 64 | }); 65 | }); 66 | }); 67 | }); -------------------------------------------------------------------------------- /spec/message/chatroomSpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Message', () => { 3 | let _golbal, Message, Chatroom; 4 | 5 | beforeAll(function() { 6 | _golbal = this; 7 | Message = _golbal.rongSDK.Message; 8 | Chatroom = Message.Chatroom; 9 | }); 10 | 11 | const config = require('../../lib/message/chatroom/api.json'); 12 | 13 | describe('Chatroom.send', () => { 14 | let conf = config.send; 15 | 16 | let response = conf.response; 17 | let success = response.success.code; 18 | 19 | it('Fail', () => { 20 | let message = _golbal.failMessage; 21 | return Chatroom.send(message).catch(error => { 22 | expect(error).not.toBeUndefined(); 23 | }); 24 | }); 25 | 26 | it('参数无效', () => { 27 | let message = _golbal.message; 28 | return Chatroom.send({}).catch(error => { 29 | expect(error).not.toBeUndefined(); 30 | }); 31 | }); 32 | 33 | it('success', () => { 34 | let message = _golbal.message; 35 | return Chatroom.send(message).then(result => { 36 | expect(result.code).toEqual(Number(success)); 37 | }); 38 | }); 39 | }); 40 | 41 | describe('Chatroom.broadcast', () => { 42 | let conf = config.broadcast; 43 | 44 | let response = conf.response; 45 | let success = response.success.code; 46 | 47 | it('Fail', () => { 48 | let message = _golbal.failMessage; 49 | return Chatroom.broadcast(message).catch(error => { 50 | expect(error).not.toBeUndefined(); 51 | }); 52 | }); 53 | 54 | it('参数无效', () => { 55 | let message = _golbal.message; 56 | return Chatroom.broadcast({}).catch(error => { 57 | expect(error).not.toBeUndefined(); 58 | }); 59 | }); 60 | // 需开通专属 61 | // it('success', () => { 62 | // let message = _golbal.broadcastMessage; 63 | // return Chatroom.broadcast(message).then(result => { 64 | // expect(result.code).toEqual(Number(success)); 65 | // }); 66 | // }); 67 | }); 68 | }); -------------------------------------------------------------------------------- /spec/message/discussionSpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Message', () => { 3 | let _golbal, Message, Discussion; 4 | 5 | beforeAll(function() { 6 | _golbal = this; 7 | Message = _golbal.rongSDK.Message; 8 | Discussion = Message.Discussion; 9 | }); 10 | 11 | const config = require('../../lib/message/discussion/api.json'); 12 | 13 | describe('Discussion.send', () => { 14 | let conf = config.send; 15 | 16 | let response = conf.response; 17 | let success = response.success.code; 18 | 19 | it('Fail', () => { 20 | let message = _golbal.failMessage; 21 | return Discussion.send(message).catch(error => { 22 | expect(error).not.toBeUndefined(); 23 | }); 24 | }); 25 | 26 | it('参数无效', () => { 27 | let message = _golbal.message; 28 | return Discussion.send({}).catch(error => { 29 | expect(error).not.toBeUndefined(); 30 | }); 31 | }); 32 | 33 | it('success', () => { 34 | let message = _golbal.message; 35 | return Discussion.send(message).then(result => { 36 | expect(result.code).toEqual(Number(success)); 37 | }); 38 | }); 39 | }); 40 | 41 | describe('Discussion.recall', () => { 42 | let conf = config.recall; 43 | 44 | let response = conf.response; 45 | let success = response.success.code; 46 | 47 | it('Fail', () => { 48 | let message = _golbal.failRecallMessage; 49 | return Discussion.recall(message).catch(error => { 50 | expect(error).not.toBeUndefined(); 51 | }); 52 | }); 53 | 54 | it('参数无效', () => { 55 | return Discussion.recall({}).catch(error => { 56 | expect(error).not.toBeUndefined(); 57 | }); 58 | }); 59 | 60 | it('撤回消息', () => { 61 | let message = _golbal.recallMessage; 62 | return Discussion.recall(message).then(result => { 63 | expect(result.code).toEqual(Number(success)); 64 | }); 65 | }); 66 | }); 67 | }); -------------------------------------------------------------------------------- /spec/message/groupSpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Message', () => { 3 | let _golbal, Message, Group; 4 | 5 | beforeAll(function() { 6 | _golbal = this; 7 | Message = _golbal.rongSDK.Message; 8 | Group = Message.Group; 9 | }); 10 | 11 | const config = require('../../lib/message/group/api.json'); 12 | 13 | describe('Group.send', () => { 14 | let conf = config.send; 15 | 16 | let response = conf.response; 17 | let success = response.success.code; 18 | 19 | it('Fail', () => { 20 | let message = _golbal.failMessage; 21 | return Group.send(message).catch(error => { 22 | expect(error).not.toBeUndefined(); 23 | }); 24 | }); 25 | 26 | it('参数无效', () => { 27 | let message = _golbal.message; 28 | return Group.send({}).catch(error => { 29 | expect(error).not.toBeUndefined(); 30 | }); 31 | }); 32 | 33 | it('success', () => { 34 | let message = _golbal.message; 35 | return Group.send(message).then(result => { 36 | expect(result.code).toEqual(Number(success)); 37 | }); 38 | }); 39 | }); 40 | 41 | describe('Group.recall', () => { 42 | let conf = config.recall; 43 | 44 | let response = conf.response; 45 | let success = response.success.code; 46 | 47 | it('Fail', () => { 48 | let message = _golbal.failRecallMessage; 49 | return Group.recall(message).catch(error => { 50 | expect(error).not.toBeUndefined(); 51 | }); 52 | }); 53 | 54 | it('参数无效', () => { 55 | return Group.recall({}).catch(error => { 56 | expect(error).not.toBeUndefined(); 57 | }); 58 | }); 59 | 60 | it('撤回消息', () => { 61 | let message = _golbal.recallMessage; 62 | return Group.recall(message).then(result => { 63 | expect(result.code).toEqual(Number(success)); 64 | }); 65 | }); 66 | }); 67 | 68 | describe('Group.sendMention', () => { 69 | let conf = config.sendMention; 70 | 71 | let response = conf.response; 72 | let success = response.success.code; 73 | 74 | it('Fail', () => { 75 | let message = _golbal.failMessage; 76 | return Group.sendMention(message).catch(error => { 77 | expect(error).not.toBeUndefined(); 78 | }); 79 | }); 80 | 81 | it('参数无效', () => { 82 | return Group.sendMention({}).catch(error => { 83 | expect(error).not.toBeUndefined(); 84 | }); 85 | }); 86 | 87 | it('success', () => { 88 | let message = _golbal.groupMentionMessage; 89 | return Group.sendMention(message).then(result => { 90 | expect(result.code).toEqual(Number(success)); 91 | }); 92 | }); 93 | }); 94 | }); -------------------------------------------------------------------------------- /spec/message/historySpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Message', () => { 3 | let _golbal, Message, History; 4 | 5 | beforeAll(function() { 6 | _golbal = this; 7 | Message = _golbal.rongSDK.Message; 8 | History = Message.History; 9 | }); 10 | 11 | const config = require('../../lib/message/history/api.json'); 12 | 13 | describe('History.get', () => { 14 | let conf = config.get; 15 | 16 | let response = conf.response; 17 | let success = response.success.code; 18 | 19 | it('Fail', () => { 20 | let message = _golbal.failHistoryMessage; 21 | return History.get(message).catch(error => { 22 | expect(error).not.toBeUndefined(); 23 | }); 24 | }); 25 | 26 | it('参数无效', () => { 27 | return History.get({}).catch(error => { 28 | expect(error).not.toBeUndefined(); 29 | }); 30 | }); 31 | 32 | it('获取历史消息文件地址', () => { 33 | let message = _golbal.historyMessage; 34 | return History.get(message).then(result => { 35 | expect(result.code).toEqual(Number(success)); 36 | }); 37 | }); 38 | }); 39 | 40 | describe('History.remove', () => { 41 | let conf = config.remove; 42 | 43 | let response = conf.response; 44 | let success = response.success.code; 45 | 46 | it('Fail', () => { 47 | let message = _golbal.failHistoryMessage; 48 | return History.remove(message).catch(error => { 49 | expect(error).not.toBeUndefined(); 50 | }); 51 | }); 52 | 53 | it('参数无效', () => { 54 | return History.remove({}).catch(error => { 55 | expect(error).not.toBeUndefined(); 56 | }); 57 | }); 58 | 59 | it('删除历史消息文件地址', () => { 60 | let message = _golbal.historyMessage; 61 | return History.remove(message).then(result => { 62 | expect(result).not.toBeUndefined(); 63 | }); 64 | }); 65 | }); 66 | }); -------------------------------------------------------------------------------- /spec/message/privateSpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Message', () => { 3 | let _golbal, Message, Private; 4 | 5 | beforeAll(function() { 6 | _golbal = this; 7 | Message = _golbal.rongSDK.Message; 8 | Private = Message.Private; 9 | }); 10 | 11 | const config = require('../../lib/message/private/api.json'); 12 | 13 | describe('Private.send', () => { 14 | let conf = config.send; 15 | 16 | let response = conf.response; 17 | let success = response.success.code; 18 | 19 | it('Fail', () => { 20 | let message = _golbal.failMessage; 21 | return Private.send(message).catch(error => { 22 | expect(error).not.toBeUndefined(); 23 | }); 24 | }); 25 | 26 | it('参数无效', () => { 27 | let message = _golbal.message; 28 | return Private.send({}).catch(error => { 29 | expect(error).not.toBeUndefined(); 30 | }); 31 | }); 32 | 33 | it('success', () => { 34 | let message = _golbal.message; 35 | return Private.send(message).then(result => { 36 | expect(result.code).toEqual(Number(success)); 37 | }); 38 | }); 39 | }); 40 | 41 | describe('Private.recall', () => { 42 | let conf = config.recall; 43 | 44 | let response = conf.response; 45 | let success = response.success.code; 46 | 47 | it('Fail', () => { 48 | let message = _golbal.failRecallMessage; 49 | return Private.recall(message).catch(error => { 50 | expect(error).not.toBeUndefined(); 51 | }); 52 | }); 53 | 54 | it('参数无效', () => { 55 | return Private.recall({}).catch(error => { 56 | expect(error).not.toBeUndefined(); 57 | }); 58 | }); 59 | 60 | it('撤回消息', () => { 61 | let message = _golbal.recallMessage; 62 | return Private.recall(message).then(result => { 63 | expect(result.code).toEqual(Number(success)); 64 | }); 65 | }); 66 | }); 67 | 68 | describe('Private.sendTemplate', () => { 69 | let conf = config.sendTemplate; 70 | 71 | let response = conf.response; 72 | let success = response.success.code; 73 | 74 | it('参数无效', () => { 75 | return Private.sendTemplate({}).catch(error => { 76 | expect(error).not.toBeUndefined(); 77 | }); 78 | }); 79 | 80 | it('模版消息', () => { 81 | let message = _golbal.templateMessage; 82 | return Private.sendTemplate(message).then(result => { 83 | expect(result.code).toEqual(Number(success)); 84 | }); 85 | }); 86 | }); 87 | }); -------------------------------------------------------------------------------- /spec/message/systemSpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Message', () => { 3 | let _golbal, Message, System; 4 | 5 | beforeAll(function() { 6 | _golbal = this; 7 | Message = _golbal.rongSDK.Message; 8 | System = Message.System; 9 | }); 10 | 11 | const config = require('../../lib/message/system/api.json'); 12 | 13 | describe('System.send', () => { 14 | let conf = config.send; 15 | 16 | let response = conf.response; 17 | let success = response.success.code; 18 | 19 | it('Fail', () => { 20 | let message = _golbal.failMessage; 21 | return System.send(message).catch(error => { 22 | expect(error).not.toBeUndefined(); 23 | }); 24 | }); 25 | 26 | it('参数无效', () => { 27 | let message = _golbal.message; 28 | return System.send({}).catch(error => { 29 | expect(error).not.toBeUndefined(); 30 | }); 31 | }); 32 | 33 | it('success', () => { 34 | let message = _golbal.message; 35 | return System.send(message).then(result => { 36 | expect(result.code).toEqual(Number(success)); 37 | }); 38 | }); 39 | }); 40 | 41 | describe('System.sendTemplate', () => { 42 | let conf = config.sendTemplate; 43 | 44 | let response = conf.response; 45 | let success = response.success.code; 46 | 47 | it('参数无效', () => { 48 | return System.sendTemplate({}).catch(error => { 49 | expect(error).not.toBeUndefined(); 50 | }); 51 | }); 52 | 53 | it('模版消息', () => { 54 | let message = _golbal.templateMessage; 55 | return System.sendTemplate(message).then(result => { 56 | expect(result.code).toEqual(Number(success)); 57 | }); 58 | }); 59 | }); 60 | 61 | 62 | describe('System.broadcast', () => { 63 | let conf = config.broadcast; 64 | 65 | let response = conf.response; 66 | let success = response.success.code; 67 | 68 | it('Fail', () => { 69 | let message = _golbal.failMessage; 70 | return System.broadcast(message).catch(error => { 71 | expect(error).not.toBeUndefined(); 72 | }); 73 | }); 74 | 75 | it('参数无效', () => { 76 | let message = _golbal.message; 77 | return System.broadcast({}).catch(error => { 78 | expect(error).not.toBeUndefined(); 79 | }); 80 | }); 81 | 82 | it('success', () => { 83 | let message = _golbal.broadcastMessage; 84 | return System.broadcast(message).then(result => { 85 | expect(result.code).toEqual(Number(success)); 86 | }); 87 | }); 88 | }); 89 | }); -------------------------------------------------------------------------------- /spec/pushSpec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | describe('Push', () => { 3 | let _golbal, Push; 4 | beforeAll(function() { 5 | _golbal = this; 6 | Push = _golbal.rongSDK.Push; 7 | }); 8 | const config = require('../lib/push/api.json'); 9 | 10 | describe('push', () => { 11 | let conf = config.push; 12 | let response = conf.response; 13 | let success = response.success.code; 14 | 15 | it('Success', () => { 16 | let pushContent = _golbal.pushContent; 17 | return Push.push(pushContent).then(result => { 18 | expect(result.code).toEqual(Number(success)); 19 | }); 20 | }); 21 | 22 | it('Fail', () => { 23 | return Push.push({}).catch(error => { 24 | expect(error).not.toBeUndefined(); 25 | }); 26 | }); 27 | }); 28 | 29 | describe('message', () => { 30 | let conf = config.message; 31 | let response = conf.response; 32 | let success = response.success.code; 33 | 34 | it('Success', () => { 35 | let pushMessage = _golbal.pushMessage; 36 | return Push.message(pushMessage).then(result => { 37 | expect(result.code).toEqual(Number(success)); 38 | }); 39 | }); 40 | 41 | it('Fail', () => { 42 | return Push.message({}).catch(error => { 43 | expect(error).not.toBeUndefined(); 44 | }); 45 | }); 46 | }); 47 | }); -------------------------------------------------------------------------------- /spec/support/jasmine.json: -------------------------------------------------------------------------------- 1 | { 2 | "spec_dir": "spec", 3 | "spec_files": [ 4 | "**/*Spec.js" 5 | ], 6 | "helpers": [ 7 | "helpers/**/*.js" 8 | ] 9 | } 10 | --------------------------------------------------------------------------------