智能體回調(diào)
智能體回調(diào)允許您的應(yīng)用在特定事件發(fā)生時自動觸發(fā)預(yù)設(shè)的操作或響應(yīng)。通過閱讀本文,您可以了解如何使用智能體回調(diào)。
功能概述
當(dāng)智能體在運行過程中觸發(fā)某些事件時,阿里云將主動向您的服務(wù)器發(fā)送請求。在接收到回調(diào)請求后,您可以添加相應(yīng)的業(yè)務(wù)邏輯處理。
配置智能體回調(diào)
登錄智能融媒體控制臺。
在左側(cè)導(dǎo)航欄,選擇
,選擇您所需要配置的智能體,單擊右側(cè)操作列管理。單擊回調(diào)配置頁簽,開啟智能體回調(diào)配置。
配置回調(diào)地址和鑒權(quán)Token(可選)。
說明在配置鑒權(quán)Token后,您可以在Header的Authorization字段中獲取該Token。
回調(diào)消息體字段說明
名稱 | 類型 | 必填 | 描述 | 示例值 |
aiAgentId | String | 是 | 智能體ID | xxxxx |
instanceId | String | 是 | 智能體實例的唯一ID | 39f8e0bc005e4f309379701645f4**** |
event | String | 是 | 事件類型:
| agent_start |
code | String | 是 | 服務(wù)狀態(tài)碼 | 1001 |
message | String | 是 | 具體回調(diào)信息 | User has been kicked from the room |
timestamp | String | 是 | 時間戳,表示回調(diào)事件的發(fā)生時間 | 2023-10-01T12:00:00Z |
userData | String | 否 | 用戶自定義信息 | |
extendData | String | 否 | 定制化擴展信息 | |
| String | 否 | 房間ID信息 | 123 |
| Int | 否 | 問答ID信息 說明 對于用戶的同一次提問,智能體回答會使用相同的ID信息。 | 3 |
| String | 否 |
| 2024-11-16T14:27:11.892111+00:00 |
| String | 否 |
| 2024-11-16T14:27:11.936321+00:00 |
消息體示例:
{
"aiAgentId":"0d31c************b3c787",
"instanceId":"39f8e0bc005e4f309379*********",
"event":"agent_start",
"code":1001,
"message":"User has been kicked from the room",
"timestamp":"2023-10-01T12:00:00Z"
}
Server 示例
Python
from aiohttp import web
import json
from loguru import logger
async def handle_post(request):
"""
處理POST請求并記錄接收到的數(shù)據(jù)。
"""
# 獲取請求頭中的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:
# 從請求體中獲取數(shù)據(jù)
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解析失敗,則返回錯誤響應(yīng)
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)
回調(diào)事件狀態(tài)碼
狀態(tài)碼 | 回調(diào)事件 | 回調(diào)信息 |
1001 | 智能體啟動 | AI Agent starts. |
1002 | 智能體終止 | AI Agent ends. |
1003 | 會話建立 | Session starts |
4001 | 數(shù)字人并發(fā)路數(shù)超額 | Concurrent routes exhausted |
4002 | 智能體被踢出房間 | User has been kicked from the room |
4003 | 智能體token有誤 | Invalid token for the AI agent |
4004 | 智能體訂閱音頻流失敗 | Failed to pull stream for the AI agent |
4005 | 第三方ASR失敗 | error description |
4006 | 數(shù)字人服務(wù)不可用 | Avatar service is not available |
8001 | Intent recognized event | |
8002 | LLM data received event | |
8003 | TTS data received event |