服務(wù)端集成
直播互動消息是用于加強(qiáng)直播間消息溝通、提升交互體驗的服務(wù)。提供了豐富、易集成的SDK,可在用戶開發(fā)的直播應(yīng)用中輕松集成評論、彈幕、點贊等能力。本文介紹互動消息服務(wù)端集成步驟。
前提條件
您已經(jīng)創(chuàng)建好視頻直播(包含互動消息)相關(guān)API權(quán)限調(diào)用賬號,并創(chuàng)建RAM用戶。詳細(xì)說明,請參考創(chuàng)建RAM用戶并授權(quán)。
您已經(jīng)創(chuàng)建了互動消息應(yīng)用,并記錄App相關(guān)信息。如未創(chuàng)建,請前往視頻直播控制臺創(chuàng)建。
部署AppServer
創(chuàng)建好互動消息應(yīng)用后,您會得到App對應(yīng)的以下信息:
應(yīng)用AppID
應(yīng)用鑒權(quán)AppKey
應(yīng)用簽名AppSign
開通區(qū)域(也叫數(shù)據(jù)中心),是您選擇的App開通數(shù)據(jù)中心
您需要將以上信息,記錄到您的后端存儲服務(wù)中。
實現(xiàn)您的AppServer。詳細(xì)說明,請參考AppServer Demo。
AppServer主要功能之一是提供客戶端登錄阿里云互動消息服務(wù)的憑證。
Token采用以下算法生成,其中role說明請參考下文身份權(quán)限系統(tǒng)說明:
token = sha256(appId + appKey + userId + nonce + timestamp + role)
字段
說明
限制
appId
用戶的AppID
與開通時控制臺返回一致
appKey
開通時返回的AppKey
與開通時控制臺返回一致
userId
要登錄的用戶的ID
僅限A-Z,a-z,0-9及"_",最長64字節(jié)
nonce
格式:"AK-隨機(jī)串", 最長64字節(jié)
僅限A-Z,a-z,0-9及"_",可為空
role
角色,為admin時,表示該用戶可以調(diào)用“管控類”接口。
可為空,如果要給當(dāng)前用戶admin權(quán)限,固定傳“admin”,否則表示該用戶不允許調(diào)用管控類接口。參考身份權(quán)限系統(tǒng)。
timestamp
過期時間,過期時間 = 當(dāng)前時間+過期時長,單位秒
從1970到過期時間的秒數(shù)
生成完Token,需要將Token連同appId,userId,nonce,role,timestamp及AppSign信息發(fā)送給客戶端。請求Token返回示例如下:
{ "auth": { "nonce": "產(chǎn)生token所用的nonce", "timestamp": 131231234, //<傳產(chǎn)生token所傳遞的timestamp值,數(shù)值類型> "role": "產(chǎn)生token所傳遞的role", "user_id": "產(chǎn)生token所用的userid" }, "app_id": "{您的應(yīng)用AppID}", "app_sign": "{您的應(yīng)用AppSign}", "app_token": "{生成的token}" }
身份權(quán)限系統(tǒng)說明
登錄授予角色
授予方式:登錄時傳入role值
角色名 | role值 | 說明 |
普通用戶 | 非admin | 可以調(diào)用加入群組,發(fā)送消息等常規(guī)操作 |
管理員身份 | admin | 普通用戶操作,管控類操作,如:創(chuàng)建群組 |
群組身份角色
角色名 | 身份獲取方式 | 說明 |
群組創(chuàng)建者 | 群組創(chuàng)建者被自動授予 | 可以調(diào)用群組管控接口,如禁言,刪除群組,發(fā)送消息不受禁言影響 |
群組管理員 | 創(chuàng)建群組時指定,或調(diào)用修改群組信息指定 | 可以調(diào)用群組管控接口,如禁言,刪除群組,發(fā)送消息不受禁言影響 |
其他用戶 | 登錄后調(diào)用加入群組進(jìn)群。客戶端登出或異常退出后,自動退出群組 | 加入、離開群組,發(fā)送消息等。發(fā)送消息受群組禁言影響 |
互動消息服務(wù)端SDK集成
您可以在您的業(yè)務(wù)服務(wù)器或AppServer中集成服務(wù)端接口。服務(wù)端接口地址請參考互動消息(新)。單擊幫助文檔中的調(diào)試按鈕,可以進(jìn)入SDK調(diào)用頁面。您可以通過此頁面查看SDK集成信息。
SDK版本選擇V1.0,當(dāng)前視頻直播(包含互動消息)SDK僅提供V1.0版本的SDK。點開SDK信息后,會顯示當(dāng)前最新的版本信息。建議您使用最新版本。SDK文檔中提供了SDK下載集成說明。
SDK集成需要輸入調(diào)用RAM憑證。這里填寫您在前置步驟中創(chuàng)建好的RAM用戶信息。
區(qū)域填寫您創(chuàng)建App的數(shù)據(jù)中心。當(dāng)前開通的數(shù)據(jù)中心為上海(cn-shanghai)、新加坡(ap-southeast-1)。
您可以根據(jù)您的應(yīng)用主要服務(wù)區(qū)域,選擇已開通的數(shù)據(jù)中心。不同數(shù)據(jù)中心之間數(shù)據(jù)相互隔離。
所有的服務(wù)端接口在調(diào)用時,傳遞的數(shù)據(jù)中心應(yīng)該與您開通時的數(shù)據(jù)中心保持一致,否則會造成無效調(diào)用。
// 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);
服務(wù)端接口調(diào)用權(quán)限說明
通過集成服務(wù)端SDK,您可以在您的業(yè)務(wù)服務(wù)器中調(diào)用相關(guān)的接口。例如:向群組發(fā)送消息。詳細(xì)接口說明,請參考互動消息(新)。
服務(wù)端調(diào)用和客戶端調(diào)用具有以下區(qū)別:
服務(wù)端使用RAM用戶鑒權(quán)。
服務(wù)端調(diào)用具有最高權(quán)限,相關(guān)接口調(diào)用內(nèi)部執(zhí)行具有admin,creator權(quán)限。
服務(wù)端發(fā)送消息不受禁言影響,不進(jìn)行安全審核。
回調(diào)
您可以配置回調(diào),監(jiān)聽?wèi)?yīng)用的用戶事件,包括:登錄、登出、加入群組、離開群組事件。回調(diào)說明文檔請參考創(chuàng)建互動消息應(yīng)用。
內(nèi)容安全審核
內(nèi)容安全審核分為二級設(shè)置,App級與消息級。
App級別的審核設(shè)置
分為三種安全審核方式:內(nèi)置、自定義、不審核。您可以根據(jù)實際需要進(jìn)行選擇。內(nèi)置安全審核使用的是阿里云內(nèi)容安全審核服務(wù),其中群消息使用公聊評論內(nèi)容檢測服務(wù),私聊消息使用私聊互動內(nèi)容檢測服務(wù)。審核服務(wù)詳細(xì)說明請參考使用文本審核增強(qiáng)版識別文本違規(guī)風(fēng)險。
消息級別的審核設(shè)置
在App開啟安全審核的前提下,您可以在消息級別設(shè)置的審核操作包含以下內(nèi)容,具體方式參考客戶端群發(fā)消息、單發(fā)消息接口,如IOS集成所示。
發(fā)送的消息是否要進(jìn)行審核(例如:禮物消息等自定義的非聊天內(nèi)容可以不進(jìn)行審核)。
將發(fā)送的消息與待審核的內(nèi)容分開(例如:待發(fā)送的內(nèi)容文本為hello,但您自定義的消息包含用戶頭像等其他裝飾信息,您可以選擇將發(fā)送的消息與審核內(nèi)容分開)。