このトピックでは、リアルタイム対話型 AI の音声・動画エージェントを iOS アプリケーションに統合する方法について説明します。
ソースコードの説明
ソースコードのダウンロード
ソースコードはGitHub のオープンソースプロジェクトからダウンロードできます。
ソースコードの構造
├── iOS // iOS プラットフォームのルートディレクトリ
│ ├── AUIAICall.podspec // Pod 記述ファイル
│ ├── Source // ソースコードファイル
│ ├── Resources // リソースファイル
│ ├── Example // デモコード
│ ├── AUIBaseKits // 基本的な UI コンポーネント
│ ├── README.md // Readme 環境要件
Xcode 16.0 以降。最新の公式リリース版の使用を推奨します。
CocoaPods 1.9.3 以降。
iOS 11.0 以降を実行する物理 iOS デバイス。
前提条件
サーバー側で関連する API オペレーションを開発するか、提供されているサーバーのソースコードをデプロイします。詳細については、「プロジェクトのデプロイ」をご参照ください。
デモの実行
ソースコードをダウンロードした後、Example フォルダに移動します。
Example フォルダで
pod install --repo-updateコマンドを実行して、SDK の依存関係をインストールします。AUIAICallExample.xcworkspaceプロジェクトファイルを開き、パッケージ ID を変更します。エージェントシナリオ設定ファイル
/Resources/AUIAIMain.bundle/agent_scenes.jsonを開くことができます。エージェントタイプに基づいてエージェント ID とそのリージョンを入力します。たとえば、音声エージェントを設定する場合、agent_typeがVoiceAgentである Scenes ノードを見つけ、agent_idとregionフィールドの値を入力します。// 以下の例は、音声通話エージェントの設定方法を示しています { "agent_type": "VoiceAgent", "scenes": [ { "agent_id": "<Voice call agent ID>", "region": "<Region where the voice call agent ID is located>", "title": "Voice Call", "tags": [], "limit_seconds": 1800, "description": "", "asr_model_id": "xxx", "tts_model_id": "xxx", "voice_styles": [] } ] }説明1 つのエージェントタイプのみをテストする場合は、そのエージェントタイプの
agent_idとregionフィールドの値を設定するだけで済みます。regionの値については、次の表の「リージョン ID」列をご参照ください。リージョン名
リージョン ID
中国 (杭州)
cn-hangzhou
中国 (上海)
cn-shanghai
中国 (北京)
cn-beijing
中国 (深セン)
cn-shenzhen
シンガポール
ap-southeast-1
エージェントを設定した後、次の 2 つのメソッドのいずれかを使用して起動します。
AppServer がデプロイされている場合: Alibaba Cloud が提供する AppServer のソースコードをサーバーにデプロイしている場合は、
AUIAICallAppServer.swiftファイルに移動し、サーバー側のドメイン名を設定します。// AUIAICallAppServer.swift public let AICallServerDomain = "ご利用のアプリケーションサーバーのドメイン名"AppServer がデプロイされていない場合: AppServer のソースコードをデプロイしておらず、デモを迅速に実行してエージェントをテストしたい場合は、
AUIAICallAuthTokenHelper.swiftファイルに移動します。このファイルでEnableDevelopTokenパラメーターを設定し、コンソールから ARTC アプリケーションの App ID と App Key を取得し、アプリケーションで認証トークンを生成します。説明このメソッドでは、AppKey やその他の機密情報をアプリケーションに埋め込む必要があります。これはテストおよび開発専用です。本番環境ではこのメソッドを使用しないでください。クライアント側で AppKey を公開すると、深刻なセキュリティリスクが生じます。
// AUIAICallAuthTokenHelper.swift @objcMembers public class AUIAICallAuthTokenHelper: NSObject { // true に設定して開発モードを有効にします private static let EnableDevelopToken: Bool = true // コンソールから RTCAppId をコピーします private static let RTCDevelopAppId: String = "RTC AppId used by the agent" // コンソールから RTCAppKey をコピーします private static let RTCDevelopAppKey: String = "RTC AppKey used by the agent" ... }ARTC アプリケーションの AppID と AppKey を取得するには:
IMS コンソールの AI Agents ページに移動します。エージェントをクリックして、エージェント詳細ページに移動します。

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

Example ターゲットを選択し、プロジェクトをコンパイルして実行します。
独自の AI 通話機能のクイック開発
以下の手順に従って AUIAICall をアプリケーションに統合し、エージェントの音声・動画通話機能を有効にします。
ソースコードの統合
リポジトリをダウンロードした後、iOS フォルダをアプリケーションのコードディレクトリにコピーします。フォルダ名を AUIAICall に変更し、Podfile と同じ階層に配置してから、Example フォルダと AICallKit フォルダを削除します。
Podfile を変更して、以下をインポートします。
AliVCSDK_ARTC:リアルタイムの音声・動画インタラクション用のクライアント SDK です。AliVCSDK_Standard または AliVCSDK_InteractiveLive を使用することもできます。統合メソッドの詳細については、「iOS」をご参照ください。
ARTCAICallKit:リアルタイム対話型 AI 通話シナリオ用の SDK です。
AUIFoundation:基本的な UI コンポーネントです。
AUIAICall:AI 通話シナリオ UI コンポーネントのソースコードです。
# iOS 11.0 以降が必要です platform :ios, '11.0' target 'ご利用のアプリのターゲット' do # ビジネスシナリオに基づいて適切な音声・動画ターミナル SDK を統合します pod 'AliVCSDK_ARTC', '~> x.x.x' # リアルタイム対話型 AI 通話シナリオ SDK pod 'ARTCAICallKit', '~> x.x.x' # 基本的な UI コンポーネントのソースコード pod 'AUIFoundation', :path => "./AUIAICall/AUIBaseKits/AUIFoundation/", :modular_headers => true # AI 通話シナリオ UI コンポーネントのソースコード pod 'AUIAICall', :path => "./AUIAICall/" end説明最新の ARTC SDK バージョン: 7.10.0
最新の AICallKit SDK バージョン: 2.11.0。
pod install --repo-updateコマンドを実行します。ソースコードの統合は完了です。
プロジェクト設定
マイクとカメラの権限を追加します。プロジェクトの
info.plistファイルを開き、マイク権限 (NSMicrophoneUsageDescription)、カメラ権限 (NSCameraUsageDescription)、およびフォトライブラリ権限 (NSPhotoLibraryUsageDescription) を追加します。プロジェクト設定の [Signing & Capabilities] タブで、[Background Modes] を有効にします。バックグラウンドモードを有効にしない場合、アプリケーションがバックグラウンドに入ったときの通話の終了を手動で処理する必要があります。
ソースコードの設定
前提条件のステップを完了していること。
AUIAICallAppServer.swiftファイルに移動し、サーバー側のドメイン名を設定します。// AUIAICallAppServer.swift public let AICallServerDomain = "ご利用のアプリケーションサーバーのドメイン名"説明AppServer をデプロイしていない場合は、アプリケーションで認証トークンを生成してデモを迅速にテストできます。詳細については、「AppServer がデプロイされていない場合」をご参照ください。
API の呼び出し
上記の手順を完了した後、コンポーネントインターフェイスを使用して、アプリケーションの他のモジュールまたはホームページから AI 通話を開始できます。ビジネス要件に合わせてソースコードを変更することもできます。
// コンポーネントのインポート
import AUIAICall
import ARTCAICallKit
import AUIFoundation
// マイク権限が有効になっているか確認
AVDeviceAuth.checkMicAuth { auth in
if auth == false {
return
}
// userId には、アプリログイン後のユーザー ID を使用します
let userId = "xxx"
// userId を使用してコントローラーをビルド
let controller = AUIAICallController(userId: userId)
// エージェント ID を設定します。nil は指定できません。
controller.config.agentId = "xxx"
// 通話タイプ (音声、デジタルヒューマン、または画像認識) を設定します。エージェント ID のタイプと一致させる必要があります。
controller.config.agentType = agentType
// エージェントが配置されているリージョン。nil は指定できません。
controller.config.region = "xx-xxx"
// 通話 ViewController を作成
let vc = AUIAICallViewController(controller)
// 通話インターフェイスを全画面で開く
vc.modalPresentationStyle = .fullScreen
vc.modalTransitionStyle = .coverVertical
vc.modalPresentationCapturesStatusBarAppearance = true
self.present(vc, animated: true)
}