通过阅读本文,您可以了解如何在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步骤如下:
快速开发自己的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://help.aliyun.com/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。

