通過閱讀本文,您可以瞭解如何在Android端接入AI即時互動音視頻智能體。
源碼說明
源碼下載
下載地址請參見GitHub開源專案。
源碼結構
├── Android //Android平台工程結構跟目錄
│ ├── AUIBaseKits //AUI基礎組件
│ ├── AUIAICall //UI組件
│ ├── README.md
│ ├── app //Demo入口
│ ├── build.gradle
│ └── settings.gradle環境要求
Android Studio 外掛程式版本4.1.3
Gradle 7.0.2
Android Studio內建 JDK11
前提要求
已在您的服務端上開發了相關介面或直接部署提供的Server源碼,搭建步驟請參見專案部署。
跑通Demo
源碼下載後,使用Android Studio開啟Android目錄。
開啟工程檔案build.gradle,修改包ID。
開啟智能體情境設定檔
/AUIAICall/src/main/assets/AgentConfig/agent_scenes.json,根據智能體類型,填寫智能體Id及所在的地區。例如:配置語音智能體時,找到agent_type為VoiceAgent的Scenes節點,填寫agent_id與region的欄位值。// 下面樣本如何配置語音通話智能體 { "agent_type": "VoiceAgent", "scenes": [ { "agent_id": "<語音通話智能體Id>", "region": "<語音通話智能體Id所在的地區>", "title": "語音通話", "tags": [], "limit_seconds": 1800, "description": "", "asr_model_id": "xxx", "tts_model_id": "xxx", "voice_styles": [] } ] }說明只體驗一種智能體時,只需要設定該智能體類型的
agent_id與region欄位值即可。region值請參考下表的 Region ID 列。地區名稱
Region Id
華東1(杭州)
cn-hangzhou
華東2(上海)
cn-shanghai
華北2(北京)
cn-beijing
華南1(深圳)
cn-shenzhen
新加坡
ap-southeast-1
完成智能體配置後,您可以通過以下兩種方式來啟動智能體:
已部署AppServer: 如果你已經在您的服務端上部署了阿里雲提供的AppServer源碼,您還需要進入檔案
AppServiceConst.java,修改服務端網域名稱。// AppServiceConst.java String HOST = "你的應用伺服器網域名稱";未部署AppServer:如果您還未部署AppServer源碼,需要快速跑通Demo並體驗智能體。那麼您需要進入檔案
AUIAICallAuthTokenHelper.java,配置EnableDevelopToken參數,並從控制台拷貝智能體使用的ARTC的App Id和APP Key,在App端產生啟動鑒權Token。重要該方法需在本地填寫AppKey等敏感資訊,僅適用於體驗及開發階段,不能用於線上發布,以防止因AppKey被盜取而導致的安全事故。
// AUIAICallAuthTokenHelper.java public class AUIAICallAuthTokenHelper { // 設定為true,啟動Develop模式 private static final boolean EnableDevelopToken = true; //從控制台拷貝音視訊通話RTCAppId private static final String AICallRTCDevelopAppId = "智能體使用的RTC的AppId"; // 從控制台拷貝音視訊通話RTCAppKey private static final String AICallRTCDevelopAppKey = "智能體使用的RTC的AppKey"; }擷取音視頻ARTC應用的AppId和AppKey步驟如下:
前往智能媒體控制台,單擊您建立好的智能體,進入智能體詳情頁面。

單擊RTC AppID,前往ApsaraVideo for Live控制台,擷取AppId和AppKey。

快速開發自己的AI通話功能
可通過以下幾個步驟快速整合AUIAICall到您的APP中,讓您的APP具備智能體音視訊通話功能。
整合源碼
匯入AUIAICall:倉庫代碼下載後,Android Studio菜單選擇:File -> New -> Import Module,匯入AUIAICall和AUIBaseKits檔案夾。
修改檔案夾下的build.gradle的三方庫依賴項。
dependencies { implementation 'androidx.appcompat:appcompat:x.x.x' //修改x.x.x為你工程適配的版本 implementation 'com.google.android.material:material:x.x.x' //修改x.x.x為你工程適配的版本 androidTestImplementation 'androidx.test.espresso:espresso-core:x.x.x' //修改x.x.x為你工程適配的版本 implementation 'com.aliyun.aio:AliVCSDK_ARTC:x.x.x' //修改x.x.x為你工程適配的版本 implementation 'com.aliyun.auikits.android:ARTCAICallKit:x.x.x' implementation 'com.alivc.live.component:PluginAEC:2.0.0' }說明ARTC SDK最新版本:7.10.0;
AICallKit SDK最新版本:2.11.0。
等待gradle同步完成,完成源碼整合。
源碼配置
已完成前提條件所需步驟。
進入
AppServiceConst.java檔案,修改服務端網域名稱。// AppServiceConst.java String HOST = "你的應用伺服器網域名稱";說明如果您還未部署AppServer,您可以使用App端產生鑒權Token的方式,快速測試並跑通Demo。詳細內容,請參見未部署AppServer。
調用API
上述工作完成後,接下來可以根據自身的業務情境和互動,在您APP其他模組或首頁上通過組件介面啟動AI通話,也可以根據自身的需求修改源碼。
/** 啟動之前保證麥克風、網路攝影機許可權已授權 */
Context currentActivity = AUIAICallEntranceActivity.this;
Intent intent = new Intent(currentActivity, AUIAICallInCallActivity.class);
// 設定通話的類型(語音、數字人或視覺理解),需要與AgentId的類型對應
ARTCAICallEngine.ARTCAICallAgentType aiCallAgentType =
ARTCAICallEngine.ARTCAICallAgentType.VoiceAgent;
// 智能體ID, 不能為nil
String aiAgentId = "";
// 智能體所在的地區,不能為nil
String aiAgentRegion = "";
// 進入rtc的使用者id,建議使用業務的登入使用者id
String userId = "123";
// 通話鑒權Token,參考:https://www.alibabacloud.com/help/zh/ims/user-guide/generate-artc-authentication-token?spm=a2c4g.11186623.0.0.1ce65bc4BKdQy7
String token = "";
intent.putExtra(AUIAIConstStrKey.BUNDLE_KEY_LOGIN_USER_ID, userId);
// 智能體類型
intent.putExtra(AUIAIConstStrKey.BUNDLE_KEY_AI_AGENT_TYPE, aiCallAgentType);
// 智能體ID
intent.putExtra(AUIAIConstStrKey.BUNDLE_KEY_AI_AGENT_ID, aiAgentId);
//智能體所在地區
intent.putExtra(AUIAIConstStrKey.BUNDLE_KEY_AI_AGENT_REGION, aiAgentRegion);
//設定通話鑒權Token
intent.putExtra(AUIAIConstStrKey.BUNDLE_KEY_RTC_AUTH_TOKEN, token);
currentActivity.startActivity(intent);通話鑒權Token產生,請參見產生ARTC鑒權Token。