メッセージ使用ガイド

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

メッセージングサービス API は、エンジンの経験のサーバーとクライアント間で通信できるオープンクラウドの同等物です, which lets you communicate across your experience's servers and clients.エンジン API では、メッセージの公開に対してスタジオで手動でスクリプトを書き込み更新することのみが許可されていますが、オープンクラウド API では、外部ツールからライブサーバーにメッセージを送信して、操作ワークフローを自動化し、改善することができます。

使用法

メッセージサービス API でクロスサーバー通信をサポートして構築できる複数の便利なツールがあります:

  • アナウンスポータル : ウェブポータルは、イベントの発表、アップデート、コンテストの勝者など、エクスペリエンス内のすべてのユーザーに通知を送信するのに役立つ可能性があります。ポータルでは、メッセージを編集し、API を呼び出してメッセージをすべてのユーザーまたは選択したユーザーに送信するボタンをクリックできます。

  • モデレーションシステム : モデレーションシステムは、エクスペリエンスを安全かつ安全に保つのに役立つことができます。不適切な行動を持つユーザーを検出すると、エクスペリエンスサーバーを警告または禁止するように通知するメッセージを公開できます。モデレーションシステムで データストア を使用して、ユーザーアカウントをブロックリストに追加し、再参加を防ぐこともできます。

  • LiveOps ダッシュボード : LiveOps ダッシュボードは、ハロウィンパーティーなどのライブイベントの管理に便利なツールです。ダッシュボードでは、イベントを事前にコード化し、イベントメッセージを更新し、準備が整ったときにイベントをトリガーし、エクスペリエンスのコードを更新せずにバーチャルの王冠などの特別なアイテムで選択したユーザーを報酬することができます。

制限

制限説明
レートRoblox はメッセージリクエストを 50 + (5 * number_of_players_in_experience) で制限します。たとえば、20 人のプレイヤーが参加する経験は、1 分間に 150 メッセージリクエストでスロットル開始します。
トピックサイズ80 文字
メッセージサイズ1,024 文字 (1KB)

メッセージ用のトピックを設定する

エクスペリエンスのライブサーバーにメッセージを公開する前に、複数のサーバーからアクセス可能なカスタマイズされたメッセージチャネルの トピック を設定する必要があります。トピックを定義した後、受信するメッセージを受け取るためにユーザーをトピックに購読します。

現在、Studio でのみトピックを定義し、Luau API MessagingService:SubscribeAsync() を使用してユーザーをそれにサブスクライブできます。次のコードサンプルは、ユーザーがエクスペリエンスに参加するときにトピックにサブスクライブします:

Set up and Subscribe Users to a Topic

local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- トピックを定義して購読する
local topic = "YourTopic"
local connection = MessagingService:SubscribeAsync(topic, function(message)
print(message.Data)
end)
player.AncestryChanged:Connect(function()
-- プレイヤーの祖先変更に対するトピックの購読解除
connection:Disconnect()
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

ライブサーバーにメッセージを公開する

トピックを設定した後、ライブサーバーにエクスペリエンスのメッセージを公開

  1. クリエイターダッシュボード で API キーを作成し、安全な場所にコピーします。次の設定を行うことを確認してください:

    1. メッセージサービスアクセス権 に追加します。
    2. エクスペリエンスを選択し、 universe-messaging-service:publish 操作を追加します。
  2. あなたのエクスペリエンスの ユニバース ID を取得する:

    1. ナビゲート to the クリエイターダッシュボード.

    2. メッセージを公開したい体験を見つけます。

    3. エクスペリエンスのサムネイルをホバーし、 ボタンをクリックし、 ユニバース ID をコピー を選択します。

  3. この例のように、API キーと宇宙を POST リクエストに追加します:

    メッセージの公開リクエストの例

    curl -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!"
    }'
  4. HTTP リクエストを送信してメッセージを公開します。

メッセージサービス API を OAuth 2.0 アプリに追加

ユーザーが自分のライブサーバーにメッセージを公開できるようにする OAuth 2.0 アプリケーション を作成できます。

アプリケーションでメッセージサービス API を使用し、ユーザーから許可をリクエストするには、次の設定を行います:

  1. アプリケーションを登録するとき権限 の下で、 universe-messaging-service:publish スコープを選択します。

  2. 認可フローを実装するとき、次の例のように、ユーザーをアプリケーションに戻す認可 URL の universe-messaging-service:publishscope を含める:


    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=6789
  3. ユーザーがメッセージを公開したいエクスペリエンスの universeId へのアクセスをリクエストします。アプリケーションは、アクセストークン、クライアント ID、秘密、または 、ユーザーが許可を与えた経験のリストを取得するためのリクエストパラメータとして、 トークンリソースエンドポイント にアクセストークン、クライアント ID、秘密または を送信できます:

    例のリクエスト

    curl --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>'

    このエンドポイントは、次の例の応答のようなリストを返します:

    例の応答

    {
    "resource_infos": [
    {
    "owner": {
    "id": "1516563360",
    "type": "User"
    },
    "resources": {
    "universe": {
    "ids": ["3828411582"]
    }
    }
    }
    ]
    }
  4. アプリケーションは今、ユーザーが許権限を付与したすべてのエクスペリエンスにメッセージを送信できます。リクエストを送信するときは、アクセストークンを認可ヘッダーと universeId およびトピックをリクエスト URI に以下の形式で含めます:

    例のリクエスト

    curl --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"}'