Voice Web APIs

通过语音Web API以及RESTful服务来使用语音接口功能。

阅读时间4分钟

你可以使用 Epic在线服务(Epic Online Services)(EOS) 语音接口来创建和管理用户之间的语音聊天室。在比赛期间,或者在应用程序的大厅中,用户可以跨多个平台进行一对一或群组沟通。

你可以使用语音Web API(取代EOS C SDK)来创建可信的服务器应用程序,以实施自定义的房间管理和授权。在调用语音Web API之前,请查看Web API概览中规定的标准、身份验证错误代码

就像语音C接口一样,语音Web API预期用于在可信的服务器上使用,并且需要禁用了 userRequired 的策略。

语音Web API端点

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

创建房间令牌

为了加入媒体服务器上的语音会议,用户需要提供房间令牌。

createRoomToken 请求将会查询这些令牌中的 ProductUserIds 列表,并且使用可选的玩家IP地址来选择用于语音会话的最佳服务器区域。

如果指定的 roomId 不存在,则会创建一个。

结果中将包含玩家房间令牌以及托管语音会话的媒体服务器的端点。

策略

客户端必须具有Voice:createRoomToken策略

房间令牌

响应中包含的个体令牌应该只能与请求令牌的相应玩家(ProductUserId)共享,不对整个组可见,因为这会让被踢出房间的玩家有机会重新使用其他玩家的令牌重新进入房间。

授权

此调用要求使用从连接接口Web API获取的EOS客户端身份验证访问令牌来进行Bearer令牌授权。

createRoomToken请求

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

HTTP标头
名称数值
授权Bearer <EOSAccessToken>
内容类型应用程序/json
路径参数
名称类型说明
DeploymentId字符串 EOS部署ID
RoomId字符串 选择的语音房间ID

POST正文参数

名称类型说明
参与者

数组 <EosRoomParticipantRequests>

EosRoomParticipantRequests列表

EosRoomParticipantRequests

名称类型说明
puid字符串 EOS ProductUserId
clientIP字符串 参与者的IP,用于为语音房间选择合适的服务器区域。
hardMuted布尔值 参与者的初始禁言状态

示例请求

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响应

200 - 确定:成功

HTTP标头
名称数值
内容类型应用程序/json
JSON有效负载
名称类型说明
roomId字符串 语音房间ID
clientBaseUrl字符串 用于加入语音会话的媒体服务器的URL
参与者

数组 <EosRoomParticipantInfo>

EosRoomParticipantInfo列表

deploymentId字符串 请求的部署ID
EosRoomParticipantInfo
puid字符串 EOS ProductUserId
令牌字符串 用于加入媒体服务器的ProductUserId的房间令牌。
hardMuted布尔值 参与者的禁言状态

示例响应

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

removeParticipant请求

removeParticipant 请求将从语音房间中移除玩家并撤销他们的房间令牌,从而防止他们再次使用现有令牌加入同一房间。

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

HTTP标头
名称数值
授权

Bearer <EOSAccessToken>

内容类型应用程序/json
路径参数
名称类型说明
DeploymentId字符串 EOS部署ID
RoomId字符串 玩家的房间ID
ProductUserId字符串 玩家的产品用户ID

示例请求

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

removeParticipant响应

204 - 无内容

示例响应

204无内容

modifyParticipant请求

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

HTTP标头
名称数值
授权

Bearer <EOSAccessToken>

内容类型应用程序/json
路径参数
名称类型说明
DeploymentId字符串 EOS部署ID
RoomId字符串 选择的语音房间ID
POST正文参数
hardMuted布尔值

禁言状态:truefalse

示例请求

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 - 无内容

示例响应

204无内容