API

CBSChatModule.SetServerID - Sets the server id for the server chat. You need to set this value before initializing the chat.

using CBS;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var serverID = "server456234";
        ChatModule.SetServerID(serverID);
    }
}

CBSChatModule.SetRegion - Sets the region ID for the regional chat. You need to set this value before initializing the chat. For example "ru", "en".

using CBS;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var regionID = "ua";
        ChatModule.SetRegion(regionID);
    }
}

CBSChatModule.GetOrCreateChat - Get chat instance from pre-configured template. Global, Server, Regional.

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        // get chat instance
        var chatInstance = ChatModule.GetOrCreateChat(ChatTitle.GLOBAL);
        // get chat history
        chatInstance.GetChatHistory(OnGetChatMessages);

        // subscribe to new message
        chatInstance.OnNewMessage += OnNewMessageAdded;

        // send message
        chatInstance.SendMessage(new CBSSendTextMessageRequest 
        {
            MessageBody = "new message",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });

        // send sticker
        chatInstance.SendSticker(new CBSSendStickerMessageRequest 
        {
            StickerID = "sticker id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });

        // send item
        chatInstance.SendItem(new CBSSendItemMessageRequest 
        {
            InstanceID = "item instance id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });
    }

    private void OnGetChatMessages(CBSGetMessagesFromChatResult result)
    {
        if (result.IsSuccess)
        {
            var chatID = result.ChatID;
            var messages = result.Messages;
            foreach (var message in messages)
            {
                var messageID = message.MessageID;
                var messageChatID = message.ChatID;
                var contentType = message.ContentType;
                var target = message.Target;
                var visibility = message.Visibility;
                var state = message.State;
                var sender = message.Sender;
                var taggedProfile = message.TaggedProfile;
                var creationDateUTC = message.CreationDateUTC;
                var contentRawData = message.ContentRawData;
                var customData = message.CustomData;

                var textMessage = message.GetMessageBody();
                var sticker = message.GetSticker();
                var item = message.GetItem();
            }
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }

    private void OnNewMessageAdded(ChatMessage message)
    {
        Debug.Log("new message added");
        var messageID = message.MessageID;
    }
}

CBSChatModule.GetOrCreateGroupChatByID - Get chat instance from custom id. Suitable for creating group chats for example.

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var groupID = "some group id";
        // get chat instance
        var chatInstance = ChatModule.GetOrCreateGroupChatByID(groupID);
        // get chat history
        chatInstance.GetChatHistory(OnGetChatMessages);

        // subscribe to new message
        chatInstance.OnNewMessage += OnNewMessageAdded;

        // send message
        chatInstance.SendMessage(new CBSSendTextMessageRequest 
        {
            MessageBody = "new message",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });

        // send sticker
        chatInstance.SendSticker(new CBSSendStickerMessageRequest 
        {
            StickerID = "sticker id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });

        // send item
        chatInstance.SendItem(new CBSSendItemMessageRequest 
        {
            InstanceID = "item instance id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });
    }

    private void OnGetChatMessages(CBSGetMessagesFromChatResult result)
    {
        if (result.IsSuccess)
        {
            var chatID = result.ChatID;
            var messages = result.Messages;
            foreach (var message in messages)
            {
                var messageID = message.MessageID;
                var messageChatID = message.ChatID;
                var contentType = message.ContentType;
                var target = message.Target;
                var visibility = message.Visibility;
                var state = message.State;
                var sender = message.Sender;
                var taggedProfile = message.TaggedProfile;
                var creationDateUTC = message.CreationDateUTC;
                var contentRawData = message.ContentRawData;
                var customData = message.CustomData;

                var textMessage = message.GetMessageBody();
                var sticker = message.GetSticker();
                var item = message.GetItem();
            }
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }

    private void OnNewMessageAdded(ChatMessage message)
    {
        Debug.Log("new message added");
        var messageID = message.MessageID;
    }
}

CBSChatModule.GetOrCreatePrivateChatWithProfile - Get private chat instance from custom id. Suitable for private chats, from lists of unread messages.

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var withProfileID = "friend profile id";
        // get chat instance
        var chatInstance = ChatModule.GetOrCreatePrivateChatWithProfile(withProfileID);
        // get chat history
        chatInstance.GetChatHistory(OnGetChatMessages);

        // subscribe to new message
        chatInstance.OnNewMessage += OnNewMessageAdded;

        // send message
        chatInstance.SendMessage(new CBSSendTextMessageRequest 
        {
            MessageBody = "new message",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });

        // send sticker
        chatInstance.SendSticker(new CBSSendStickerMessageRequest 
        {
            StickerID = "sticker id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });

        // send item
        chatInstance.SendItem(new CBSSendItemMessageRequest 
        {
            InstanceID = "item instance id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        });
    }

    private void OnGetChatMessages(CBSGetMessagesFromChatResult result)
    {
        if (result.IsSuccess)
        {
            var chatID = result.ChatID;
            var messages = result.Messages;
            foreach (var message in messages)
            {
                var messageID = message.MessageID;
                var messageChatID = message.ChatID;
                var contentType = message.ContentType;
                var target = message.Target;
                var visibility = message.Visibility;
                var state = message.State;
                var sender = message.Sender;
                var taggedProfile = message.TaggedProfile;
                var creationDateUTC = message.CreationDateUTC;
                var contentRawData = message.ContentRawData;
                var customData = message.CustomData;

                var textMessage = message.GetMessageBody();
                var sticker = message.GetSticker();
                var item = message.GetItem();
            }
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }

    private void OnNewMessageAdded(ChatMessage message)
    {
        Debug.Log("new message added");
        var messageID = message.MessageID;
    }
}

CBSChatModule.GetChatIdBetweenTwoProfiles - Get unique id for chat between two profiles

using CBS;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }
    private IProfile ProfileModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();
        ProfileModule = CBSModule.Get<CBSProfileModule>();

        var withProfileID = "friend profile id";
        var myProfileID = ProfileModule.ProfileID;
        
        var chatID = ChatModule.GetChatIdBetweenTwoProfiles(myProfileID, withProfileID);
    }
}

CBSChatModule.GetProfileDialogList - Get a list of the current profile conversations with whom there was previously a private conversation.

using CBS;
using CBS.Models;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();
        
        ChatModule.GetProfileDialogList(OnGet);
    }

    private void OnGet(CBSGetDialogListResult result)
    {
        if (result.IsSuccess)
        {
            var dialogList = result.DialogList;
            foreach (var entry in dialogList)
            {
                var interlocutorProfile = entry.InterlocutorProfile;
                var lastMessage = entry.LastMessage;
                var badgeCount = entry.BadgeCount;
            }
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.GetProfileDialogBadge - Get count of unread private messages

using CBS;
using CBS.Models;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();
        
        ChatModule.GetProfileDialogBadge(OnGet);
    }

    private void OnGet(CBSBadgeResult result)
    {
        if (result.IsSuccess)
        {
            var unreadMessagesCount = result.Count;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.GetMessagesFromChat - Get messages from chat history. Max count = 1000

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some chat id";
        var maxMessges = 100;
        ChatModule.GetMessagesFromChat(chatID, maxMessges, OnGet);
    }

    private void OnGet(CBSGetMessagesFromChatResult result)
    {
        if (result.IsSuccess)
        {
            var chatID = result.ChatID;
            var messages = result.Messages;
            foreach (var message in messages)
            {
                var messageID = message.MessageID;
                var messageChatID = message.ChatID;
                var contentType = message.ContentType;
                var target = message.Target;
                var visibility = message.Visibility;
                var state = message.State;
                var sender = message.Sender;
                var taggedProfile = message.TaggedProfile;
                var creationDateUTC = message.CreationDateUTC;
                var contentRawData = message.ContentRawData;
                var customData = message.CustomData;

                var textMessage = message.GetMessageBody();
                var sticker = message.GetSticker();
                var item = message.GetItem();
            }
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.SendTextMessageToGroupChat - Send text message to group chat

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some group chat id";
        var messageRequest = new CBSSendTextMessageRequest 
        {
            MessageBody = "text message",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        };

        ChatModule.SendTextMessageToGroupChat(chatID, messageRequest, OnSent);
    }

    private void OnSent(CBSSendChatMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.Message;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.SendStickerMessageToGroupChat - Send sticker to group chat.

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some group chat id";
        var messageRequest = new CBSSendStickerMessageRequest
        {
            StickerID = "sticker id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        };

        ChatModule.SendStickerMessageToGroupChat(chatID, messageRequest, OnSent);
    }

    private void OnSent(CBSSendChatMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.Message;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.SendItemMessageToGroupChat - Send item to group chat. Item can only be picked up by one chat member

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some group chat id";
        var messageRequest = new CBSSendItemMessageRequest
        {
            InstanceID = "item instance id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        };

        ChatModule.SendItemMessageToGroupChat(chatID, messageRequest, OnSent);
    }

    private void OnSent(CBSSendChatMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.Message;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.SendTextMessageToPrivateChat - Send text message to private chat between two profiles

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var withProfileID = "some profile id";
        var messageRequest = new CBSSendTextMessageRequest
        {
            MessageBody = "text message",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        };

        ChatModule.SendTextMessageToPrivateChat(withProfileID, messageRequest, OnSent);
    }

    private void OnSent(CBSSendChatMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.Message;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.SendStickerMessageToPrivateChat - Send sticker to private chat between two profiles

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var withProfileID = "some profile id";
        var messageRequest = new CBSSendStickerMessageRequest
        {
            StickerID = "sticker id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        };

        ChatModule.SendStickerMessageToPrivateChat(withProfileID, messageRequest, OnSent);
    }

    private void OnSent(CBSSendChatMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.Message;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.SendItemMessageToPrivateChat - Send item to private chat between two profiles. Item can only be picked up by one chat member

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var withProfileID = "some profile id";
        var messageRequest = new CBSSendItemMessageRequest
        {
            InstanceID = "item instance id",
            TaggedProfileID = "profile id to tag",
            CustomData = "additional data"
        };

        ChatModule.SendItemMessageToPrivateChat(withProfileID, messageRequest, OnSent);
    }

    private void OnSent(CBSSendChatMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.Message;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.ChangeMessageText - Change message text property. Doesn't work with "Items" or "Stickers" messages

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some chat id";
        var messageID = "message id";
        var textToChange = "new text";

        ChatModule.ChangeMessageText(messageID, chatID, textToChange, OnChange);
    }

    private void OnChange(CBSModifyMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.ModifiedMessage;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.DeleteChatMessage - Mark chat message as deleted. Only the owner or moderator can delete a message

using CBS;
using CBS.Models;
using CBS.Utils;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some chat id";
        var messageID = "message id";

        ChatModule.DeleteChatMessage(messageID, chatID, OnDelete);
    }

    private void OnDelete(CBSModifyMessageResult result)
    {
        if (result.IsSuccess)
        {
            var message = result.ModifiedMessage;
            var messageID = message.MessageID;
            var messageChatID = message.ChatID;
            var contentType = message.ContentType;
            var target = message.Target;
            var visibility = message.Visibility;
            var state = message.State;
            var sender = message.Sender;
            var taggedProfile = message.TaggedProfile;
            var creationDateUTC = message.CreationDateUTC;
            var contentRawData = message.ContentRawData;
            var customData = message.CustomData;

            var textMessage = message.GetMessageBody();
            var sticker = message.GetSticker();
            var item = message.GetItem();
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.BanProfile - Mute profile in chat for a time. Action available only for moderators

using CBS;
using CBS.Models;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some chat id";
        var profileIDToBan = "some profile ID";
        var reason = "some reason";
        var banForHours = 10;

        ChatModule.BanProfile(profileIDToBan, chatID, reason, banForHours, OnBan);
    }

    private void OnBan(CBSBanProfileInChatResult result)
    {
        if (result.IsSuccess)
        {
            var banDetail = result.BanDetail;
            var chatID = banDetail.ChatID;
            var bannedUntil = banDetail.BannedUntil;
            var bannedByModeratorID = banDetail.BannedByModeratorID;
            var reason = banDetail.Reason;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.GetStickersPack - Get list of available stickers

using CBS;
using CBS.Models;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        ChatModule.GetStickersPack(OnGet);
    }

    private void OnGet(CBSGetStickersResult result)
    {
        if (result.IsSuccess)
        {
            var stickers = result.Stickers;
            foreach (var sticker in stickers)
            {
                var stickerID = sticker.ID;
                var stickerSprite = sticker.GetSprite();
            }
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

CBSChatModule.ClaimItemFromChat - Claim item from message if available.

using CBS;
using CBS.Models;
using UnityEngine;

public class ChatExample : MonoBehaviour
{
    private ICBSChat ChatModule { get; set; }

    private void Start()
    {
        ChatModule = CBSModule.Get<CBSChatModule>();

        var chatID = "some chat id";
        var messageID = "message id";

        ChatModule.ClaimItemFromChat(chatID, messageID, OnClaim);
    }

    private void OnClaim(CBSClaimItemFromMessageResult result)
    {
        if (result.IsSuccess)
        {
            var senderProfileID = result.SenderProfileID;
            var grantedItem = result.GrantedItem;
        }
        else
        {
            Debug.Log(result.Error.Message);
        }
    }
}

Last updated