-
1. 后端处理服务器API
- 1.1 数据库结构
- 1.2 后端处理服务器HTTP 接口
- 1.3. 数据包
-
2. 后端处理服务器应用集成API
- 2.1 设置应用集成
- 2.2 API 格式和签名机制
- 2.3 API 定义
- 3. 客户端扩展机制
-
4. 会话机器人开发指南
- 4.1 机器人应用开发
数据库结构
- 2019-03-12 10:27:58
- Catouse
- 50250
- 最后编辑:先知 于 2020-02-05 10:12:07
- 分享链接
喧喧MySql 数据库 参见文末代码。
一、Chat 表
存储会话数据。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
id | number | 必须 | 存储在远程数据库的id,客户端根据此id值是否设置来判定是否为远程保存的对象 |
gid | string | 必须 | 当客户端向系统提交新的会话时,会创建全局唯一的id |
name | string | 可选 | 会话名称,当为空时,客户端会自动生成会话名称 |
type | string | 可选 | 表明会话类型:system(系统), one2one(一对一), gourp(多人讨论组), project, product等 |
admins | string | 可选 | 会话管理员用户列表 |
committers | string | 可选 | 会话允许发言用户清单 |
subject | int | 可选 | 主题会话关联的主题(product, project等)ID |
public | bool | 可选 | 是否公共会话 |
createdBy | string | 必须 | 创建者的账号 |
createdDate | datetime | 必须 | 创建会话时服务器的时间戳 |
editedBy | string | 可选 | 编辑者的账号 |
editedDate | datetime | 可选 | 编辑会话时服务器的时间戳 |
lastActiveTime | datetime | 可选 | 会话最后一次发送消息时服务器的时间戳 |
[users] | 关联数据集 | 必须 | 包含此会话的所有成员,和每个成员加入此会话的时间 |
[messages] | 关联数据集 | 必须 | 包含此会话的所有消息 |
二、Message 表
存储会话消息数据。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
id | number | 必须 | 存储在远程数据库的id,客户端根据此id值是否设置来判定是否为远程保存的对象 |
gid | string | 必须 | 当客户端向系统提交新的消息时,会创建全局唯一的id |
cgid | string | 必须 | 此消息所属于的会话的gid属性,会话根据此值来查询包含的消息 |
user | string | 可选 | 此消息发送者的用户名,广播类的消息没有此值 |
date | number | 必须 | 消息发送的时间戳 |
type | string | 可选 | 消息的类型,为"normal"(默认), "broadcast" |
content | string | 必须 | 消息的内容,如果消息内容类型不是文本,则已此值为json格式的对象 |
contentType | string | 必须 | 消息内容的类型,为"text"(默认), "emoticon", "image", "file" |
三、UserMessageStatus表
记录消息状态。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
user | number | 必须 | 离线消息的目标用户id,对应用户表的id |
gid | string | 必须 | 当客户端向系统提交新的消息时,会创建全局唯一的id |
status | string | 必须 | 消息状态 |
四、ChatsOfUser 表
存储参与会话的成员数据。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
id | number | 必须 | 存储在远程数据库的id |
cgid | string | 必须 | 会话的gid属性 |
user | number | 必须 | 用户id,对应用户表的id |
order | number | 可选 | 会话显示顺序 |
star | bool | 可选 | 用户是否收藏会话 |
hide | bool | 可选 | 用户是否隐藏会话 |
mute | bool | 可选 | 用户是否开启免打扰 |
quit | datetime | 可选 | 用户退出会话时服务器的时间戳 |
join | datetime | 必须 | 用户加入会话时服务器的时间戳 |
五、喧喧XXB的 数据库信息
-- DROP TABLE IF EXISTS `xxb_action`; CREATE TABLE IF NOT EXISTS `xxb_action` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `customer` mediumint(8) unsigned DEFAULT NULL, `contact` mediumint(8) unsigned DEFAULT NULL, `objectType` varchar(30) NOT NULL DEFAULT '', `objectID` mediumint(8) unsigned NOT NULL DEFAULT '0', `actor` varchar(30) NOT NULL DEFAULT '', `action` varchar(30) NOT NULL DEFAULT '', `date` datetime NOT NULL, `comment` text NOT NULL, `extra` varchar(255) NOT NULL, `read` enum('0', '1') NOT NULL DEFAULT '0', `reader` text NOT NULL, PRIMARY KEY (`id`), KEY `customer` (`customer`), KEY `contact` (`contact`), KEY `objectType` (`objectType`), KEY `objectID` (`objectID`), KEY `date` (`date`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_block`; CREATE TABLE IF NOT EXISTS `xxb_block` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `account` char(30) NOT NULL, `title` varchar(100) NOT NULL, `source` varchar(20) NOT NULL, `block` varchar(20) NOT NULL, `params` text NOT NULL, `order` tinyint(3) unsigned NOT NULL DEFAULT '0', `grid` tinyint(3) unsigned NOT NULL DEFAULT '0', `height` smallint(5) unsigned NOT NULL DEFAULT '0', `hidden` tinyint(1) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `accountAppOrder` (`account`, `order`), KEY `account` (`account`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_category`; CREATE TABLE IF NOT EXISTS `xxb_category` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` char(30) NOT NULL DEFAULT '', `alias` varchar(100) NOT NULL, `desc` text NOT NULL, `keywords` varchar(150) NOT NULL, `root` mediumint(8) unsigned NOT NULL DEFAULT '0', `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', `path` char(255) NOT NULL DEFAULT '', `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', `order` smallint(5) unsigned NOT NULL DEFAULT '0', `type` char(30) NOT NULL, `readonly` enum('0','1') NOT NULL DEFAULT '0', `moderators` varchar(255) NOT NULL, `threads` smallint(5) NOT NULL, `posts` smallint(5) NOT NULL, `postedBy` varchar(30) NOT NULL, `postedDate` datetime NOT NULL, `postID` mediumint(8) unsigned NOT NULL, `replyID` mediumint(8) unsigned NOT NULL, `users` text NOT NULL, `rights` varchar(255) NOT NULL, `refund` enum('0','1') NOT NULL DEFAULT '0', `major` enum('0','1','2','3','4','5','6','7','8') NOT NULL DEFAULT '0', `deleted` enum('0', '1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `type` (`type`), KEY `order` (`order`), KEY `parent` (`parent`), KEY `path` (`path`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_config`; CREATE TABLE IF NOT EXISTS `xxb_config` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `owner` char(30) NOT NULL DEFAULT '', `module` varchar(30) NOT NULL, `section` char(30) NOT NULL DEFAULT '', `key` char(30) DEFAULT NULL, `value` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique` (`owner`,`module`,`section`,`key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_entry`; CREATE TABLE IF NOT EXISTS `xxb_entry` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `abbr` char(6) NOT NULL, `code` varchar(20) NOT NULL, `buildin` tinyint(1) unsigned NOT NULL DEFAULT '0', `version` varchar(20) NOT NULL, `platform` varchar(255) NOT NULL DEFAULT 'ranzhi', `package` int(11) NOT NULL DEFAULT 0, `integration` tinyint(1) unsigned NOT NULL DEFAULT '0', `open` varchar(20) NOT NULL, `key` char(32) NOT NULL, `ip` varchar(100) NOT NULL, `logo` varchar(100) NOT NULL, `login` varchar(255) NOT NULL, `logout` varchar(255) NOT NULL, `block` varchar(255) NOT NULL, `control` varchar(10) NOT NULL DEFAULT 'simple', `size` varchar(50) NOT NULL DEFAULT 'max', `position` varchar(10) NOT NULL DEFAULT 'default', `visible` tinyint(1) unsigned NOT NULL DEFAULT '0', `order` tinyint(5) unsigned NOT NULL DEFAULT '0', `zentao` enum('0', '1') NOT NULL DEFAULT '0', `category` mediumint(8) unsigned NOT NULL DEFAULT '0', `status` enum('online','offline') NOT NULL DEFAULT 'online', PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_file`; CREATE TABLE IF NOT EXISTS `xxb_file` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `pathname` char(50) NOT NULL, `title` char(90) NOT NULL, `extension` char(30) NOT NULL, `size` mediumint(8) unsigned NOT NULL DEFAULT '0', `objectType` char(30) NOT NULL, `objectID` mediumint(8) unsigned NOT NULL, `createdBy` char(30) NOT NULL DEFAULT '', `createdDate` datetime NOT NULL, `editor` enum('1','0') NOT NULL DEFAULT '0', `primary` enum('1','0') DEFAULT '0', `public` enum('1','0') NOT NULL DEFAULT '1', `downloads` mediumint(8) unsigned NOT NULL DEFAULT '0', `extra` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `object` (`objectType`,`objectID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_history`; CREATE TABLE IF NOT EXISTS `xxb_history` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `action` mediumint(8) unsigned NOT NULL DEFAULT '0', `field` varchar(30) NOT NULL DEFAULT '', `old` text NOT NULL, `new` text NOT NULL, `diff` mediumtext NOT NULL, PRIMARY KEY (`id`), KEY `action` (`action`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_lang`; CREATE TABLE IF NOT EXISTS `xxb_lang` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `lang` varchar(30) NOT NULL, `module` varchar(30) NOT NULL, `section` varchar(30) NOT NULL, `key` varchar(60) NOT NULL, `value` text NOT NULL, `system` enum('0','1') NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `lang` (`lang`,`module`,`section`,`key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_sso`; CREATE TABLE IF NOT EXISTS `xxb_sso` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `sid` char(32) NOT NULL, `entry` mediumint(8) unsigned NOT NULL, `token` char(32) NOT NULL, `time` datetime NOT NULL, PRIMARY KEY (`id`), KEY `sid` (`sid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_user`; CREATE TABLE IF NOT EXISTS `xxb_user` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `dept` mediumint(8) unsigned NOT NULL, `account` char(30) NOT NULL DEFAULT '', `password` char(32) NOT NULL DEFAULT '', `realname` char(30) NOT NULL DEFAULT '', `role` char(30) NOT NULL, `deviceToken` char(120) NOT NULL, `deviceType` char(20) NOT NULL, `nickname` char(60) NOT NULL DEFAULT '', `admin` enum('no','common','super') NOT NULL DEFAULT 'no', `avatar` varchar(255) NOT NULL DEFAULT '', `birthday` date NOT NULL, `gender` enum('f','m','u') NOT NULL DEFAULT 'u', `email` char(90) NOT NULL DEFAULT '', `skype` char(90) NOT NULL, `qq` char(20) NOT NULL DEFAULT '', `weixin` char(50) NOT NULL, `yahoo` char(90) NOT NULL DEFAULT '', `gtalk` char(90) NOT NULL DEFAULT '', `wangwang` char(90) NOT NULL DEFAULT '', `site` varchar(100) NOT NULL, `mobile` char(11) NOT NULL DEFAULT '', `phone` char(20) NOT NULL DEFAULT '', `address` char(120) NOT NULL DEFAULT '', `zipcode` char(10) NOT NULL DEFAULT '', `visits` mediumint(8) unsigned NOT NULL DEFAULT '0', `ip` char(50) NOT NULL DEFAULT '', `last` datetime NOT NULL, `ping` datetime NOT NULL, `fails` tinyint(3) unsigned NOT NULL DEFAULT '0', `join` datetime NOT NULL, `locked` datetime NOT NULL, `deleted` enum('0','1') NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `account` (`account`), KEY `admin` (`admin`), KEY `accountPassword` (`account`,`password`), KEY `dept` (`dept`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_group`; CREATE TABLE IF NOT EXISTS `xxb_group` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `name` char(30) NOT NULL, `desc` char(255) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_usergroup`; CREATE TABLE IF NOT EXISTS `xxb_usergroup` ( `account` char(30) NOT NULL DEFAULT '', `group` mediumint(8) unsigned NOT NULL DEFAULT '0', UNIQUE KEY `account` (`account`,`group`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_grouppriv`; CREATE TABLE IF NOT EXISTS `xxb_grouppriv` ( `group` mediumint(8) unsigned NOT NULL default '0', `module` char(30) NOT NULL default '', `method` char(30) NOT NULL default '', UNIQUE KEY `group` (`group`,`module`,`method`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `xxb_cron`; CREATE TABLE IF NOT EXISTS `xxb_cron` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `m` varchar(20) NOT NULL, `h` varchar(20) NOT NULL, `dom` varchar(20) NOT NULL, `mon` varchar(20) NOT NULL, `dow` varchar(20) NOT NULL, `command` text NOT NULL, `remark` varchar(255) NOT NULL, `type` varchar(20) NOT NULL, `buildin` tinyint(1) NOT NULL DEFAULT '0', `status` varchar(20) NOT NULL, `lastTime` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `xxb_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type`, `buildin`, `status`, `lastTime`) VALUES ('*', '*', '*', '*', '*', '', '监控定时任务', 'xuanxuan', 1, 'normal', '0000-00-00 00:00:00'), ('*/1', '*', '*', '*', '*', 'moduleName=push&methodName=pushMessage', '异步推送', 'xuanxuan', 1, 'normal', '0000-00-00 00:00:00');
发表评论
联系我们
公众号
微信公众号