Voice Web APIs

ボイス インターフェース機能を使用して、RESTful サービスで Voice Web API を使用します。

7 分で読める

Epic Online Services (EOS) Voice インターフェース は、ユーザー間のボイス チャット ルームを作成および管理するのに役立ちます。このインターフェースを使用して、対戦中やアプリケーションのロビーで、複数のプラットフォーム間で一対一またはグループでコミュニケーションを取ることができます。

EOS CSDK の代わりに Voice Web API を使用して、カスタム ルームの管理と承認を実装する信頼できるサーバー アプリケーションを作成することができます。Voice Web API を呼び出す前に、Web API 概要 で標準、認証エラーコード を確認してください。

Voice C インターフェース と同様に、Voice Web API は 信頼できるサーバー でのみの使用を目的とし、userRequired を無効にするポリシーが必要です。

Voice Web API エンドポイント

https://api.epicgames.dev/rtc/

ルーム トークンを作成する

メディアサーバーで音声会議に参加するには、ユーザーはルーム トークンを提供する必要があります。

createRoomToken リクエストは、オプションのプレイヤー IP アドレスを使用して音声セッションに最適なサーバー リージョンを選択し、これらのトークンに ProductUserIds のリストを照会します。

指定された roomId が存在しないと、作成されます。

結果には、プレイヤー ルーム トークンと、音声セッションをホストするメディア サーバーのエンドポイントが含まれます。

ポリシー

クライアントは Voice:createRoomToken policy が必要です。

ルーム トークン

応答に含まれる個々のトークンは、それらを要求した対応するプレイヤー (ProductUserId) とのみ共有する必要があり、グループ全体に表示されないようにする必要があります。これにより、キックされたプレイヤーが別のプレイヤーのトークンを再利用して再参加できる可能性があります。

認証

この呼び出しには、Connect インターフェス Web API から取得した EOS クライアント認証アクセス トークンを使用した Bearer トークン認証が必要です。

createRoomToken 要求

POST /rtc/v1/{DeploymentId}/room/{RoomId}

HTTP Headers
NameValue
AuthorizationBearer <EOSAccessToken>
Content-Typeapplication/json
Path Parameters
NameTypeDescription
DeploymentIdString The EOS deployment ID
RoomIdString A chosen voice room ID

POST Body Parameters

NameTypeDescription
participants

Array <EosRoomParticipantRequests>

List of EosRoomParticipantRequests

EosRoomParticipantRequests

NameTypeDescription
puidString The EOS ProductUserId
clientIPString

IP of the Participant, used to select an appropriate server region for the voice room.

hardMutedBoolean Initial mute status of the participant

要求の例

curl -X "POST" \ "https://api.epicgames.dev/rtc/v1/<deploymentId>/room/<roomId>" \
-H "accept: application/json" \
-H "Authorization:Bearer <EOSAccessToken>" \
-H "Content-Type: application/json" \
-d "{ \"participants\": [ { \"puid\": \"<ProductUserId>\",\"clientIp\": \"<ClientIp>\", \"hardMuted\": false } ] }"

createRoomToken Response

200 - OK:Success

HTTP Headers
NameValue
Content-Typeapplication/json
JSON Payload
NameTypeDescription
roomIdString The voice room ID
clientBaseUrlString The URL of the media server to join for the voice session
participants

Array <EosRoomParticipantInfo>

List of EosRoomParticipantInfo

deploymentIdString The deployment ID of the request
EosRoomParticipantInfo
puidString The EOS ProductUserId
tokenString

The room token for that ProductUserId used to join the media server.

hardMutedBoolean Mute status of the participant

応答の例

{
"roomId": "<RoomId>",
"participants": [
{
"puid": "<ProductUserId>",
"token": "<AccessToken>",
"hardMuted": false
}
],
"clientBaseUrl": "<MediaServerUrl>",
"deploymentId": "<DeploymentId>"
}

removeParticipant 要求

removeParticipant 要求は、プレイヤーをボイス ルームから削除し、ルーム トークンを取り消します。これにより、既存のトークンを再利用して同じルームへ再び参加することを防ぎます。

DELETE /rtc/v1/{DeploymentId}/room/{RoomId} /participants/{ProductUserId}

HTTP Headers
NameValue
Authorization

Bearer <EOSAccessToken>

Content-Typeapplication/json
Path Parameters

Name

TypeDescription
DeploymentIdString The EOS deployment ID
RoomIdString The player's room ID
ProductUserIdString The player's product user ID

要求の例

curl -X "DELETE" \ "https://api.epicgames.dev/rtc/v1/<deploymentId>/room/<roomId>/participants/<ProductUserId>" \
-H "Authorization:Bearer<EOSAccessToken>"

removeParticipant Response

204 - No Content

応答の例

204 No Content

modifyParticipant リクエスト

POST /rtc/v1/{DeploymentId}/room/{RoomId}/participants/ {ProductUserId}

HTTP Headers
NameValue
Authorization

Bearer <EOSAccessToken>

Content-Typeapplication/json
Path Parameters
NameTypeDescription
DeploymentIdString The EOS deployment ID
RoomIdString A chosen voice room ID
POST Body Parameters
hardMutedBoolean

Muted status: true or false

要求の例

curl -X "POST" \ "https://api.epicgames.dev/rtc/api/v1/<deploymentId>/room/<roomId>/participants/<ProductUserId>" \
-H "Content-Type: application/json" \
-d "{\"hardMuted\":true}"

modifyParticipant 応答

204 - No Content

応答の例

204 No Content