エージェントコールバックを使用すると、特定のイベントが発生したときに、アプリケーションが事前に設定されたアクションや応答を自動的にトリガーできます。このトピックでは、その使用方法について説明します。
概要
AI エージェントが実行中で特定のイベントが発生すると、Alibaba Cloud は自動的にサーバーにリクエストを送信し、カスタムビジネスロジックを使用してイベントを処理できるようにします。
エージェントコールバックの設定
コンソールで AI エージェントページに移動し、構成するエージェントを見つけて、操作列の [管理] をクリックします。
[コールバック構成] タブで、[有効化] をクリックしてエージェントコールバックを構成します。イベントタイプを選択し、[コールバック URL] とオプションの [認証トークン] を設定します。
説明トークンは、認証のために
Authorizationヘッダーに配置されます。サーバーは、このトークンを検証して、リクエストが信頼できるソースからのものであることを確認する必要があります。
[OK] をクリックして構成を保存します。
コールバックペイロードフィールド
名前 | タイプ | 必須 | 説明 | 例 |
aiAgentId | String | はい | エージェント ID。 | xxxxx |
instanceId | String | はい | エージェントインスタンスの一意の ID。 | 39f8e0bc005e4f309379701645f4**** |
event | String | はい | イベントタイプ。
| agent_start |
data | Json | いいえ | チャットレコードなどのデータペイロード。 | |
code | String | はい | コールバックイベントのステータスコード。詳細については、「コールバックイベントのステータスコード」をご参照ください。 | 1001 |
message | String | はい | コールバックメッセージ。 | ユーザーはルームから退出させられました |
timestamp | String | はい | コールバックイベントが発生したときのタイムスタンプ。 | 2023-10-01T12:00:00Z |
userData | String | いいえ | ユーザー定義情報。 | |
extendData | Json | いいえ | カスタム拡張情報。 |
コールバックの例
ワークフローステータスコールバック
ワークフローステータスイベントの場合、extendData フィールドは次のとおりです:
名前 | タイプ | 説明 |
channelId | String | チャネル ID。 |
sentenceId | Int | 会話のターンの一意の ID。 説明 1 つのユーザーの質問に対する複数のエージェントの応答は、同じ sentenceId を共有します。 |
requestTimestamp | String |
|
responseTimestamp | String |
|
サーバーの例
Python
from aiohttp import web
import json
from loguru import logger
async def handle_post(request):
"""
POST リクエストを処理し、受信したデータをログに記録します。
"""
# リクエストから Authorization ヘッダーを取得します。
authorization_header = request.headers.get('Authorization')
if authorization_header is None or not authorization_header.startswith('Bearer fixed-token'):
logger.error("Unauthorized request")
return web.Response(status=401, text='Unauthorized')
try:
# リクエストボディからデータを取得します。
callback_data = await request.json()
logger.info("Parsed JSON data:")
logger.info(json.dumps(callback_data, indent=4))
return web.Response(text='Callback received successfully', status=200)
except json.JSONDecodeError:
# JSON の解析に失敗した場合は、エラー応答を返します。
return web.Response(text='Invalid JSON', status=400)
app = web.Application()
app.add_routes([web.post('/', handle_post)])
if __name__ == '__main__':
web.run_app(app, host='localhost', port=8081) コールバックイベントの状態コード
状態コード | コールバックイベント | コールバックメッセージ |
1001 | エージェントが開始 | AI エージェントが開始されます。 |
1002 | エージェントが停止 | AI エージェントが終了します。 |
1003 | セッションが開始 | セッションが開始されます |
4001 | 同時エージェントルートが枯渇 | 同時ルートが使い果たされました |
4002 | エージェントがチャネルからキックされた | ユーザーはルームから退出させられました |
4003 | 無効なエージェントトークン | AI エージェントのトークンが無効です |
4004 | エージェントストリームのサブスクリプションに失敗 | AI エージェントのストリームをプルできませんでした |
4005 | サードパーティの ASR が失敗 | エラーの説明 |
4006 | アバターサービスが利用不可 | アバターサービスは利用できません |
8001 | 意図を認識 | インテント認識イベント |
8002 | LLM データを受信 | LLM データ受信イベント |
8003 | TTS データを受信 | TTS データ受信イベント |