Skip to main content

Chat

Last updated on

Overview

AccelByte Gaming Services (AGS) Starter Chat service allows players to send and receive messages to their friends or party members in real-time. This service includes notifications to inform users of messages being sent or received. The Chat service is divided into three basic features:

  1. Chat: Send Personal Chat allows players to message their friends. The sender will receive a notification when their message has been sent, and the recipient will receive a notification when they have a new message.
  2. Chat: Send Party Chat allows users to send a message to all of the players in their party. The party members will be notified when they have a new message from the sender.
  3. Load Personal Chat History involves retrieving a player’s chat history with another player. This action can be performed by sending an HTTP Request only if the player has permission to perform this action, i.e., the player hasn’t been blocked.

Implementing Chat using the SDK

Chat features are handled by the AGS Starter Lobby service. You must connect to the Lobby service before you can enable chat.

Personal Chat

Players can communicate with other players using personal chat.

Send a Personal Chat

A player can send a personal message to any other player, if they know their User ID.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetPrivateMessageResponseDelegate(AccelByte::Api::Lobby::FPersonalChatResponse::CreateLambda([](const FAccelByteModelsPersonalMessageResponse& Result)
{
if (Result.Code == "0")
{
// Do something if SendPrivateMessage has been successful
}
else
{
// Do something if SendPrivateMessage has an error
}
}));

FString UserId = FString("SomeTargetUserId");
FString Message = FString("Your Message");
FRegistry::Lobby.SendPrivateMessage(UserId, Message);

Receive a Personal Chat

Personal chats can be received by registering to the personal chat event.

FRegistry::Lobby.SetPrivateMessageNotifDelegate(AccelByte::Api::Lobby::FPersonalChatNotif::CreateLambda([](const FAccelByteModelsPersonalMessageNotice& Result)
{
// Do something if PrivateMessageNotifDelegate has been retrieved successfully
}));

Party Chat

When a party has been formed, its members can use the chat feature to communicate with each other. Every message sent will be received by all of the party members.

Send a Party Chat

The Lobby service will automatically direct a player’s messages to their own party, so the player doesn’t need to know their Party ID.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetPartyMessageResponseDelegate(AccelByte::Api::Lobby::FPartyChatResponse::CreateLambda([](const FAccelByteModelsPartyMessageResponse& Result)
{
if (Result.Code == "0")
{
// Do something if PartyMessageResponseDelegate has been retrieved successfully
}
else
{
// Do something if PartyMessageResponseDelegate has an error
}
}));

FString Message = FString("Your Message");
FRegistry::Lobby.SendPartyMessage(Message);

Receive a Party Chat

A party chat can be received by registering to a party chat event.

FRegistry::Lobby.SetPartyChatNotifDelegate(AccelByte::Api::Lobby::FPartyChatNotif::CreateLambda([](const FAccelByteModelsPartyMessageNotice& Result)
{
// Do something if PartyChatMessageNotifDelegate has been retrieved successfully
}));

Global Chat

Join a Default Channel

Players can join a default channel to chat with all other players currently logged into the game.

FRegistry::Lobby.SetJoinChannelChatResponseDelegate(AccelByte::Api::Lobby::FJoinDefaultChannelChatResponse::CreateLambda([](const FAccelByteModelsJoinDefaultChannelResponse& Result)
{
// Do something if JoinChannelChat has been successful
}));

FRegistry::Lobby.SendJoinDefaultChannelChatRequest();

Receive a Global Chat

Receiving a message from a global channel can be done by registering to a channel chat event using the following code:

FRegistry::Lobby.SetChannelMessageNotifDelegate(AccelByte::Api::Lobby::FChannelChatNotif::CreateLambda([](const FAccelByteModelsChannelMessageNotice& Result)
{
// Do something if ChannelMessageNotifDelegate has been retrieved successfully
}));