訊息¶
Hive 聊天功能支持 頻道消息發送,以向用戶參與的頻道發送消息,以及 1:1 消息發送,以直接向特定個人發送消息。
渠道消息發送¶
要向用户已加入的频道发送消息,请创建一个 ChannelSendMessageParams
对象,并将其作为参数传递给 Chat 类的 sendMessage()
方法。
sendMessage()
方法返回傳輸結果和用於發送的 ChannelSendMessageParams
作為 retryParam
。 如果傳輸失敗,您可以嘗試使用 retryParams
重新發送。
通道發送消息參數¶
欄位名稱 | 描述 | 類型 | 必填 |
---|---|---|---|
channelId | 發送訊息的頻道 ID | 字串 | 是 |
message | 要發送到頻道的訊息 (最多 200 個字元) | 字串 | 是 |
extraData | 頻道訊息的附加資訊 最多 256B 位元組 (UTF-8) | 字串 | 否 |
這是一個示例代碼,用於向用戶參與的頻道發送消息。
using hive;
ChannelSendMessageParams channelSendMessageParams = new ChannelSendMessageParams();
channelSendMessageParams.channelId = "CHANNEL_ID";
channelSendMessageParams.message = "你好 Hive";
channelSendMessageParams.extraData = "EXTRA_DATA";
Chat.sendMessage(channelSendMessageParams, (ResultAPI result, ChannelSendMessageParams retryParams) => {
if (!result.isSuccess()) {
// 訊息發送失敗,嘗試使用 `retryParams` 重新發送
}
});
#include "HiveChat.h"
FHiveChatChannelSendMessageParams ChannelSendMessageParams;
ChannelSendMessageParams.ChannelId = TEXT("CHANNEL_ID");
ChannelSendMessageParams.Message = TEXT("Hello Hive");
ChannelSendMessageParams.ExtraData = TEXT("EXTRA_DATA");
FHiveChat::SendMessageWithChannelSendMessageParams(ChannelSendMessageParams, FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveChatChannelSendMessageParams& RetryParams) {
if (!Result.IsSuccess) {
// 消息发送失败,尝试使用 `RetryParams` 重新发送
}
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
ChannelSendMessageParams params;
params.channelId = "CHANNEL_ID";
params.message = "你好 Hive";
params.extraData = "EXTRA_DATA";
Chat::sendMessageWithChannelSendMessageParams(params, [=](ResultAPI const & result, ChannelSendMessageParams const & retryParams) {
if (!result.isSuccess()) {
// 消息发送失败,尝试使用 `retryParams` 重新发送
}
});
import com.hive.Chat;
import com.hive.ResultAPI;
val params = Chat.ChannelSendMessageParams(
channelId = "CHANNEL_ID",
message = "你好 Hive",
extraData = "EXTRA_DATA"
)
Chat.sendMessage(params, object: Chat.SendMessageListener {
override fun onResult(
result: ResultAPI,
retryParams: Chat.ChannelSendMessageParams?
) {
if (!result.isSuccess) {
// 消息发送失败,尝试使用 `retryParams` 重新发送
}
}
})
#import "HIVEService.h"
HiveChatChannelSendMessageParams* sendMessageParams = [[HiveChatChannelSendMessageParams alloc] init];
sendMessageParams.channelId = "CHANNEL_ID";
sendMessageParams.message = "你好 Hive";
sendMessageParams.extraData = "EXTRA_DATA";
[HiveChat sendMessageWithChannelSendMessageParams:sendMessageParams handler:^(HIVEResultAPI * result, HiveChatChannelSendMessageParams * retryParams) {
if (!result.isSuccess) {
// 消息发送失败。尝试使用 `retryParams` 重新发送
}
}];
頻道消息事件管理¶
發送的消息可以被onChannelMessage
事件處理程序接收,該事件由addChannelListener
事件觸發。 有關事件處理的更多詳細信息,請參閱事件管理 > 通道事件文檔。
1:1 消息發送¶
要向特定收件人發送直接消息,使用者創建一個 DirectSendMessageParams
物件,然後將其作為參數傳遞給 Chat 類的 sendMessage()
方法。
sendMessage()
方法返回傳輸結果以及在傳輸過程中使用的 DirectSendMessageParams
,名稱為 retryParam
。 如果傳輸失敗,您可以嘗試使用 retryParams
重新發送。
直接發送消息參數¶
欄位名稱 | 描述 | 類型 | 是否必填 |
---|---|---|---|
toPlayerId | Hive 目標用戶的玩家 ID | long | Y |
message | 發送給目標用戶的消息 (最多 200 個字符) | string | Y |
extraData | 1:1 消息的附加信息 最多 256B 字節 (UTF-8 標準) | string | N |
以下是一個用戶向特定收件人發送直接消息的示例代碼。
using hive;
DirectSendMessageParams directSendMessageParams = new DirectSendMessageParams();
directSendMessageParams.toPlayerId = 12345678;
directSendMessageParams.message = "你好 Hive";
directSendMessageParams.extraData = "EXTRA_DATA";
Chat.sendMessage(directSendMessageParams, (ResultAPI result, DirectSendMessageParams retryParams) => {
if (!result.isSuccess()) {
// 訊息發送失敗,嘗試使用 `retryParams` 重新發送
}
});
#include "HiveChat.h"
FHiveChatDirectSendMessageParams DirectSendMessageParams = FHiveChatDirectSendMessageParams();
DirectSendMessageParams.ToPlayerId = 12345678l;
DirectSendMessageParams.Message = TEXT("Hello Hive");
DirectSendMessageParams.ExtraData = TEXT("EXTRA_DATA");
FHiveChat::SendMessageWithDirectSendMessageParams(DirectSendMessageParams, FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveChatDirectSendMessageParams& RetryParams) {
if (!Result.IsSuccess) {
// 消息发送失败,尝试使用 `RetryParams` 重新发送
}
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
DirectSendMessageParams params;
params.toPlayerId = 12345678;
params.message = "Hello Hive";
params.extraData = "EXTRA_DATA";
Chat::sendMessageWithDirectSendMessageParams(params, [=](ResultAPI const & result, DirectSendMessageParams const & retryParams) {
if (!result.isSuccess()) {
// 訊息發送失敗,嘗試使用 `retryParams` 重新發送
}
});
import com.hive.Chat;
import com.hive.ResultAPI;
val params = Chat.DirectSendMessageParams(
toPlayerId = 12345678,
message = "你好 Hive",
extraData = "EXTRA_DATA"
)
Chat.sendMessage(params, object: Chat.SendMessageListener {
override fun onResult(
result: ResultAPI,
retryParams: Chat.DirectSendMessageParams?
) {
if (!result.isSuccess) {
// 訊息發送失敗,嘗試使用 `retryParams` 重新發送
}
}
})
import HIVEService
let params = HiveChatParams.DirectSendMessageParams(toPlayerId: Int64(12345678), message: "Hello Hive", extraData: "EXTRA_DATA")
ChatInterface.sendMessage(sendMessageParams: params) { result, retryParams in
if !result.isSuccess {
// Message Send Failed, Try resending using `retryParams`
}
}
#import "HIVEService.h"
HiveChatDirectSendMessageParams* sendMessageParams = [[HiveChatDirectSendMessageParams alloc] init];
sendMessageParams.toPlayerId = 12345678;
sendMessageParams.message = "Hello Hive";
sendMessageParams.extraData = "EXTRA_DATA";
[HiveChat sendDirectMessageWithSendMessageParams:sendMessageParams handler:^(HIVEResultAPI * result, HiveChatDirectSendMessageParams * retryParams) {
if (!result.isSuccess) {
// 消息发送失败。尝试使用 `retryParams` 重新发送
}
}];
1:1 訊息事件管理¶
透過 1:1 訊息傳輸發送的訊息可以通過 addUserListener
事件的 onDirectMessage
事件處理程序接收。 有關事件處理的更多詳細信息,請參閱 事件管理 > 用戶事件 文件。
訊息翻譯請求¶
嘗試請求該消息的翻譯。 語言代碼基於 ISO 639 alpha-2
標準。
翻譯參數¶
欄位名稱 | 描述 | 類型 | 必填 |
---|---|---|---|
message | 訊息 | 字串 | Y |
sourceLanguage | 訊息的語言代碼。如果省略,則推斷為 auto 。 | 字串 | N |
targetLanguages | 翻譯請求的語言代碼陣列 | 字串陣列 | Y |
using hive;
List<String> targetLanguages = new List<String>();
targetLanguages.Add("ko");
targetLanguages.Add("ja");
targetLanguages.Add("ar");
TranslateParams translateParams = new TranslateParams("hello", "auto", targetLanguages);
Chat.translate(translateParams, (ResultAPI result, TranslationData data) => {
if (result.isSuccess() && data != null) {
// data is translate languages
}
});
#include "HiveChat.h"
TArray<FString> TargetLanguages;
TargetLanguages.Add(TEXT("ko"));
TargetLanguages.Add(TEXT("ja"));
TargetLanguages.Add(TEXT("ar"));
FHiveChatTranslateParams TranslateParams = FHiveChatTranslateParams(TEXT("你好"), TEXT("auto"), TargetLanguages);
FHiveChat::Translate(TranslateParams, FHiveChatOnResultDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveChatTranslationData& data) {
if (Result.ISSuccess && data != null) {
// data 是翻譯語言消息
}
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;
std::vector<std::string> targetLanguages = { "ko", "ja", "ar" };
Chat::TranslateParams translateParams = new Chat::TranslateParams("你好", "auto", targetLanguages);
Chat::translate(translateParams, [=](ResultAPI const & result, Chat::TranslationData const & data) {
if (!result.isSuccess() && data != null ) {
// data is translate language messages
}
});
import com.hive.Chat;
import com.hive.ResultAPI;
var translateParams = Chat.TranslateParams(
message = "hello",
sourceLanguage = "auto",
targetLanguages = ["ko", "ja", "ar"]
)
Chat.translate(translateParams, object: Chat.TranslateParamsListener {
override fun onResult(
result: ResultAPI,
data: Chat.TranslationData?
) {
if (!result.isSuccess && data != null) {
// data 是翻譯語言消息
}
}
})
#import "HIVEService.h"
NSArray<NSString *> *targetLanguages = @[@"ko", @"ja", @"ar"];
HiveChatTranslateParams translateParams = [[HiveChatTranslateParams alloc] message: @"hello"
sourceLanguage: @"auto"
targetLanguages: targetLanguages];
[HiveChat translateWithParams: translateParams
handler:^(HIVEResultAPI * result, HiveChatTranslationData * data) {
if (result.isSuccess && data) {
// data 是翻譯語言消息
}
}];