跳到主要内容

lt_sword

简介

对接雷霆平台的敏感词检测功能,提供对应的检测接口

重要说明

本pkg支持雷霆平台的旧接口;雷霆平台接口升级以后,请使用pkg.leiting.sword!!!

平台的文档:知识库:内容安全平台敏感词检测接口文档

一般的使用方法:

  1. 先通过lt_sword.new_xxx系列函数构造对应的请求,获得实例req(例如lt_sword.new_text()获得LtRequestText实例)
  2. 补全req中要求必填的字段
  3. 通过req.sign_by_key()签名
  4. 通过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

敏感词相关的请求

成员变量

变量名类型初始值须初始化描述
gamestringnil可选游戏标识 Y String
sidstringnil可选游戏sid长度不能超过50 Y String
signstringnil可选签名Y String

成员方法

函数原型函数作用
void sign_by_key(string key)签名

LtRequestNickname

继承自 LtRequest

敏感词 - 昵称检测请求

成员变量

变量名类型初始值须初始化描述
zonestringnil可选游戏区组 Y String
osmixed4可选系统 1-android 2-ios 3-web 4-pc Y int
nickNamestringnil可选角色昵称 Y String
imeistringnil可选客户端手机imei N String
usernamestringnil可选雷霆用户名 N String
gidstringnil可选玩家角色ID Y String
serverstringnil可选发言频道(世界、帮会)N String
macstringnil可选mac地址 N String
recvGidstringnil可选发言接收方gid 聊天场景N String
contentstringnil可选文本内容 长度小于2000 Y String
ipstringnil可选玩家客户端IP地址 Y String
isYdint2可选是否过易盾 Y int
1只平台处理 2 平台处理后过易盾 单机游戏填1,网络游戏填2
isReturnWordint0可选是否将匹配到的敏感词返回 N int
0 不返回 1返回 默认为0不返回。
channelIdstringnil可选渠道ID Y String
例如110003:九游;130009:4399
gameLevelstringnil可选游戏等级 Y String
ydSecretIdstringnil可选易盾独立产品ID N String
isReplaceint0可选是否将拦截敏感词替换 N int
1替换 0不替换(默认值)

成员方法

函数原型函数作用
string get_url(string host)获取请求地址

LtRequestText

继承自 LtRequest

敏感词 - 全文本检测请求

成员变量

变量名类型初始值须初始化描述
imeistringnil可选客户端手机imei N String
zonestringnil可选游戏区组 Y String
osmixed4可选系统 1-android 2-ios 3-web 4-pc Y int
usernamestringnil可选雷霆用户名 N String
nickNamestringnil可选角色昵称 Y String
gidstringnil可选玩家角色ID Y String
serverstringnil可选发言频道(世界、帮会)Y String
macstringnil可选mac地址N String
recvGidstringnil可选发言接收方gid 聊天场景N String
contentstringnil可选文本内容 长度小于2000 Y String
用户发表内容,建议对内容中JSON、表情符、HTML标签、UBB标签等做过滤,只传递纯文本,以减少误判概率
ipstringnil可选玩家客户端IP地址 Y String
isYdint2可选是否过易盾 Y int
1只平台处理 2 平台处理后过易盾 单机游戏填1,网络游戏填2
isReturnWordint0可选是否将匹配到的敏感词返回N int
0 不返回 1返回 默认为0不返回
channelIdstringnil可选渠道ID Y String
gameLevelstringnil可选游戏等级 Y String
ydSecretIdstringnil可选易盾独立产品ID,(问道,一念逍遥,奥比岛必填) 联系 易健 获取。 N String
ydBusinessIdstringnil可选自定义易盾业务ID,一念逍遥用 N String
isReplaceint0可选是否将拦截敏感词替换 N int
1替换 0不替换(默认值)

成员方法

函数原型函数作用
string get_url(string host)获取请求地址

LtRequestPatrol

继承自 LtRequest

敏感词 - 检测加巡查请求

成员变量

变量名类型初始值须初始化描述
zonestringnil可选游戏区组 Y String
nickNamestringnil可选角色昵称 Y String
contentstringnil可选文本内容 长度小于2000 Y String
imeistringnil可选客户端手机imei N String
osmixed3可选系统 1-android 2-ios 3-web 4-pc Y int
usernamestringnil可选雷霆用户名 N String
ipstringnil可选玩家客户端IP地址 N String
isYdint2可选是否过易盾 Y int
1只平台处理 2 平台处理后过易盾 单机游戏填1,网络游戏填2
isReturnWordint0可选是否将匹配到的敏感词返回 N int
0 不返回 1返回 默认为0不返回
channelIdstringnil可选渠道ID。Y String
例如110003:九游;130009:4399
gameLevelstringnil可选游戏等级 (问道用) N String
ydSecretIdstringnil可选易盾独立产品ID N String
isReplaceint0可选是否将拦截敏感词替换 N int
1替换 0不替换(默认值)
ridstringnil可选角色ID Y String
channelstringnil可选发言频道 Y String
如 世界、私聊等
isFakeForbidboolfalse可选是否为伪禁言 true false Y Boolean
timestringnil可选发言时间 yyyy-MM-dd HH:mm:ss Y String
recvGidstringnil可选发言接收方gid聊天场景(1对1私聊场景必填) N String
chargeint0可选玩家充值金额 Y int
isVoiceboolfalse可选是否为实时语音 N Boolean
worldChannelstringnil可选世界频道(奥比所需字段) N String
gameLinestringnil可选游戏线路(奥比所需字段) N String
passPatrolbooltrue可选通过后是否上报巡服,默认为true N Boolean
notPassPatrolboolfalse可选不通过是否上报巡服,默认为false N Boolean
extendstringnil可选拓展字段,透传给巡服 N String

成员方法

函数原型函数作用
string get_url(string host)获取请求地址

LtRequestWhitelist

继承自 LtRequestBase

敏感词 - 获取白名单列表请求

成员变量

变量名类型初始值须初始化描述
gamestringnil可选游戏标识 Y String
timeVersionstringnil可选当前时间毫秒时间戳 Y String
signstringnil可选签名 MD5(game+timeVersion+%+KEY) Y String

成员方法

函数原型函数作用
string get_url(string host)获取请求地址
void sign_by_key(string key)签名

LtRequestStandAlonePatrol

继承自 LtRequestBase

敏感词 - 独立巡服请求

成员变量

变量名类型初始值须初始化描述
gameCodestringnil可选游戏标识 Y string
zoneIdstringnil可选区组id Y string
ridstringnil可选角色id Y string
accountstringnil可选雷霆账号 Y string
channelstringnil可选发言频道(如世界、私聊等) Y string
namestringnil可选角色名 Y string
contentstringnil可选发言内容 Y string
isSensitiveboolfalse可选是否包含敏感词 Y bool
isFakeForbidboolfalse可选是否为伪禁言 Y bool
timestringnil可选发言时间(yyyy-MM-dd HH:mm:ss) Y string
chargeint0可选玩家充值金额 Y int
signstringnil可选签名Y String

成员方法

函数原型函数作用
string get_url(string host)获取请求地址
void sign_by_key(string key)签名
array request(string host)执行请求

LtSwordResult

敏感词请求的处理结果

成员变量

变量名类型初始值须初始化描述
codeint0可选1 - 表示通过
2 - 表示替换
3 - 表示拦截(拦截是不让发出去)
textstringnil可选替换后的文本 当code=2时有值。或入参isReplace=1且code!=1时有值
ydint0可选当code=2 3 时有值
1表示平台拦截 2表示易盾拦截
wordsmixednil可选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);
}