直播互动消息是用于加强直播间消息沟通、提升交互体验的服务。提供了丰富、易集成的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、V2.0两个版本的SDK,推荐使用V2.0版本。 
- 区域填写您创建App的数据中心。当前开通的数据中心为上海(cn-shanghai)、新加坡(ap-southeast-1)。 - 您可以根据您的应用主要服务区域,选择已开通的数据中心。不同数据中心之间数据相互隔离。 
- 所有的服务端接口在调用时,传递的数据中心应该与您开通时的数据中心保持一致,否则会造成无效调用。 
 
 // Configure Credentials authentication information, including ak, secret, token
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                // Please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set.
                .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
                //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
                .build());
        // Configure the Client
        AsyncClient client = AsyncClient.builder()
                .region("cn-qingdao") // Region ID
                //.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
                .credentialsProvider(provider)
                //.serviceConfiguration(Configuration.create()) // Service-level configuration
                // Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                  // Endpoint 请参考 https://api.aliyun.com/product/live
                                .setEndpointOverride("live.aliyuncs.com")
                        //.setConnectTimeout(Duration.ofSeconds(30))
                )
                .build();服务端接口调用权限说明
通过集成服务端SDK,您可以在您的业务服务器中调用相关的接口。例如:向群组发送消息。详细接口说明,请参考互动消息(新)。
服务端调用和客户端调用具有以下区别:
- 服务端使用RAM用户鉴权。 
- 服务端调用具有最高权限,相关接口调用内部执行具有admin,creator权限。 
- 服务端发送消息不受禁言影响,不进行安全审核。 
回调
您可以配置回调,监听应用的用户事件,包括:登录、登出、加入群组、离开群组事件。回调说明文档请参考创建互动消息应用。
内容安全审核
内容安全审核分为二级设置,App级与消息级。
App级别的审核设置
分为三种安全审核方式:内置、自定义、不审核。您可以根据实际需要进行选择。内置安全审核使用的是阿里云内容安全审核服务,其中群消息使用公聊评论内容检测服务,私聊消息使用私聊互动内容检测服务。审核服务详细说明请参考使用文本审核增强版识别文本违规风险。
消息级别的审核设置
在App开启安全审核的前提下,您可以在消息级别设置的审核操作包含以下内容,具体方式参考客户端群发消息、单发消息接口,如IOS集成所示。
- 发送的消息是否要进行审核(例如:礼物消息等自定义的非聊天内容可以不进行审核)。 
- 将发送的消息与待审核的内容分开(例如:待发送的内容文本为hello,但您自定义的消息包含用户头像等其他装饰信息,您可以选择将发送的消息与审核内容分开)。