A API do Serviço de Mensagens é o equivalente Open Cloud do MessagingService do Engine, que permite comunicar-se entre os servidores e clientes do seu jogo. A API do Engine só permite que você escreva e atualize scripts manualmente no Studio para publicar mensagens, mas a API Open Cloud permite que você envie mensagens para servidores ativos a partir de ferramentas externas para automatizar e melhorar seus fluxos de trabalho operacionais.
Uso
Existem várias ferramentas úteis que você pode construir apoiando a comunicação inter-servidores com a API do Serviço de Mensagens, incluindo:
Portais de Anúncios: Um portal na web pode ser útil para suportar o envio de anúncios a todos os usuários em diferentes servidores do seu jogo, como anunciar um evento futuro, uma atualização e o vencedor de uma competição. No portal, você pode editar uma mensagem e clicar em um botão que chama a API para enviar a mensagem para todos os usuários ou usuários selecionados.
Sistema de Moderação: Um sistema de moderação pode ajudar a manter seu jogo seguro. Ao detectar um usuário com comportamento inadequado, você pode publicar uma mensagem para acionar o servidor do jogo para avisar ou banir o usuário específico. Você também pode usar data stores no sistema de moderação para adicionar contas de usuários a uma lista de bloqueio que impede que eles entrem novamente.
Painel de LiveOps: Os painéis de LiveOps são ferramentas úteis para gerenciar eventos ao vivo, como uma festa de Halloween. No painel, você pode pré-codificar um evento, atualizar mensagens do evento, acionar o evento quando estiver pronto e recompensar usuários selecionados com itens especiais, como uma coroa virtual, sem atualizar nenhum código do jogo.
Limites
A API do Serviço de Mensagens segue os mesmos limites que o MessagingService do Engine. Os limites de taxa são compartilhados entre ambas as APIs, e o uso de ambas é contabilizado contra os mesmos limites.
| Limite | Descrição |
|---|---|
| Mensagens enviadas por servidor de jogo | 600 + 240 * (número de jogadores neste servidor de jogo) por minuto |
| Mensagens recebidas por tópico | (40 + 80 * número de servidores) por minuto |
| Mensagens recebidas para o jogo inteiro | (400 + 200 * número de servidores) por minuto |
| Assinaturas permitidas por servidor de jogo | 20 + 8 * (número de jogadores neste servidor de jogo) |
| Requisições de assinatura por servidor de jogo | 240 requisições por minuto |
| Tamanho do tópico | 80 caracteres |
| Tamanho da mensagem | 1.024 caracteres (1 KiB) |
Configurar um tópico para mensagens
Antes que você possa publicar uma mensagem nos servidores ativos do seu jogo, você deve configurar um tópico, que é um canal de mensagem personalizado acessível a partir de múltiplos servidores. Após definir um tópico, você assina usuários para esse tópico para receber suas mensagens.
Atualmente, você pode somente definir um tópico no Studio e usar a API Luau MessagingService:SubscribeAsync() para assinar usuários a ele. O seguinte exemplo de código assina qualquer usuário a um tópico quando ele entra no jogo:
Configurar e Assinar Usuários a um Tópico
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Defina e assine ao tópico
local topic = "SeuTópico"
local connection = MessagingService:SubscribeAsync(topic, function(message)
print(message.Data)
end)
player.AncestryChanged:Connect(function()
-- Cancele a assinatura do tópico ao mudar a ancestralidade do jogador
connection:Disconnect()
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Publicar mensagens em servidores ativos
Após configurar um tópico, publique uma mensagem nos servidores ativos do seu jogo:
Crie uma chave de API no Painel do Criador e copie-a em um lugar seguro. Certifique-se de realizar as seguintes configurações:
- Adicione messaging-service a Permissões de Acesso.
- Selecione um jogo e adicione a operação universe-messaging-service:publish.
Obtenha o ID do Universo para o seu jogo:
Navegue até o Painel do Criador.
Encontre o jogo ao qual você deseja publicar suas mensagens.
Passe o mouse sobre a miniatura do jogo, clique no botão ⋯ e selecione Copiar ID do Universo.

Adicione a chave de API e o universo a uma requisição POST, conforme neste exemplo:
Exemplo de Requisição para Publicar uma Mensagemcurl -L -X POST 'https://apis.roblox.com/cloud/v2/universes/{universe}:publishMessage' \-H 'x-api-key: {api-key}' \-H 'Content-Type: application/json' \--data '{"topic": "seu-tópico","message": "Olá a todos!"}'Envie a requisição HTTP para publicar a mensagem.
Adicionar a API do Serviço de Mensagens a aplicativos OAuth 2.0
Você pode criar aplicações OAuth 2.0 que permitem que seus usuários publiquem mensagens em seus próprios servidores ativos.
Para usar a API do Serviço de Mensagens em sua aplicação e solicitar permissões de seus usuários, siga as seguintes etapas:
Ao registrar sua aplicação, sob Permissões, selecione o escopo universe-messaging-service:publish.
Ao implementar o fluxo de autorização, inclua universe-messaging-service:publish no parâmetro scope da URL de autorização que redireciona os usuários de volta para sua aplicação, como no seguinte exemplo:
https://apis.roblox.com/oauth/v1/authorize?client_id=816547628409595165403873012&redirect_uri=https://my-app.com/redirect&scope=openid+universe-messaging-service:publish&response_type=Code&prompts=login+consent&nonce=12345&state=6789Solicite acesso ao universeId do jogo ao qual o usuário deseja publicar suas mensagens. Sua aplicação pode enviar uma requisição POST para o endpoint de recursos de token com o token de acesso, ID do cliente e segredo ou o code challenge, dependendo de sua implementação do fluxo de autorização, como parâmetros de requisição para obter uma lista de universeIds dos jogos que o usuário concedeu permissão:
Exemplo de Requisiçãocurl --location --request POST 'https://apis.roblox.com/oauth/v1/token/resources' \--header 'Content-Type: application/x-www-form-urlencoded' \--data-urlencode 'token=<access_token>' \--data-urlencode 'client_id=<client_id>' \--data-urlencode 'client_secret=<client_secret>'Este endpoint retorna uma lista de universeIds como o seguinte exemplo de resposta:
Exemplo de Resposta{"resource_infos": [{"owner": {"id": "1516563360","type": "User"},"resources": {"universe": {"ids": ["3828411582"]}}}]}Sua aplicação agora pode enviar mensagens para qualquer jogo que um usuário tenha concedido permissão. Ao enviar a requisição, inclua o token de acesso no cabeçalho de autorização e o universeId e tópico na URI da requisição no seguinte formato:
Exemplo de Requisiçãocurl --location --request POST 'https://apis.roblox.com/cloud/v2/universes/{universe}:publishMessage' \--header 'Authorization: Bearer <access_token>' \--header 'Content-Type: application/json' \--data-raw '{"topic": "algum-tópico","message":"mensagem para publicar"}'
Usar com HTTPService
Esta API é um dos endpoints Open Cloud suportados pelo HttpService. Você pode usá-la para publicar mensagens entre diferentes jogos de dentro de um jogo.