你可以使用 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令牌授权。
请求
HTTP请求 | POST /rtc/v1/{DeploymentId}/room/{RoomId} | ||
HTTP头 | |||
名称 | 数值 | ||
Authorization |
Bearer <EOSAccessToken> | ||
Content-Type |
application/json | ||
路径参数 | |||
名称 | 类型 | 描述 | |
DeploymentId |
字符串 | EOS部署ID | |
RoomId |
字符串 | 选择的语音房间ID | |
POST Body参数 | |||
名称 | 类型 | 描述 | |
participants |
数组 <EosRoomParticipantRequests> | EosRoomParticipantRequests 列表 |
EosRoomParticipantRequests
EosRoomParticipantRequests | ||
名称 | 类型 | 描述 |
puid |
字符串 | EOS ProductUserId |
clientIP |
字符串 | 参与者的IP,用于为语音房间选择合适的服务器区域。 |
hardMuted |
布尔值 | 参与者的初始禁言状态 |
请求示例
响应
200 - OK: 成功 | ||
HTTP头 | ||
名称 | 数值 | |
Content-Type |
application/json | |
JSON Payload | ||
名称 | 类型 | 描述 |
roomId |
字符串 | 语音房间ID |
clientBaseUrl |
字符串 | 用于加入语音会话的媒体服务器的URL |
participants |
数组 <EosRoomParticipantInfo> | EosRoomParticipantInfo 列表 |
deploymentId |
字符串 | 请求的部署ID |
EosRoomParticipantInfo
EosRoomParticipantInfo | ||
名称 | 类型 | 描述 |
puid |
字符串 | EOS ProductUserId |
token |
字符串 | 用于加入媒体服务器的ProductUserId的房间令牌。 |
hardMuted |
布尔值 | 参与者的禁言状态 |
响应示例
移除参与者
removeParticipant
请求将从语音房间中移除玩家并撤销他们的房间令牌,从而防止他们再次使用现有令牌加入同一房间。
请求
HTTP请求 | DELETE /rtc/v1/{DeploymentId}/room/{RoomId}/participants/{ProductUserId} | |
HTTP头 | ||
名称 | 数值 | |
Authorization |
Bearer <EOSAccessToken> | |
Content-Type |
application/json | |
路径参数 | ||
名称 | 类型 | 描述 |
DeploymentId |
字符串 | EOS部署ID |
RoomId |
字符串 | 玩家的房间ID |
ProductUserId |
字符串 | 玩家的产品用户ID |
请求示例
响应
HTTP Response 204 - 无内容。 |
响应示例
修改参与者
房间成员可以远程静音,比如可以对所有人静音,不受其自己的静音状态影响。
请求
POST /rtc/v1/{DeploymentId}/room/{RoomId}/participants/{ProductUserId} | ||
HTTP头 | ||
名称 | 数值 | |
Authorization |
Bearer <EOSAccessToken> | |
Content-Type |
application/json | |
路径参数 | ||
名称 | 类型 | 描述 |
DeploymentId |
字符串 | EOS部署ID |
RoomId |
字符串 | 选中的语音房间ID |
POST Body参数 | ||
hardMuted |
布尔值 | 禁言状态:true or false |
请求示例
响应
HTTP Response 204 - 无内容。 |