聊天推送接口【必接】
大约 2 分钟
聊天推送接口【必接】
1.文档记录
| 编码格式 | 密级 |
|---|---|
| utf-8 | 公开 |
| 日期 | 版本 | 修改内容 | 操作人 |
|---|---|---|---|
| 2021-09-01 | 1.0.0 | 文档整理 | 朱明慧 |
2. 要求说明
聊天内容数据推送接口,聊天推送时采用单条推送,不要批量推送。
3. 请求URL
http://gameapi.51.com/chatlog/monitor
4. 请求方式
POST
5. 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| site | varchar(10) | Y | 平台标识,固定为:51game |
| game | varchar(6) | Y | 游戏简称,由51提供。一般为游戏名称首字母,如传奇霸业为:cqby |
| info | varchar(250) | Y | 需要urlencode,见后续info字段描述表 |
| time | datetime | Y | 时间戳 |
| flag | varchar(32) | Y | 加密验证串 |
| sec_chat_account | varchar(32) | N | 私聊对象的用户名,不参与加密,非私聊传空字符串 |
| sec_chat_role_id | varchar(32) | N | 私聊对象的角色id,不参与加密,非私聊传空字符串 |
| sec_chat_nickname | varchar(32) | N | 私聊对象的角色名或昵称,不参与加密,非私聊传空字符串 |
| sec_chat_role_level | int(10) | N | 私聊对象的角色等级,不参与加密,非私聊传0 |
聊天推送时采用单条推送,不要批量推送
flag计算方式: 各个参数键名按照字典升序排列后连接参数值,再末端加上51平台提供的flag_key做md5 针对以上参数,flag计算方式如下:
flag = strtoupper(md5("game${game}" . "info${info}" . "site${site}" . "time${time}" . $flag_key));
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| server_id | varchar(36) | Y | 服务器ID,由51平台和厂商商量决定 |
| role_id | varchar(16) | Y | 玩家角色id |
| role_name | varchar(60) | Y | 玩家角色名 |
| account_name | varchar(30) | Y | 51用户名,同登录接口user |
| level | int(8) | Y | 玩家等级 |
| gold | int(8) | Y | 充值元宝数量(可填0) |
| ip_addr | varchar(15) | Y | 玩家IP地址 |
| chat_time | int(10) | Y | 聊天时间,数据为时间戳 |
| channel | varchar(60) | Y | 聊天频道 |
| chat_content | varchar(255) | Y | 聊天内容 |
上述字段构成post过来的info参数的内容,info参数定义为 info=sever_id SEP role_id SEP …. SEP chat_content\n 其中SEP表示分隔符(建议使用竖线| ),每条info记录后面需要有换行符,且聊天内容里面如果有分割符SEP,需要将其替换成其他的字符(建议替换成*),info需要urlencode PHP代码示例
function doPost($url, $params) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$data = curl_exec($ch);
return $data;
}
$url = "http://gameapi.51.com/chatlog/monitor";
$site = "51game";
$game = "cqby";
$time = time();
//其中'|'为分隔符
$info = "S1|1000036|Kevin剑|33303372|70|5000|222.242.107.118|1397274116|行会|是呀,铁我拿了";
$key = 'aiyou123456';
$flag = strtoupper(md5("game$game" . "info$info" . "site$site" . "time$time" . $key));
$param = "game=$game&site=$site&time=$time&info=$info&flag=$flag";
$res = doPost($url, $param);
print $res;
7. 返回数据
| 返回 | 说明 |
|---|---|
| success | 接收成功 |
| fail | 插入失败 |
| 1 | 参数不全 |
| 2 | 游戏未配置 |
| 3 | flag错误 |
| 4 | info字段拼接错误 |
| 5 | 区服未添加 |
| 6 | 单字节聊天内容不入库 |
