A API de Mensageria de Serviço é o equivalente Open Cloud do Lua MessagingService, que permite que você comunique entre servidores ou instâncias de cliente de sua experiência. A API Lua só permite que você escreva e atualize um script manualmente no Studio para publicar mensagens, mas a API Open Cloud permite que você envie mensagens para servidores ao vivo de ferramentas de terceiros para automatizar e melhorar seus
Uso
Existem várias ferramentas úteis que você pode construir ao apoiar a comunicação entre servidores com a API (Interface de Programação para Aplicações)de Mensageria de Serviço, incluindo:
Portais de Anúncios : Um portal da web pode ser útil para apoiar o envio de anúncios a todos os usuários em todos os servidores em sua experiência, como anunciar um evento em breve, 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 de Conteúdo : Um sistema de moderação de conteúdo pode ajudar a manter sua experiência segura e segura. Ao detectar um usuário com comportamento inapropriado, você pode publicar uma mensagem para iniciar o servidor de experiência para avisar ou banir o usuário específico. Você também pode apoiar armazenamento de dados no sistema de moderação para adicionar contas de usuários à lista de bloqueio que imped
Painel de LiveOps : LiveOps é um painel útil para gerenciar eventos ao vivo, como uma festa de Halloween. No painel LiveOps, você pode pré-codificar um evento, atualizar mensagens de evento, acionar o evento quando estiver pronto e recompensar usuários selecionados com itens especiais, como uma coroa virtual sem atualizar nenhum dos códigos da experiência.
Limites
Limite | Descrição --- | --- Taxa | Roblox controla as solicitações de mensagens em até 50 + 5 n por minuto, onde n é o número de jogadores na experiência. Por exemplo, uma experiência com 20 jogadores começa a controlar em 150 solicitações de
Configurando um Tópico para Mensageria
Antes de poder publicar uma mensagem para todos os servidores ativos da sua experiência, você precisa configurar um tópico, que é um canal de mensagem personalizado que é acessível de vários servidores. Depois de definir um tópico, você precisa inscrever os usuários no tópico para receber suas mensagens entrantes.
Atualmente, você só pode definir um tópico no Studio e usar Lua MessagingService:SubscribeAsync() para inscrever usuários nele. O seguinte código de exemplo inscreve qualquer usuário em um tópico quando eles se juntam à experiência:
Set up and Subscribe Users to a Topic
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Defina e inscreva-se no tópico
local topic = "YourTopic"
local connection = MessagingService:SubscribeAsync(topic, function(message)
print(message.Data)
end)
player.AncestryChanged:Connect(function()
-- Desinscreva-se do tópico ao alterar a ancestralidade do jogador
connection:Disconnect()
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Publicando Mensagens em Servidores ao Vivo
Depois de configurar um tópico, você pode publicar uma mensagem para todos os servidores ativos de sua experiência com as seguintes etapas:
Crie uma chave da API em Painel do Criador. Certifique-se de executar as seguintes configurações:
- Adicionar serviço de mensageria a Permissões de Acesso .
- Adicione a operação Publicar à sua experiência selecionada.
Obtenha o ID do Universo , o identificador da experiência em que você deseja enviar suas mensagens.
Navegue até o Painel do Criador.
Encontre a experiência que você deseja publicar suas mensagens.
Clique no botão ⋯ na miniatura da experiência alvo para exibir uma lista de opções, então selecione Copiar ID do Universo .
Adicione a chave da API no cabeçalho x-api-key de uma solicitação de POST à API, como mostrado no exemplo a seguir:
Exemplo de Pedido para Publicar uma Mensagemcurl \--location \--request POST \'https://apis.roblox.com/messaging-service/v1/universes/{universeId}/topics/{topic}' \-H 'x-api-key: abc...' \-H 'Content-Type: application/json' \--data-raw '{"message":"message to publish"}'Chame a API para enviar a mensagem.
Adicionando API de Mensageria às Apps OAuth 2.0
Para usar a API de Mensageria para sua aplicação e solicitar permissões de seus usuários, realize as seguintes configurações:
Quando você registra sua aplicação, sob Permissões, selecione o escopo universo-mensageria-de-serviço:publique.
Quando implementar o fluxo de autorização , incluir 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 o seguinte exemplo:
https://www.authorize.roblox.com?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 da experiência que o usuário deseja publicar suas mensagens. Sua aplicação pode enviar uma solicitação de POST para o token resources endpoint com o token de acesso, ID do cliente e secreto ou o 1> code challenge
Exemplo de Pedidocurl --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 ponto de terminação retorna uma lista de universeIds como a resposta a seguinte exemplo:
Exemplo de Resposta{"resource_infos": [{"owner": {"id": "1516563360","type": "User"},"resources": {"universe": {"ids": ["3828411582"]}}}]}Suas aplicações agora podem enviar mensagens para qualquer experiência que um usuário concedeu permissão. Ao enviar a solicitar / pedir, incluir o token de acesso no cabeçalho de autorização e o universeId e tópico na solicitação HTTP no seguinte formato:
Exemplo de Pedidocurl --location --request POST 'https://apis.roblox.com/messaging-service/v1/universes/{universeId}/topics/{topic}' \--header 'Authorization: Bearer <access_token>' \--header 'Content-Type: application/json' \--data-raw '{"message":"message to publish"}'