Der Messaging-Service-API ist das Open-Cloud-Äquivalent des Engines MessagingService, mit dem Sie über die Server und Clients Ihrer Erlebniskommunizieren können.Die Engine-API erlaubt es Ihnen nur, Skripte manuell im Studio zum Veröffentlichen von Nachrichten zu schreiben und zu aktualisieren, aber die Open Cloud API ermöglicht es Ihnen, Nachrichten an Live-Server von externen Tools zu senden, um Ihre Betriebsworkflows zu automatisieren und zu verbessern.
Verwendung
Es gibt mehrere hilfreiche Tools, die Sie bauen können, indem Sie die Cross-Server-Kommunikation mit dem Messaging-Service-API unterstützen, einschließlich:
Ankündigungsportale : Ein Webportal kann hilfreich sein, um die Versendung von Ankündigungen an alle Benutzer auf Servern in deiner Erlebniszu unterstützen, wie die Ankündigung eines bevorstehenden Ereignisses, eines Updates und des Gewinners für einen Wettbewerb.Auf dem Portal kannst du eine Nachricht bearbeiten und auf eine Schaltfläche klicken, die die API aufruft, die Nachricht für alle Benutzer oder ausgewählte Benutzer zu senden.
Moderationssystem : Ein Moderationssystem kann dazu beitragen, deine Erfahrung sicher und geschützt zu halten.Wenn du einen Benutzer mit unangemessenem Verhalten entdeckst, kannst du eine Nachricht veröffentlichen, um den Erlebnissерver zu warnen oder den bestimmten Benutzer zu bannen.Du kannst auch Datenspeicher im Moderationssystem verwenden, um Benutzerkonten zu einer Blocklist hinzuzufügen, die sie daran hindert, sich wieder anzumelden.
LiveOps-Dashboard : LiveOps-Dashboards sind nützliche Werkzeuge zur Verwaltung von Live-Veranstaltungen, wie einer Halloweenparty.Auf dem Dashboard kannst du ein Ereignis vorab codieren, Ereignisnachrichten aktualisieren, das Ereignis auslösen, wenn es bereit ist, und ausgewählte Benutzer mit speziellen Gegenständen wie einer virtuellen Krone belohnen, ohne den Codeszu aktualisieren.
Grenzen
Limit | Beschreibung |
---|---|
Rate | Roblox drosselt Nachrichtsanfragen bei 50 + (5 * number_of_players_in_experience) .Zum Beispiel beginnt eine Erfahrung mit 20 Spielern, wenn 150 Nachrichtenanfragen pro Minute abgewickelt werden. |
Themengröße | 80 Zeichen |
Nachrichtengröße | 1,024 Zeichen (1 KB) |
Ein Thema für die Nachrichtenkommunikation einrichten
Bevor du eine Nachricht auf die Live-Server deines Erlebnisses veröffentlichen kannst, musst du ein Thema einrichten, das ein benutzerdefinierter Nachrichtenkanal ist, der von mehreren Servern zugänglich ist.Nach der Definition eines Themas abonnieren Sie Benutzer für das Thema, um Ihre eingehenden Nachrichten zu erhalten.
Derzeit kannst du nur ein Thema im Studio definieren und die Luau-API MessagingService:SubscribeAsync() verwenden, um Benutzer daran zu abonnieren.Das folgende Codebeispiel abonniert ein Thema für jeden Benutzer, wenn er sich der Erlebnisanschließt:
Set up and Subscribe Users to a Topic
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Definieren und abonnieren des Themas
local topic = "YourTopic"
local connection = MessagingService:SubscribeAsync(topic, function(message)
print(message.Data)
end)
player.AncestryChanged:Connect(function()
-- Entfolgen des Themas bei Änderung der Spieler-Vorfahren
connection:Disconnect()
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Veröffentliche Nachrichten auf lebenden Servern
Nachdem du ein Thema eingerichtet hast, veröffentliche eine Nachricht auf den Live-Servern deiner Erlebnis:
Erstelle einen API-Schlüssel auf Creator-Dashboard und kopiere ihn an einen sicheren Ort. Stelle sicher, dass du die folgenden Einstellungen durchführst:
- Füge Messaging-Service zu Zugriffsberechtigungen hinzu.
- Wähle ein Erlebnis und füge die univers-messaging-service:publish Operation hinzu.
Holen Sie sich die Universum-ID für Ihre Erlebnis:
Navigiere zum Creator-Dashboard.
Finde das Erlebnis, auf das du deine Nachrichten veröffentlichen möchtest.
Bewegen Sie den Mauszeiger über eine Miniaturansichteines Erlebnisses, klicken Sie auf die Schaltfläche ⋯ und wählen Sie Universum-ID kopieren .
Füge den API-Schlüssel und das Universum zu einer POST Anfrage hinzu, wie in diesem Beispiel:
Beispielanfrage für die Veröffentlichung einer Nachrichtcurl -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": "your-topic","message": "Hello, everyone!"}'Senden Sie die HTTP-Anfrage, um die Nachricht zu veröffentlichen.
Füge die Messaging-Service-API zu OAuth 2.0-Apps hinzu
Du kannst OAuth 2.0-Anwendungen erstellen, die es deinen Benutzern ermöglichen, Nachrichten auf ihre eigenen Live-Server zu veröffentlichen.
Um den Messaging-Service-API für Ihre Anwendung zu verwenden und Benutzerberechtigungen zu beantragen, führen Sie die folgenden Einstellungen aus:
Wenn du deine Anwendung registrierst, wähle unter Berechtigungen den Bereich universal-messaging-service:publish .
Wenn du den Autorisierungsfluss implementierst, füge universe-messaging-service:publish in den scope -Parameter der Autorisierungs-URL ein, die Benutzer zurück zu deiner Anwendung umleitet, wie das folgende Beispiel:
https://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=6789Fordere Zugriff auf das universeId des Erlebnisses an, auf das der Benutzer seine Nachrichten veröffentlichen möchte.Deine Anwendung kann eine Anforderung an die Token-Ressourcen-Endpunkt mit dem Zugriffs-Token, der Client-ID und dem geheimen oder der senden, abhängig von deiner Implementierung deines Autorisierungsflusses , als Anforderungsparameter, um eine Liste von Erfahrungen zu erhalten, die der Benutzer die Erlaubnis gegeben hat:
Beispielanfragecurl --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>'Dieser Endpunkt gibt eine Liste von universeIds wie die folgende Beispielantwort zurück:
Beispielantwort{"resource_infos": [{"owner": {"id": "1516563360","type": "User"},"resources": {"universe": {"ids": ["3828411582"]}}}]}Ihre Anwendung kann jetzt Nachrichten an jede Erfahrung senden, der ein Benutzer Berechtigunggewährt hat.Wenn du die Anfrage sendest, füge das Zugriffs-Token in den Autorisierungsheader und das universeId und das Thema in die Anforderungs-URI im folgenden Format ein:
Beispielanfragecurl --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": "some-topic","message":"message to publish"}'