このトピックでは、データをアーカイブする方法について説明します。
仕組み
データアーカイブは、ユーザーと AI エージェント間の会話をテキストに変換してストレージに保存します。企業は API 操作を呼び出してこのデータを取得できます。さらに、企業はユーザーと AI エージェント間の通話の音声および動画データを Object Storage Service (OSS) または ApsaraVideo VOD プラットフォームに保存できます。
実装
Alibaba Cloud は、テキストチャットレコード、文ごとの音声コールバック、ApsaraVideo Real-time Communication (ARTC) からの通話録音というデータアーカイブ方法を提供します。
テキストチャットレコード
DescribeAIAgentInstance API 操作を呼び出して、CallLogUrl フィールドからテキストファイルの URL を取得し、生成されたテキストチャットレコードを保存できます。
呼び出し例
import os
import sys
from typing import List
from alibabacloud_ice20201109.client import Client as ICE20201109Client
from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ice20201109 import models as ice20201109_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_console.client import Client as ConsoleClient
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> ICE20201109Client:
"""
認証情報を使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# 本番環境では、RAM ロールなどのより安全な方法を使用してリクエストを認証することを推奨します。認証情報の設定に関する詳細については、https://www.alibabacloud.com/help/document_detail/378659.html をご参照ください。
credential = CredentialClient()
config = open_api_models.Config(
credential=credential
)
# エンドポイントの詳細については、https://api.aliyun.com/product/ICE をご参照ください。
config.endpoint = f'ice.us-west-1.aliyuncs.com'
return ICE20201109Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
describe_aiagent_instance_request = ice20201109_models.DescribeAIAgentInstanceRequest(
instance_id='YOUR_INSTANCE_ID'
)
runtime = util_models.RuntimeOptions()
try:
resp = client.describe_aiagent_instance_with_options(describe_aiagent_instance_request, runtime)
ConsoleClient.log(UtilClient.to_jsonstring(resp))
ConsoleClient.log(UtilClient.to_jsonstring(resp.body.instance.call_log_url))
except Exception as error:
# 以下のコードはデモ用です。実際のプロジェクトでは、例外を慎重に処理し、無視しないようにしてください。
# エラーメッセージ
print(error.message)
# 診断アドレス
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])CallLogUrl の構造例
{
"instanceid": "b9566********************3c5eb2",
"startTime": 1755138072.2456193,
"agentUserId": "AGENT_USER1b7**************fac945",
"remoteUserId": "210413545",
"dialog": [
{
"id": 1,
"begin": 4.45,
"role": "agent",
"type": "greeting",
"text": "こんにちは、ApsaraVideo のシャオユンです。お話ししましょう。"
},
{
"id": 2,
"begin": 5.383,
"role": "user",
"type": "normal",
"text": "面白い童話を教えてください。"
},
{
"id": 3,
"begin": 53.951,
"role": "agent",
"type": "normal",
"text": "昔々、魔法の森に住むチャオチャオという名前の小さなキツネがいました。チャオチャオは色とりどりの葉っぱを集めるのが大好きで、一枚一枚が宝物でした。ある日、毎日小さなサプライズを生み出す魔法の葉っぱを見つけました。ある日はおいしい蜂蜜、またある時はきれいな虹色の傘でした。森の動物たちはとても羨ましがりました。\n\nチャオチャオはこの喜びを分かち合うことにしました。友達を招待してゲームをしたり、魔法の葉っぱからのサプライズを共有したりしました。それから、森には幸せと友情が育ち、みんなで忘れられない瞬間をたくさん過ごしました。これがチャオチャオと魔法の葉っぱの物語です。毎晩、この物語を聞くと、子供たちは甘い夢の中へと誘われます。"
},
{
"id": 4,
"begin": 54.922,
"role": "user",
"type": "normal",
"text": "別の物語を教えてください。"
},
{
"id": 5,
"begin": 81.97,
"role": "agent",
"type": "normal",
"text": "昔々、スターダストという宇宙探検家がいました。彼には星でできた鍵がありました。問題に直面するたびに、その鍵が光って解決策へと導いてくれました。冒険から帰ってくるたびに、新しい物語と大きな勇気をもたらしてくれるので、友達は彼をとても愛していました。スターダストと一緒に未知の宇宙を探検することは、子供たちが最も憧れる冒険になりました。"
},
{
"id": 6,
"begin": 84.78,
"role": "user",
"type": "normal",
"text": "別の物語を教えてください。"
},
{
"id": 7,
"begin": 88.561,
"role": "user",
"type": "normal",
"text": "ええと...あの..."
}
]
}文ごとの音声コールバック
コンソールで、[リアルタイムチャットレコードコールバック] と [ユーザーとエージェントの文ごとの音声コールバック] を設定できます。詳細については、「エージェントコールバック」をご参照ください。

ARTC 通話録音
ARTC のクラウドレコーディング機能を使用して通話を録音できます。詳細については、「クラウドレコーディング」をご参照ください。
説明
このメソッドは ARTC にのみ適用されます。発信または着信通話には適用されません。