直播互动消息是用于加强直播间消息沟通、提升交互体验的服务。提供了丰富、易集成的SDK,可在用户开发的直播应用中轻松集成评论、弹幕、点赞等能力。本文介绍互动消息服务端集成步骤。
前提条件
您已经创建好视频直播(包含互动消息)相关API权限调用账号,并创建RAM用户。详细说明,请参考创建RAM用户并授权。
您已经创建了互动消息应用,并记录App相关信息。如未创建,请前往视频直播控制台创建。
部署AppServer
创建好互动消息应用后,您会得到App对应的以下信息:
应用AppID
应用鉴权AppKey
应用签名AppSign
开通区域(也叫数据中心),是您选择的App开通数据中心
您需要将以上信息,记录到您的后端存储服务中。
实现您的AppServer。详细说明,请参考AppServer Demo。
AppServer主要功能之一是提供客户端登录阿里云互动消息服务的凭证。
Token采用以下算法生成,其中role说明请参考下文身份权限系统说明:
token = sha256(appId + appKey + userId + nonce + timestamp + role)
字段
说明
限制
appId
用户的AppID
与开通时控制台返回一致
appKey
开通时返回的AppKey
与开通时控制台返回一致
userId
要登录的用户的ID
仅限A-Z,a-z,0-9及"_",最长64字节
nonce
格式:"AK-随机串", 最长64字节
仅限A-Z,a-z,0-9及"_",可为空
role
角色,为admin时,表示该用户可以调用“管控类”接口。
可为空,如果要给当前用户admin权限,固定传“admin”,否则表示该用户不允许调用管控类接口。参考身份权限系统。
timestamp
过期时间,过期时间 = 当前时间+过期时长,单位秒
从1970到过期时间的秒数
生成完Token,需要将Token连同appId,userId,nonce,role,timestamp及AppSign信息发送给客户端。请求Token返回示例如下:
{ "auth": { "nonce": "产生token所用的nonce", "timestamp": 131231234, //<传产生token所传递的timestamp值,数值类型> "role": "产生token所传递的role", "user_id": "产生token所用的userid" }, "app_id": "{您的应用AppID}", "app_sign": "{您的应用AppSign}", "app_token": "{生成的token}" }
身份权限系统说明
登录授予角色
授予方式:登录时传入role值
角色名 | role值 | 说明 |
普通用户 | 非admin | 可以调用加入群组,发送消息等常规操作 |
管理员身份 | admin | 普通用户操作,管控类操作,如:创建群组 |
群组身份角色
角色名 | 身份获取方式 | 说明 |
群组创建者 | 群组创建者被自动授予 | 可以调用群组管控接口,如禁言,删除群组,发送消息不受禁言影响 |
群组管理员 | 创建群组时指定,或调用修改群组信息指定 | 可以调用群组管控接口,如禁言,删除群组,发送消息不受禁言影响 |
其他用户 | 登录后调用加入群组进群。客户端登出或异常退出后,自动退出群组 | 加入、离开群组,发送消息等。发送消息受群组禁言影响 |
互动消息服务端SDK集成
您可以在您的业务服务器或AppServer中集成服务端接口。服务端接口地址请参考互动消息(新)。单击帮助文档中的调试按钮,可以进入SDK调用页面。您可以通过此页面查看SDK集成信息。
SDK版本选择V1.0,当前视频直播(包含互动消息)SDK仅提供V1.0版本的SDK。点开SDK信息后,会显示当前最新的版本信息。建议您使用最新版本。SDK文档中提供了SDK下载集成说明。
SDK集成需要输入调用RAM凭证。这里填写您在前置步骤中创建好的RAM用户信息。
区域填写您创建App的数据中心。当前开通的数据中心为上海(cn-shanghai)、新加坡(ap-southeast-1)。
您可以根据您的应用主要服务区域,选择已开通的数据中心。不同数据中心之间数据相互隔离。
所有的服务端接口在调用时,传递的数据中心应该与您开通时的数据中心保持一致,否则会造成无效调用。
// Please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set.
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
/** use STS Token
DefaultProfile profile = DefaultProfile.getProfile(
"<your region id>", // The region ID
System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // The AccessKey ID of the RAM account
System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // The AccessKey Secret of the RAM account
System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")); // STS Token
**/
IAcsClient client = new DefaultAcsClient(profile);
服务端接口调用权限说明
通过集成服务端SDK,您可以在您的业务服务器中调用相关的接口。例如:向群组发送消息。详细接口说明,请参考互动消息(新)。
服务端调用和客户端调用具有以下区别:
服务端使用RAM用户鉴权。
服务端调用具有最高权限,相关接口调用内部执行具有admin,creator权限。
服务端发送消息不受禁言影响,不进行安全审核。
回调
您可以配置回调,监听应用的用户事件,包括:登录、登出、加入群组、离开群组事件。回调说明文档请参考创建互动消息应用。
内容安全审核
内容安全审核分为二级设置,App级与消息级。
App级别的审核设置
分为三种安全审核方式:内置、自定义、不审核。您可以根据实际需要进行选择。内置安全审核使用的是阿里云内容安全审核服务,其中群消息使用公聊评论内容检测服务,私聊消息使用私聊互动内容检测服务。审核服务详细说明请参考使用文本审核增强版识别文本违规风险。
消息级别的审核设置
在App开启安全审核的前提下,您可以在消息级别设置的审核操作包含以下内容,具体方式参考客户端群发消息、单发消息接口,如IOS集成所示。
发送的消息是否要进行审核(例如:礼物消息等自定义的非聊天内容可以不进行审核)。
将发送的消息与待审核的内容分开(例如:待发送的内容文本为hello,但您自定义的消息包含用户头像等其他装饰信息,您可以选择将发送的消息与审核内容分开)。