你可以使用 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标头 | ||
名称 |
数值 | |
|
| |
|
| |
路径参数 | ||
名称 |
类型 |
说明 |
|
字符串 |
EOS部署ID |
|
字符串 |
选择的语音房间ID |
POST正文参数 | ||
名称 |
类型 |
说明 |
|
数组 |
|
EosRoomParticipantRequests | ||
名称 |
类型 |
说明 |
|
字符串 |
EOS ProductUserId |
|
字符串 |
参与者的IP,用于为语音房间选择合适的服务器区域。 |
|
布尔值 |
参与者的初始禁言状态 |
示例请求
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有效负载 | ||
名称 |
类型 |
说明 |
|
字符串 |
语音房间ID |
|
字符串 |
用于加入语音会话的媒体服务器的URL |
|
数组 |
|
|
字符串 |
请求的部署ID |
EosRoomParticipantInfo | ||
|
字符串 |
EOS ProductUserId |
|
字符串 |
用于加入媒体服务器的ProductUserId的房间令牌。 |
|
布尔值 |
参与者的禁言状态 |
示例响应
{
"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 | |
|
| |
路径参数 | ||
|
字符串 |
EOS部署ID |
|
字符串 |
玩家的房间ID |
|
字符串 |
玩家的产品用户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 | |
|
| |
路径参数 | ||
名称 |
类型 |
说明 |
|
字符串 |
EOS部署ID |
|
字符串 |
选择的语音房间ID |
POST正文参数 | ||
|
布尔值 |
禁言状态: |
示例请求
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无内容