GGWP Chat API 集成

GGWP 聊天审核与外部聊天服务的集成:以 Unity 为例

在 GGWP,我们致力于简化游戏审核的集成工作。一个常见的问题是:如果您已经在使用 Unity Vivox、Agora 或 Photon 等现有聊天服务,究竟该如何集成我们的聊天审核功能。在本文中,我们将以 Unity Vivox 为例,并附上一段 POST API 请求的示例代码,指导您完成 GGWP Chat API 的集成。

为什么使用 RESTful API?

在 Unity 等游戏引擎与外部服务器或服务之间交换数据时,RESTful API 是一种广受欢迎的选择。它们提供了一种结构化且可扩展的方式来收发数据,因而非常适用于各种应用场景,例如过滤消息、获取用户的信誉分数等等!

前提条件

在深入了解集成流程之前,您需要满足以下几项前提条件:

  • 您的计算机上已安装 Unity(示例代码基于 Unity 2019.4 或更高版本)
  • 具备 C# 编程的基础知识
  • 拥有 GGWP API 密钥的访问权限

将 Unity 与自定义 RESTful API 集成

步骤 1:创建 Unity 项目

首先,创建一个新的 Unity 项目,或打开一个您希望在其中集成 RESTful API 功能的现有项目。

步骤 2:创建单例(Singleton)

在本例中,我们将使用一个单例来与我们的 RESTful API 交互。单例是一种设计模式,即某个类只存在唯一一个实例,并且可以全局访问。以下是一个示例单例类脚本,供您入门参考:

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class APIClient : MonoBehaviour
{
    public static APIClient Instance { get; private set; }
    private const string apiUrl = "https://api.ggwp.com/chat/v2/message";
    [SerializeField] private string ggwpApiKey;

    private void Awake()
    {
        if (Instance != null && Instance != this)
        {
            Destroy(this);
        }
        else
        {
            Instance = this;
        }
    }

	public void SendRequest(string jsonData)
    {
        StartCoroutine(SendPostRequest(jsonData));
    }
    private IEnumerator SendPostRequest(string jsonData)
    {
        UnityWebRequest request = new UnityWebRequest(apiUrl, "POST");
        byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData);
        request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
        request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
        request.SetRequestHeader("Content-Type", "application/json");
        request.SetRequestHeader("x-api-key", ggwpApiKey);
        yield return request.SendWebRequest();
        if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
        {
            Debug.LogError("POST request error: " +request.error);
        }
        else
        {
            Debug.Log("POST request successful!");
        }
    }
}

创建一个空的 GameObject,并将此脚本附加到它上面。随后,您可以在检视器(Inspector)中编辑 ggwpApiKey 变量。`SendRequest` 方法会将提供的 JSON 数据以 POST 请求的形式发送到 API。请注意,尽管我们在此处选择使用单例是因为它具有全局可访问的特性,但除此之外还有其他方式可以实现这一功能。

步骤 3:与单例交互

您可以在 Unity 项目的任何其他脚本中调用 `SendRequest` 方法,以便与我们的 API 交互。以下是调用该方法的示例:

using UnityEngine;
using System.Collections;

public class GameLogic : MonoBehaviour
{
	private void Start()
	{
    	    // Example JSON data to send to the API
    	    string jsonData = "{" + 
				"\"session_id\": \"your_session_id_here\"," + 
				"\"user_id\": \"your_user_id_here\"," + 
				"\"message\": \"your_message_here\"" + 
			"}";
    	    // Call the API using the SendPostRequest method
    	    APIClient.Instance.SendRequest(jsonData);
	}
}

再创建一个 GameObject,并将 GameLogic 脚本附加到它上面。请根据您的功能需求调整 JSON 数据和方法调用。

结语

通过集成 GGWP RESTful API 端点,您可以借助向 GGWP 服务收发数据来实现高级审核,从而扩展游戏的功能!请查阅我们的 API 文档,点击此处。如果您有任何疑问、需要在 API 集成方面获得进一步的帮助,或希望获得按量付费试用的访问权限,请随时联系我们。我们随时乐于帮助您为所有人打造一个安全、积极的社区。祝您编码愉快,愿您的 Unity 游戏更上一层楼!