聊天封禁CP对接文档
<p>[TOC]</p>
<h3>1、禁言API说明</h3>
<pre><code>需要您提供一个禁言的API接口,以便系统在识别到违规信息之后,调取该API封禁用户。
比如A用户发送拉人广告,系统在判断后,将会调取该API,并发送回用户的相关信息,以及禁言时长(分钟),以此对该用户做出处罚。</code></pre>
<ul>
<li><strong>禁言时长覆盖的问题</strong>:
针对大R、大等级用户,系统引入了阶梯禁言机制防止误封,比如1、5、15、60、9999、...分钟。但是随着用户的恶意度增加,可能会在上一次禁言条件未失效的情况下,发送新的禁言时间,此时,您应该是覆盖之前的禁言时长,而不是累加或拒绝。</li>
</ul>
<h5>- 我们会按您的API发送如下请求:</h5>
<h5>请求方式</h5>
<ul>
<li>POST application/x-www-form-urlencoded</li>
</ul>
<h5>请求参数</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必含</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">game</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>乐玩平台游戏标识,如xxx-weixn</td>
</tr>
<tr>
<td style="text-align: left;">role_id </td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>角色ID</td>
</tr>
<tr>
<td style="text-align: left;">server_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>区服ID</td>
</tr>
<tr>
<td style="text-align: left;">user_name</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>角色昵称</td>
</tr>
<tr>
<td style="text-align: left;">uid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>乐玩平台用户唯一标识</td>
</tr>
<tr>
<td style="text-align: left;">type</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>操作类型,1:禁言,2:封号(按角色维度封禁,同时让角色下线),3:解除禁言,4:解除封号</td>
</tr>
<tr>
<td style="text-align: left;">limit_time</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">integer</td>
<td>封禁时间,单位:min,0表示永久禁言</td>
</tr>
<tr>
<td style="text-align: left;">timestamp</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>发起请求时间戳,单位:s</td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>签名,签名方式见下说明</td>
</tr>
</tbody>
</table>
<h5>响应结果说明</h5>
<pre><code>接收到封禁请求后,您需要响应以下json,code为1表示成功,非1值表示失败,msg为自定义响应说明</code></pre>
<ul>
<li><strong>响应结果示例</strong></li>
</ul>
<pre><code>// 成功
{&quot;code&quot;:1,&quot;msg&quot;:&quot;success&quot;}
// 异常
{&quot;code&quot;:-1,&quot;msg&quot;:&quot;check sign fail&quot;}
</code></pre>
<h3>2、H5聊天数据上报</h3>
<h5>2.1 请求地址</h5>
<p>联运地址:<a href="http://graph.llewan.com/v1/MsgCheck/h5ContentSave">http://graph.llewan.com/v1/MsgCheck/h5ContentSave</a></p>
<p>独代地址:<a href="http://graph.llewan.com/v1/MsgCheck/ddH5ContentSave">http://graph.llewan.com/v1/MsgCheck/ddH5ContentSave</a></p>
<h5>2.2 请求方式</h5>
<ul>
<li>POST application/x-www-form-urlencoded</li>
</ul>
<h5>2.3 请求参数</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必含</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">game</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>乐玩平台子游戏标识(马甲包),如xxx-weixn</td>
</tr>
<tr>
<td style="text-align: left;">uid </td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>乐玩平台账号id</td>
</tr>
<tr>
<td style="text-align: left;">roleId</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>角色ID</td>
</tr>
<tr>
<td style="text-align: left;">roleLevel</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>角色等级</td>
</tr>
<tr>
<td style="text-align: left;">content</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>聊天内容</td>
</tr>
<tr>
<td style="text-align: left;">channel</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>参考值,1:世界, 2:国家, 3:团队, 4:公会, 5:队伍, 6:附近, 7:战场, 8:私聊</td>
</tr>
<tr>
<td style="text-align: left;">timestamp</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>发起请求时间戳,单位:s</td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>签名,签名方式见下说明</td>
</tr>
</tbody>
</table>
<h5>2.4 响应结果说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必含</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">code</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">integer</td>
<td>状态码:1成功,-1异常</td>
</tr>
<tr>
<td style="text-align: left;">msg </td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>响应结果说明</td>
</tr>
<tr>
<td style="text-align: left;">d</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">object</td>
<td>响应结果数据</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>响应结果示例</strong></li>
</ul>
<pre><code>// 成功
{&quot;code&quot;:1,&quot;msg&quot;:&quot;success&quot;,&quot;d&quot;:[]}
// 异常
{&quot;code&quot;:-1,&quot;msg&quot;:&quot;check sign fail&quot;,&quot;d&quot;:[]}
</code></pre>
<h5>签名方式说明</h5>
<ul>
<li><strong>参与签名字段说明</strong>
以上请求参数除sign外都需要参与签名</li>
<li><strong>签名规则</strong>
1、签名串规则:所有参与签名的参数,按参数名(key)字典序升序排序,以key=value格式,并用【&】连接组成签名串,最后连接服务端签名秘钥
2、对签名串进行MD5加密得到签名(32位小写字符串),PHP示例如下:</li>
</ul>
<pre><code>&lt;?php
function getSign($params, $secret)
{
//剔除sign字段
if (isset($params[&#039;sign&#039;])) unset($params[&#039;sign&#039;]);
//对数组按key升序排序
ksort($params);
//拼接签名串
$formatStr = &#039;&#039;;
foreach ($params as $key =&gt; $v) {
$formatStr .= $key . &#039;=&#039; . $v . &#039;&amp;&#039;;
}
return md5(substr($formatStr, 0, -1) . $secret);
}
$secret = &#039;abc&#039;; //服务端签名秘钥
$params = [
&#039;game&#039; =&gt; &#039;aaa-weixin&#039;,
&#039;role_id&#039; =&gt; &#039;1520001&#039;,
&#039;server_id&#039; =&gt; &#039;10001&#039;,
&#039;user_name&#039; =&gt; &#039;昵称&#039;,
...
]; //请求参数
$sign = getSign($params, $secret); //签名
</code></pre>