このトピックでは、リアルタイム対話型 AI の音声およびビデオエージェントを Android アプリケーションに統合する方法について説明します。
ソースコード概要
ソースコードのダウンロード
GitHub オープンソースプロジェクトからソースコードをダウンロードできます。
ソースコード構成
├── Android // Android プロジェクトのルートディレクトリ
│ ├── AUIBaseKits // AUI ベースコンポーネント
│ ├── AUIAICall // UI コンポーネント
│ ├── README.md
│ ├── app // デモのエントリポイント
│ ├── build.gradle
│ └── settings.gradle環境要件
Android Studio プラグインバージョン 4.1.3
Gradle 7.0.2
Android Studio にバンドルされている JDK 11
前提条件
サーバー上で必要な API を開発済みであるか、または提供されたサーバーソースコードをデプロイ済みである必要があります。詳細については、「Project deployment」をご参照ください。
デモの実行
ソースコードをダウンロードした後、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": "<Voice call agent ID>", "region": "<Region of the voice call agent ID>", "title": "Voice Call", "tags": [], "limit_seconds": 1800, "description": "", "asr_model_id": "xxx", "tts_model_id": "xxx", "voice_styles": [] } ] }説明特定のタイプのエージェントのみをテストする場合、そのエージェントタイプの
agent_idおよびregionフィールドのみを設定すれば十分です。regionフィールドには、以下の表に記載されているリージョン ID のいずれかを使用してください。リージョン名
リージョン ID
中国 (杭州)
cn-hangzhou
中国 (上海)
cn-shanghai
中国 (北京)
cn-beijing
中国 (深セン)
cn-shenzhen
シンガポール
ap-southeast-1
エージェントの構成が完了したら、次のいずれかの方法でエージェントを起動できます。
AppServer がすでにデプロイ済みの場合: Alibaba Cloud が提供する AppServer ソースコードをサーバーにデプロイ済みの場合は、
AppServiceConst.javaファイルを開き、サーバードメイン名を更新します。// AppServiceConst.java String HOST = "your application server domain name";AppServer が未デプロイの場合: AppServer ソースコードをデプロイしていないが、デモを迅速に実行してエージェントをテストしたい場合は、
AUIAICallAuthTokenHelper.javaファイルを開きます。EnableDevelopTokenパラメーターを `true` に設定し、コンソールから ARTC App ID および App Key をコピーします。この構成により、クライアント側でテスト用の認証トークンが生成されます。重要この方法では、AppKey などの機密情報をローカルに記述する必要があります。この方法はテストおよび開発用途にのみ適しており、AppKey 漏洩によるセキュリティリスクを防ぐため、本番環境では絶対に使用しないでください。
// AUIAICallAuthTokenHelper.java public class AUIAICallAuthTokenHelper { // Develop モードを有効にするには true に設定 private static final boolean EnableDevelopToken = true; // コンソールから音声・ビデオ通話用の RTC AppId をコピー private static final String AICallRTCDevelopAppId = "RTC AppId used by the agent"; // コンソールから音声・ビデオ通話用の RTC AppKey をコピー private static final String AICallRTCDevelopAppKey = "RTC AppKey used by the agent"; }ARTC アプリケーションの AppId および AppKey を取得する手順は以下のとおりです。
AI Agents ページに移動し、エージェントをクリックしてエージェント詳細ページを開きます。

ARTC アプリケーション ID をクリックすると、ApsaraVideo Live コンソールにリダイレクトされ、AppID および AppKey が表示されます。

独自の AI 通話機能の迅速な開発
以下の手順に従って AUIAICall をアプリに迅速に統合し、エージェントベースの音声・ビデオ通話機能を追加できます。
ソースコードの統合
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 = "your application server domain name";説明AppServer をデプロイしていない場合は、クライアント側で認証トークンを生成してデモを迅速にテストおよび実行できます。詳細については、「AppServer not deployed」をご参照ください。
API の呼び出し
上記の手順を完了した後、別のモジュールまたはアプリケーションのホームページからコンポーネントインターフェイスを呼び出して AI 通話を開始できます。この呼び出しは、ビジネスシナリオやユーザーインタラクション設計に基づいて実装できます。また、ソースコードを修正して特定の要件を満たすことも可能です。
/** 開始前にマイクおよびカメラの権限が付与されていることを確認 */
Context currentActivity = AUIAICallEntranceActivity.this;
Intent intent = new Intent(currentActivity, AUIAICallInCallActivity.class);
// 通話タイプ(音声、デジタルヒューマン、視覚理解)を設定。エージェント ID のタイプと一致させる必要があります。
ARTCAICallEngine.ARTCAICallAgentType aiCallAgentType =
ARTCAICallEngine.ARTCAICallAgentType.VoiceAgent;
// エージェント ID。空であってはなりません。
String aiAgentId = "";
// エージェントが配置されているリージョン。空であってはなりません。
String aiAgentRegion = "";
// RTC セッションに参加するユーザー ID。ビジネスログインユーザー ID の使用を推奨します。
String userId = "123";
// 通話認証トークン。参照先: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);
// 通話認証トークンを設定
intent.putExtra(AUIAIConstStrKey.BUNDLE_KEY_RTC_AUTH_TOKEN, token);
currentActivity.startActivity(intent);通話認証トークンの生成方法の詳細については、「Generate an ARTC authentication token」をご参照ください。