-
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
- 57630
- 最后编辑:先知 于 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');
发表评论
联系我们
社群交流
微信公众号
QQ群
