lt_sword
简介
对接雷霆平台的敏感词检测功能,提供对应的检测接口
重要说明
本pkg支持雷霆平台的旧接口;雷霆平台接口升级以后,请使用pkg.leiting.sword
!!!
平台的文档:知识库:内容安全平台敏感词检测接口文档
一般的使用方法:
- 先通过lt_sword.new_xxx系列函数构造对应的请求,获得实例req(例如lt_sword.new_text()获得LtRequestText实例)
- 补全req中要求必填的字段
- 通过req.sign_by_key()签名
- 通过req.request()向向目标服务器发起请求获得结果
组件接口
lt_sword.gs
函数原型 | 函数作用 |
---|---|
LtRequestNickname new_nickname(map para = nil) | 新建一个检测昵称的请求 |
LtRequestText new_text(map para = nil) | 新建一个检测全文本的请求 |
LtRequestPatrol new_patrol(map para = nil) | 新建一个检测加巡服上报的请求 |
LtRequestWhitelist new_whitelist(map para = nil) | 新建一个获取白名单 的请求 |
LtSwordResult new_sword_result(map para) | 根据一个请求的返回结果(map类型)构造一个LtSwordResult实例 |
LtRequestStandAlonePatrol new_stand_alone_patrol(map para = nil) | 新建一个独立巡服的请求 |
类
LtRequestBase
雷霆平台请求基础类
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|
成员方法
函数原型 | 函数作用 |
---|---|
string get_url(string host) | 获取请求地址 |
array request(string host) | 执行请求 |
LtRequest
继承自 LtRequestBase
敏感词相关的请求
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|---|---|---|---|
game | string | nil | 可选 | 游戏标识 Y String |
sid | string | nil | 可选 | 游戏sid长度不能超过50 Y String |
sign | string | nil | 可选 | 签名Y String |
成员方法
函数原型 | 函数作用 |
---|---|
void sign_by_key(string key) | 签名 |
LtRequestNickname
继承自 LtRequest
敏感词 - 昵称检测请求
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|---|---|---|---|
zone | string | nil | 可选 | 游戏区组 Y String |
os | mixed | 4 | 可选 | 系统 1-android 2-ios 3-web 4-pc Y int |
nickName | string | nil | 可选 | 角色昵称 Y String |
imei | string | nil | 可选 | 客户端手机imei N String |
username | string | nil | 可选 | 雷霆用户名 N String |
gid | string | nil | 可选 | 玩家角色ID Y String |
server | string | nil | 可选 | 发言频道(世界、帮会)N String |
mac | string | nil | 可选 | mac地址 N String |
recvGid | string | nil | 可选 | 发言接收方gid 聊天场景N String |
content | string | nil | 可选 | 文本内容 长度小于2000 Y String |
ip | string | nil | 可选 | 玩家客户端IP地址 Y String |
isYd | int | 2 | 可选 | 是否过易盾 Y int 1只平台处理 2 平台处理后过易盾 单机游戏填1,网络游戏填2 |
isReturnWord | int | 0 | 可选 | 是否将匹配到的敏感词返回 N int 0 不返回 1返回 默认为0不返回。 |
channelId | string | nil | 可选 | 渠道ID Y String 例如110003:九游;130009:4399 |
gameLevel | string | nil | 可选 | 游戏等级 Y String |
ydSecretId | string | nil | 可选 | 易盾独立产品ID N String |
isReplace | int | 0 | 可选 | 是否将拦截敏感词替换 N int 1替换 0不替换(默认值) |
成员方法
函数原型 | 函数作用 |
---|---|
string get_url(string host) | 获取请求地址 |
LtRequestText
继承自 LtRequest
敏感词 - 全文本检测请求
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|---|---|---|---|
imei | string | nil | 可选 | 客户端手机imei N String |
zone | string | nil | 可选 | 游戏区组 Y String |
os | mixed | 4 | 可选 | 系统 1-android 2-ios 3-web 4-pc Y int |
username | string | nil | 可选 | 雷霆用户名 N String |
nickName | string | nil | 可选 | 角色昵称 Y String |
gid | string | nil | 可选 | 玩家角色ID Y String |
server | string | nil | 可选 | 发言频道(世界、帮会)Y String |
mac | string | nil | 可选 | mac地址N String |
recvGid | string | nil | 可选 | 发言接收方gid 聊天场景N String |
content | string | nil | 可选 | 文本内容 长度小于2000 Y String 用户发表内容,建议对内容中JSON、表情符、HTML标签、UBB标签等做过滤,只传递纯文本,以减少误判概率 |
ip | string | nil | 可选 | 玩家客户端IP地址 Y String |
isYd | int | 2 | 可选 | 是否过易盾 Y int 1只平台处理 2 平台处理后过易盾 单机游戏填1,网络游戏填2 |
isReturnWord | int | 0 | 可选 | 是否将匹配到的敏感词返回N int 0 不返回 1返回 默认为0不返回 |
channelId | string | nil | 可选 | 渠道ID Y String |
gameLevel | string | nil | 可选 | 游戏等级 Y String |
ydSecretId | string | nil | 可选 | 易盾独立产品ID,(问道,一念逍遥,奥比岛必填) 联系 易健 获取。 N String |
ydBusinessId | string | nil | 可选 | 自定义易盾业务ID,一念逍遥用 N String |
isReplace | int | 0 | 可选 | 是否将拦截敏感词替换 N int 1替换 0不替换(默认值) |
成员方法
函数原型 | 函数作用 |
---|---|
string get_url(string host) | 获取请求地址 |
LtRequestPatrol
继承自 LtRequest
敏感词 - 检测加巡查请求
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|---|---|---|---|
zone | string | nil | 可选 | 游戏区组 Y String |
nickName | string | nil | 可选 | 角色昵称 Y String |
content | string | nil | 可选 | 文本内容 长度小于2000 Y String |
imei | string | nil | 可选 | 客户端手机imei N String |
os | mixed | 3 | 可选 | 系统 1-android 2-ios 3-web 4-pc Y int |
username | string | nil | 可选 | 雷霆用户名 N String |
ip | string | nil | 可选 | 玩家客户端IP地址 N String |
isYd | int | 2 | 可选 | 是否过易盾 Y int 1只平台处理 2 平台处理后过易盾 单机游戏填1,网络游戏填2 |
isReturnWord | int | 0 | 可选 | 是否将匹配到的敏感词返回 N int 0 不返回 1返回 默认为0不返回 |
channelId | string | nil | 可选 | 渠道ID。Y String 例如110003:九游;130009:4399 |
gameLevel | string | nil | 可选 | 游戏等级 (问道用) N String |
ydSecretId | string | nil | 可选 | 易盾独立产品ID N String |
isReplace | int | 0 | 可选 | 是否将拦截敏感词替换 N int 1替换 0不替换(默认值) |
rid | string | nil | 可选 | 角色ID Y String |
channel | string | nil | 可选 | 发言频道 Y String 如 世界、私聊等 |
isFakeForbid | bool | false | 可选 | 是否为伪禁言 true false Y Boolean |
time | string | nil | 可选 | 发言时间 yyyy-MM-dd HH:mm:ss Y String |
recvGid | string | nil | 可选 | 发言接收方gid聊天场景(1对1私聊场景必填) N String |
charge | int | 0 | 可选 | 玩家充值金额 Y int |
isVoice | bool | false | 可选 | 是否为实时语音 N Boolean |
worldChannel | string | nil | 可选 | 世界频道(奥比所需字段) N String |
gameLine | string | nil | 可选 | 游戏线路(奥比所需字段) N String |
passPatrol | bool | true | 可选 | 通过后是否上报巡服,默认为true N Boolean |
notPassPatrol | bool | false | 可选 | 不通过是否上报巡服,默认为false N Boolean |
extend | string | nil | 可选 | 拓展字段,透传给巡服 N String |
成员方法
函数原型 | 函数作用 |
---|---|
string get_url(string host) | 获取请求地址 |
LtRequestWhitelist
继承自 LtRequestBase
敏感词 - 获取白名单列表请求
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|---|---|---|---|
game | string | nil | 可选 | 游戏标识 Y String |
timeVersion | string | nil | 可选 | 当前时间毫秒时间戳 Y String |
sign | string | nil | 可选 | 签名 MD5(game+timeVersion+%+KEY) Y String |
成员方法
函数原型 | 函数作用 |
---|---|
string get_url(string host) | 获取请求地址 |
void sign_by_key(string key) | 签名 |
LtRequestStandAlonePatrol
继承自 LtRequestBase
敏感词 - 独立巡服请求
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|---|---|---|---|
gameCode | string | nil | 可选 | 游戏标识 Y string |
zoneId | string | nil | 可选 | 区组id Y string |
rid | string | nil | 可选 | 角色id Y string |
account | string | nil | 可选 | 雷霆账号 Y string |
channel | string | nil | 可选 | 发言频道(如世界、私聊等) Y string |
name | string | nil | 可选 | 角色名 Y string |
content | string | nil | 可选 | 发言内容 Y string |
isSensitive | bool | false | 可选 | 是否包含敏感词 Y bool |
isFakeForbid | bool | false | 可选 | 是否为伪禁言 Y bool |
time | string | nil | 可选 | 发言时间(yyyy-MM-dd HH:mm:ss) Y string |
charge | int | 0 | 可选 | 玩家充值金额 Y int |
sign | string | nil | 可选 | 签名Y String |
成员方法
函数原型 | 函数作用 |
---|---|
string get_url(string host) | 获取请求地址 |
void sign_by_key(string key) | 签名 |
array request(string host) | 执行请求 |
LtSwordResult
敏感词请求的处理结果
成员变量
变量名 | 类型 | 初始值 | 须初始化 | 描述 |
---|---|---|---|---|
code | int | 0 | 可选 | 1 - 表示通过 2 - 表示替换 3 - 表示拦截(拦截是不让发出去) |
text | string | nil | 可选 | 替换后的文本 当code=2时有值。或入参isReplace=1且code!=1时有值 |
yd | int | 0 | 可选 | 当code=2 3 时有值 1表示平台拦截 2表示易盾拦截 |
words | mixed | nil | 可选 | isReturnWord=1时 code!=1 时才有值 code=3时 只会返回第一个拦截的敏感词 yd=1是平台的敏感词 =2是易盾的敏感词 |
成员方法
函数原型 | 函数作用 |
---|---|
bool is_passable() | 处理结果是不是文本通过检查 |
bool is_replaceable() | 处理结果是不是文本被替换 |
bool is_interceptable() | 处理结果是不是文本被拦截 |
bool is_intercepted_by_lt() | 处理结果是不是文本被雷霆平台拦截 |
bool is_intercepted_by_yd() | 处理结果是不是文本被易盾拦截 |
样例
const string GAME = "lt-XX2";
const string SID = "unit_test_id";
const string KEY = "sf_AxB_z";
const string HOST = "https://testsafebeta.leiting.com/";
test();
public void test()
{
test0();
test1();
test2();
test3();
}
public void test0()
{
map para = {
"game" : GAME,
"sid" : SID,
"zone" : "test_server_id",
"os" : "1",
"nickName" : "张三",
"gid" : "test_robot",
"server" : "private",
"content" : "小老头,你不怕死啊?",
"ip" : "0.0.0.0",
"isYd" : 1,
"channelId" : "0",
"gameLevel" : "0",
"isReplace" : 1
};
LtRequestText req = lt_sword.new_text(para);
req.sign_by_key(KEY);
let bool success, mixed req_result = req.request(HOST);
if (! success)
return;
LtSwordResult result = lt_sword.new_sword_result(req_result);
printf("detect text: %M %O\n", success, result);
}
public void test1()
{
LtRequestWhitelist req = lt_sword.new_whitelist();
req.game = GAME;
req.timeVersion = time.time_ms().to_string();
req.sign_by_key(KEY);
let bool success, mixed result = req.request(HOST);
printf("get whitelist: %M %O\n", success, result);
}
public void test2()
{
map para = {
"game" : GAME,
"sid" : SID,
"zone" : "test_server_id",
"os" : 1,
"nickName" : "张三",
"gid" : "test_robot",
"server" : "private",
"content" : "小老头,你不怕死啊?",
"ip" : "0.0.0.0",
"isYd" : 1,
"channelId" : "0",
"gameLevel" : "0",
};
LtRequestNickname req = lt_sword.new_nickname(para);
req.sign_by_key(KEY);
let bool success, mixed req_result = req.request(HOST);
if (! success)
return;
LtSwordResult result = lt_sword.new_sword_result(req_result);
printf("detect nickname: %M %O\n", success, result);
}
public void test3()
{
map para = {
"game" : GAME,
"sid" : SID,
"os": 1,
"channelId": "110003",
"channel": "world",
"zone": "内测",
"rid": "10571",
"nickName": "无名1",
"content": "我是陈独秀hello bruce",
"isYd": 2,
"charge" : 0,
"isReturnWord" : 1,
"isReplace" : 1
};
LtRequestPatrol req = lt_sword.new_patrol(para);
req.time = time.ctime(time.time(), TimeType.COMPACT_STYLE_STD);
req.sign_by_key(KEY);
let bool success, mixed req_result = req.request(HOST);
if (! success)
return;
LtSwordResult result = lt_sword.new_sword_result(req_result);
printf("detect patrol: %M %O\n", success, result);
}