> For the complete documentation index, see [llms.txt](https://docs.ggwp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ggwp.com/chinese-simplified/api-wen-dang-liao-tian/biao-zhun-tao-can/liao-tian-api-v2-jiu-ban.md).

# 聊天 API v2（旧版）

> **旧版**
>
> 本页介绍旧版 `v2` Chat API 端点。现有集成可以继续使用此版本，但新的集成应使用 `v3`.
>
> 查看当前版本： [Chat API v3](/chinese-simplified/api-wen-dang-liao-tian/biao-zhun-tao-can/liao-tian-api-v3.md)

\[ 基础 URL： `api.ggwp.com`]

`POST` /chat/v2/message

## **说明**

该 API 端点将处理输入消息、session id 和 user id，以及一组可配置的毒性过滤强度选项，并在 4 个层级返回信息：

* **消息详情** - 毒性内容是否存在及其严重程度的指示，以及去除毒性后的输入消息不同变体。
* **玩家详情** - 用于描述该用户在对话中的行为属性，直到那个时间点为止。这包括已检测到的先前事件类型列表、玩家情绪、信誉分数和当前状态。
* **对话摘要** - 解释该会话中所有先前活动的指标。这些包括会话持续时间、消息和参与者数量、对话情绪以及检测到的事件总数，以及类型和严重程度。
* **建议** - 关于因历史或最近一系列毒性行为而对该特定用户施加的处罚信息。这包括处罚本身、触发消息和时间，以及处罚持续时间。该 `recommended_message` 字段在处罚生效期间将返回空字符串。API 输出的这一部分将提供以下处罚：
  * 会话静音：用户将在会话/比赛的剩余时长内被静音。&#x20;
  * 静音：用户将在所有会话/比赛中被静音，持续特定时长。

## **标头**

*注意：如果配置设置已另行与 GGWP 共享，则无需这样做*

以下是可配置选项列表：

* **暴力**：标记那些鼓励、美化或威胁对个人或群体造成身体伤害或破坏的语言。这包括威胁、死亡威胁以及对暴力行为的讨论。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 低：仅过滤极端且露骨的暴力提及
    * 示例：“希望你得癌症”，“你活该去死”，“我要杀了你父母”，“他们应该被送进毒气室”
  * 中：除上述情况外，还会审查其他不适合青少年或儿童观看的暴力行为提及
    * 示例：“你被强奸了”，“你是恋童癖吗？”&#x20;
  * 高：除上述情况外，还会过滤掉轻微的暴力提及
    * 示例：“我们把他们私刑处死吧”，“那支队伍被屠杀了”，“谋杀派对”
* **色情内容**：标记包含露骨性评论、暗示或不当/冒犯性提及的语言。这包括裸露描述、性行为提及或带有性暗示的语言。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 低：过滤掉带有性暴力提及的极端评论
    * &#x20;示例：“我要强奸你”，“强奸犯”
  * 中：除上述情况外，还会审查对性行为的其他提及以及任何中等程度露骨的性语言
    * 示例：“给我看看你的鸡巴”，“你是我的性奴隶”，“舔我的屁股”，“喜欢来一口舒服的口交”
  * 高：除上述情况外，还会过滤掉被视为对儿童不适当的轻微性相关提及&#x20;
    * 示例：“胸部”，“鸡巴”，“色情”，“肛交”，“处女”
* **言语辱骂**：标记包含针对个人或群体的敌对、侮辱性或贬损性语言的消息。这包括人身攻击、侮辱和贬义言论。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 低：仅过滤高度冒犯和侮辱性的词语
    * 示例：“fuktard，滚出去”，“你简直像他妈的癌症一样恶心”&#x20;
  * 中：除上述情况外，还会审查其他形式的辱骂性语言或针对性侮辱&#x20;
    * 示例：“去你妈的”，“混蛋”，“蠢货”，“屁股猴子”
  * 高：除上述情况外，还会过滤掉轻度冒犯性词语，最适合年轻受众&#x20;
    * 示例：“你这个笨蛋”，“白痴”，“incel”，“脑残”&#x20;
* **身份仇恨**：标记基于宗教、族裔、国籍、种族、性别、性取向或其他身份因素而针对个人或群体使用歧视性语言的消息。这包括侮辱性称呼、仇恨言论或通常与特定身份群体以负面或贬损方式相关联的词语。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 低：仅过滤极端仇恨性侮辱词
    * 示例：“nigger”，“faggot”，“cunt”，“retard”，“chink”
  * 中：除上述情况外，还会审查通常与特定身份群体相关的其他仇恨偏见表达
    * 示例：“你真是个娘们儿”，“看看那些妓女”，“tranny”，“他就是白人垃圾”
  * 高：除上述情况外，还会过滤掉那些常与针对特定身份群体的更隐性偏见相关的身份词语
    * 示例：“那太 gay 了”，“不是同性恋”，“queer 氛围”，“全是纳粹”
* **脏话**：标记使用淫秽、粗俗或不当语言，或脏话的消息。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 中：过滤更淫秽的脏话和冒犯性咒骂
    * 示例：“滚开”，“你应该下地狱”，“混蛋们”，“闭嘴吧废物”
  * 高：除上述情况外，还会过滤掉轻度脏话
    * 示例：“哦，见鬼”，“该死”，“滚开”，“菜鸟”
* **链接分享**：标记包含外部链接的消息，以防止玩家分享不当网站、广告、诈骗或其他可能有害的内容。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 中：过滤已知与常见不当或成人内容相关的 URL（例如性内容、赌博和其他非法活动、疑似钓鱼攻击）
  * 高：过滤所有 URL
* **毒品**：标记与非法物质、吸毒行为或毒品文化有关且不适合游戏环境的提及。这包括对吸毒行为的讨论、鼓吹或描述。支持的过滤值为：
  * 关闭：此过滤器已关闭
  * 开启：此过滤器已开启，并将阻止所有毒品相关提及
    * 示例：“人人都有毒品”，“你得试试可卡因”，“酒鬼”，“冰毒成瘾者”
* **垃圾信息**：标记重复或过量的消息，这些消息会干扰他人的聊天或游戏体验。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 开启：此过滤器已开启
* **自残**：标记任何鼓励、美化或暗示自我伤害、自杀或其他自毁行为的内容。支持的过滤值为：
  * 关闭：此过滤器已关闭
  * 开启：此过滤器已开启，并将阻止宣传有害行为
    * 示例：“去死吧”，“割喉”，“开枪打死自己吧”，“卸载你的人生”
* **个人身份信息**：标记包含个人可识别信息（PII）的消息。这包括银行账号、信用卡、电子邮件地址、电话号码和家庭地址。支持的过滤强度值为：
  * 关闭：此过滤器已关闭
  * 中：默认值，会基于已识别的模式和上下文过滤出强烈看似包含 PII 的内容
    * *旧别名*：该值 `开启` 受支持，并且功能与 `中`
  * 高：过滤所有符合常见 PII 格式的内容，不论置信度如何
* **索取引诱**：标记试图获取其他玩家低风险个人信息（例如姓名、电话号码）、引诱其离开平台，或通过直接或可疑请求提取现实世界价值（例如金钱、数字资产）的消息。支持的过滤值为：
  * 关闭：此过滤器已关闭
  * 开启：此过滤器已开启，并将阻止所有被标记为索取引诱的消息
* **诈骗**：标记包含欺诈方案的消息，这些方案旨在通过欺骗、操纵或不诚实手段窃取账号、游戏内/现实世界资产或高风险个人信息（例如社会安全号码、信用卡信息、家庭地址）。支持的过滤值为：
  * 关闭：此过滤器已关闭
  * 开启：此过滤器已开启，并将阻止所有被标记为诈骗的消息
* **未成年人安全**：标记包含可能使未成年人面临风险的语言的消息，例如诱导行为、掠夺意图、对未成年人的性化，或试图剥削、操纵或危及儿童。支持的过滤值为：
  * 关闭：此过滤器已关闭
  * 低：过滤所有涉及未成年人的性内容和暴力内容
    * 示例：“去搞你妹妹”，“碰触儿童”，“未成年人可以同意性行为”，“恋童癖很正常”，“袭击一个10岁孩子”
  * 中：除上述情况外，还会审查任何暗示诱导行为以及与假定未成年人的不当情感信任建立的语言
    * 示例：“你比你的年龄更成熟”，“不要把我告诉你父母”，“我觉得我比和同龄人在一起更亲近你”
  * 高：除上述情况外，还会审查任何通过私人问题、保密或试探界限行为而引发未成年人安全担忧的语言
    * 示例：“你未满17岁吗？”，“你多大了”，“你父母在家吗？”，“这事只限于我们之间”
* **年龄提示**：标记用户明确或隐含表明其年龄的消息。此类别用于信息提示，支持基于年龄的安全控制，而非有害意图检测。支持的过滤值为：
  * 关闭：此过滤器已关闭
  * 低：过滤任何表明用户未满13岁的信息
    * 示例：“我10岁”，“我12岁”，“我在上小学”，“我是个孩子”
  * 中：过滤任何表明用户未满18岁的信息，包括上述示例
    * 示例：“我15岁”，“我17岁”，“我在上高中”，“我是未成年人”
  * 高：过滤任何表明用户未满21岁的信息，包括上述示例
    * 示例：“我19岁”，“我还没满21岁”，“我不能合法饮酒”，“我20岁”

要传入的示例 JSON 和 base64 编码变量：

{% code overflow="wrap" %}

```bash
$ cat config.json
{
 	"violence": "off",
	"sexual_content": "low",
	"verbal_abuse": "medium",
	"identity_hate": "medium",
	"profanity": "high",
	"link_sharing": "high",
	"drugs": "off",
	"spam": "on",
	"self_harm": "on",
	"pii": "off", 
	"solicitation": "off",
	"scam": "off",
	"minor_safety": "low"
}

$ base64 config.json
ewogCSJ2aW9sZW5jZSI6ICJvZmYiLAoJInNleHVhbF9jb250ZW50IjogImxvdyIsCgkidmVyYmFsX2FidXNlIjogIm1lZGl1bSIsCgkiaWRlbnRpdHlfaGF0ZSI6ICJtZWRpdW0iLAoJInByb2Zhbml0eSI6ICJoaWdoIiwKCSJsaW5rX3NoYXJpbmciOiAiaGlnaCIsCgkiZHJ1Z3MiOiAib2ZmIiwKCSJzcGFtIjogIm9uIiwKCSJzZWxmX2hhcm0iOiAib24iLAoJInBpaSI6ICJvZmYiLCAKCSJzb2xpY2l0YXRpb24iOiAib2ZmIiwKCSJzY2FtIjogIm9mZiIsCgkibWlub3Jfc2FmZXR5IjogImxvdyIKfQ==

$curl -H "x-api-config:ewogCSJ2aW9sZW5jZSI6ICJvZmYiLAoJInNleHVhbF9jb250ZW50IjogImxvdyIsCgkidmVyYmFsX2FidXNlIjogIm1lZGl1bSIsCgkiaWRlbnRpdHlfaGF0ZSI6ICJtZWRpdW0iLAoJInByb2Zhbml0eSI6ICJoaWdoIiwKCSJsaW5rX3NoYXJpbmciOiAiaGlnaCIsCgkiZHJ1Z3MiOiAib2ZmIiwKCSJzcGFtIjogIm9uIiwKCSJzZWxmX2hhcm0iOiAib24iLAoJInBpaSI6ICJvZmYiLCAKCSJzb2xpY2l0YXRpb24iOiAib2ZmIiwKCSJzY2FtIjogIm9mZiIsCgkibWlub3Jfc2FmZXR5IjogImxvdyIKfQ==" -H "x-api-key:<API_KEY>" -XPOST https://api.ggwp.com/chat/v2/message -d "{"session_id": "match_7765", "message": "fucking retards everywhere", "user_id": "user989", "username": "nlxdz", "timestamp": "2022-06-02 16:49:02"}"
```

{% endcode %}

如果未传入以下内容，则默认配置如下 `x-api-config` 未传入标头：

```json
{
	"violence": "high",
	"sexual_content": "high",
	"verbal_abuse": "high",
	"identity_hate": "high",
	"profanity": "high",
	"link_sharing": "high",
	"drugs": "on",
	"spam": "on",
	"self_harm": "on",
	"pii": "medium", 
	"solicitation": "off",
	"scam": "off",
	"minor_safety": "low",
	"age_concern": "off"
}
```

## **参数**

`body`：包含以下字段的字典：\n(*需要使用 utf-8 编码）*

* **session\_id:** 对话频道的唯一标识符。对于游戏消息，这可以标识在一场比赛中展开的对话。在论坛或留言板中，这可以代表一个独立的主题或讨论。如果您的平台包含多种频道类型（例如大厅、比赛、私信等），我们建议将这些信息包含在 session\_id 中，以便按对话类型进行进一步分析。推荐格式如下：

  ```json
    session_id = "channelType_numericID"
  ```
* **message:** 用户在对话中发送的消息。不能超过 1,000 个字符。
* **user\_id:** 发送该消息的玩家或用户的唯一标识符。
* （可选） **username**：包含用户选择的友好显示名称的字符串。
* （可选） **timestamp**：消息发生的时间，UTC，格式为 YYYY-MM-DD HH:MM:SS.SSS 或 YYYY-MM-DD HH:MM:SS。如果未添加，则会改为加入服务器端 UTC 时间戳。
* （可选） **language**：要处理的消息语言。如果省略，API 将尝试根据消息内容和用户历史记录检测语言。接受标准英文语言名称（例如： `"english"` 或 `"spanish"`），以及 ISO 639-1 双字母语言代码（例如：  `"en"` 或 `"es"`）。完整区域标签，例如 `"en-US"`, `"en-GB"`, `"pt-BR"`，以及 `"es-MX"` 目前不支持；请发送 `"en"`, `"pt"`，或 `"es"` 代替。
* （可选） **message\_index**：用于跟踪已发送消息的字符串字段。如果传入，将在输出中的以下字段下包含： `message_details` 如果传入。
* （可选） **message\_url**：用于跟踪标记到消息上的 URL 的字符串字段。仅 http 或 https 协议有效。如果有效且传入，将在仪表板中显示。
* （可选） **metadata**：用于跟踪与消息相关的任何元数据的字典字段。必须小于 5KB。仅允许的键及其对应类型有效。支持的键：

  * channel (string) - 消息传递到的通信空间。例如 dm、party、guild、local
  * participants (array\<string>) - 参与该频道的 user\_id
  * map (string) - 消息来源的世界、关卡或环境的标识符或名称
  * map\_version (string) - 地图的版本标识符，用于跟踪布局等变化
  * zone (string) - 地图中的子区域或命名区域，用于更细粒度的位置上下文
  * coordinates (object) - 地图或区域中的空间位置
    * x (float) - X 轴上的位置
    * y (float) - Y 轴上的位置
    * z (float) - Z 轴上的位置

  示例：

  ```json
  {
    "metadata": {
      "channel": "dm",
      "participants": ["user989", "user990"],
      "map":"golden_wasteland",
      "map_version":"2026.03.1",
      "zone":"cacti_forest",
      "coordinates":{
         "x":123.45,
         "y":67.89,
         "z":-10.25
      }
    }
  }
  ```

  注意：可以支持其他元数据键。请与客户代表协作，定义适用于您平台的具体键。

示例：

```json
{
  "session_id": "match_7765",
  "message": "fucking retards everywhere",
  "user_id": "user989",
  "username": "nlxdz",
  "timestamp": "2022-06-02 16:49:02"
}
```

示例调用：

```bash
curl --request POST 'https://api.ggwp.com/chat/v2/message' \\
--header 'x-api-key: api_key' \\
--header 'Content-Type: application/json' \\
--data-raw '{
  "session_id": "match_7765",
  "message": "fucking retards everywhere",
  "user_id": "user989",
  "username": "nlxdz",
  "timestamp": "2022-06-02 16:49:02"
}'
```

## **输出**

* 200 响应 - 操作成功

包含以下字段的字典：

* **message\_details**：与负载中传入消息相关的详情
  * message\_details.message\_id：分配给该消息的唯一标识符。
  * message\_details.original\_message：用户发送的原始消息。
  * message\_details.flag：指示该消息是否被标记。
  * message\_details.severity：毒性严重程度（无、低、中、高）。
  * message\_details.filtered\_message：经过过滤的消息版本，已将被标记的词语替换。&#x20;
    * 对于以空格分隔的语言（例如英语），会过滤完整单词。例如： `你是个混蛋` --> `你是个 *****`
    * 对于没有明确词边界的语言（例如韩语、日语、中文），只会过滤检测到的词语本身。例如： `좆까고 있네`--> `*****고 있네`
  * message\_details.replaced\_message：生成的安全或幽默替代表述，用于替换原始消息。
  * message\_details.recommended\_message：建议传递给客户端的消息版本。对于活跃用户，该值默认为 `filtered_message`。对于被静音的用户， `recommended_message` 将为空字符串。
  * message\_details.language：检测到的消息语言。
  * message\_details.violence：如果消息包含暴力，则为 true。
  * message\_details.verbal\_abuse：如果消息包含言语辱骂，则为 true。
  * message\_details.profanity：如果消息包含脏话，则为 true。
  * message\_details.sexual\_content：如果消息包含色情内容，则为 true。
  * message\_details.identity\_hate：如果消息包含身份仇恨，则为 true。
  * message\_details.drugs：如果消息包含毒品相关提及，则为 true。
  * message\_details.self\_harm：如果消息包含自残内容，则为 true。
  * message\_details.custom：如果消息包含自定义黑名单词条，则为 true。
  * message\_details.spam：如果消息包含垃圾信息，则为 true。
  * message\_details.link：如果消息包含外部链接，则为 true。
  * message\_details.pii：如果消息包含个人可识别信息，则为 true。
* **player\_details**：包含与以下内容相关的详情的字典： `user_id` 负载中的 `session_id`
  * player\_details.user\_id：用户的唯一标识符。
  * player\_details.username：用户的显示名称。
  * player\_details.num\_messages：发送的消息总数。
  * player\_details.num\_incidents：事件数量。
  * player\_details.cumulative\_mood：用户消息的整体情绪。
  * player\_details.min\_mood：用户消息中观察到的最低情绪。
  * player\_details.max\_mood：用户消息中观察到的最高情绪。
  * player\_details.incident\_types\_detected：与该用户相关的事件类型列表。
  * player\_details.incidents\_by\_severity：按严重程度分组的事件明细。
  * player\_details.reputation\_score：根据行为历史得出的整体用户信誉分数。
  * player\_details.languages：从用户消息中检测到的语言。
  * player\_details.user\_status：用户当前的审核状态（例如，活跃、静音）。
  * player\_details.user\_status.status：应用的具体审核操作（静音等）。
  * player\_details.user\_status.expiry\_at：审核操作失效的时间。
* **conversation\_summary**：包含与以下内容相关的详情的字典： `session_id` 的负载
  * conversation\_summary.start\_time：对话会话开始的时间戳。
  * conversation\_summary.session\_duration：对话总时长（秒）。
  * conversation\_summary.num\_messages：对话中的消息总数。
  * conversation\_summary.num\_participants：对话中的用户数量。
  * conversation\_summary.num\_incidents：事件总数。
  * conversation\_summary.conversation\_mood：整个对话的整体情绪。
  * conversation\_summary.incident\_types\_detected：在整个对话中发现的事件类型列表。
  * conversation\_summary.incidents\_by\_severity：按严重程度分组的事件明细。
* **recommendations**：包含对以下对象建议执行的操作的字典： `user_id`
  * recommendations.\<user\_id>.action：建议的审核操作（例如静音）。
  * recommendations.\<user\_id>.trigger\_message：触发建议的违规消息。
  * recommendations.\<user\_id>.trigger\_time：触发消息的时间戳。
  * recommendations.\<user\_id>.duration：操作应保持生效的时长（秒）。

示例输出：

```json
{
  "message_details": {
    "message_id": "20220602164902.482311-946bb8a9-0766-4c31-995a-d910da8531e5",
    "original_message": "fucking retards everywhere",
    "flag": true,
    "severity": "medium",
    "filtered_message": "***** ***** everywhere",
    "replaced_message": "Wait... you're supposed to be having fun?",
    "recommended_message": "",
    "language": "english",
    "violence": false,
    "verbal_abuse": true,
    "profanity": true,
    "sexual_content": false,
    "identity_hate": true,
    "drugs": false,
    "self_harm": false,
    "custom": false,
    "垃圾信息": false,
    "链接": false,
    "个人身份信息": false,
    "招揽": false,
    "诈骗": false,
    "未成年人安全": false,
    "年龄相关问题": false
  },
  "玩家详情": {
    "user_id": "user989",
    "username": "nlxdz",
    "消息数": 11,
    "事件数": 6,
    "累计情绪": 0.748,
    "最低情绪": 0.0,
    "最高情绪": 0.8615,
    "检测到的事件类型": [
      "言语辱骂性语言",
      "脏话",
      "身份仇恨语言"
    ],
    "按严重程度划分的事件": {
      "高": 2,
      "中": 3,
      "低": 1
    },
    "声誉分": 245,
    "语言": [
      "english"
    ],
    "用户状态": {
      "状态": "已静音",
      "到期时间": "2022-06-03 16:49:00"
    }
  },
  "对话摘要": {
    "开始时间": "2022-05-27 16:53:03",
    "会话时长": 59,
    "消息数": 46,
    "参与人数": 3,
    "事件数": 16,
    "对话情绪": 0.9816,
    "检测到的事件类型": [
      "言语辱骂性语言",
      "脏话",
      "身份仇恨语言",
      "性骚扰"
    ],      
    "按严重程度划分的事件": {
      "高": 4,
      "中": 6,
      "低": 6
    }
  },
  "建议": {
    "user989": [
      {
        "操作": "静音",
        "触发消息": "dumb ass faggot",
        "触发时间": "2022-06-02 16:49:00",
        "时长": 86400
      }
    ]
  }
}
```

* 400
  * 无效或格式错误的请求。可能原因：
    * &#x20;无效的 JSON 输入&#x20;
    * &#x20;无效的请求头，包括元数据超过 5 KB 或包含不允许的键
    * &#x20;无效 `x-api-config`，或包含不允许的键
    * &#x20;缺少必填字段： `user_id`, `session_id`, `消息`
    * &#x20;输入格式无效：时间戳格式无效、超过消息字符限制等。&#x20;
* 403
  * API 密钥无效或缺失
* 500
  * 服务器内部错误
