이제 Agent Assist는 Agent Assist를 시스템에 통합할 수 있는 즉시 사용 가능한 옵션인 백엔드 모듈을 제공합니다. 백엔드 모듈에는 Cloud Pub/Sub 인터셉터 서비스와 UI 커넥터 서비스가 포함됩니다. 인터셉터는 Cloud Pub/Sub 주제를 사용하여 Dialogflow의 기능 관련 이벤트 알림을 처리한 후 UI 커넥터가 이를 상담사 데스크톱 UI로 푸시합니다. UI 커넥터는 상담사 데스크톱의 의견 신호도 지원하고 이를 Dialogflow로 전송합니다.
백엔드 모듈 구조
백엔드 모듈 구성요소
백엔드 모듈은 Agent Assist를 시스템에 통합하기 위해 다음 Google 제품이 필요합니다.
- Cloud Pub/Sub
- Cloud Pub/Sub 인터셉터
- Redis용 Memorystore
- UI 커넥터
Cloud Pub/Sub
Cloud Pub/Sub 주제는 대화 프로필에서 구성됩니다.
그러면 Agent Assist가 추천, 새 메시지, 새 인식 결과 알림, 대화 수명 주기 관련 이벤트를 주제에 게시합니다. 추천은 HumanAgentAssistantEvent
형식이며 새 메시지와 대화 수명 주기 이벤트는 모두 ConversationEvent
형식입니다.
대화 프로필마다 이러한 4가지 종류의 이벤트 메시지가 서로 다른 주제에 게시됩니다. 예를 들어 대화 수명 주기 이벤트 메시지는 대화 시작을 나타내는 {"conversation":"projects/your-project-id/locations/global/conversations/your-conversation-id","type":"CONVERSATION_STARTED"}
일 수 있습니다.
Cloud Pub/Sub 인터셉터
Cloud Pub/Sub 인터셉터는 Cloud Run에 배포됩니다. 이 Cloud Run 서비스의 각 컨테이너 인스턴스 (서버)의 기능은 다음을 비롯하여 다른 인스턴스와 동일합니다.
- HTTP 요청을 사용하여 Cloud Pub/Sub 주제에서 게시한 이벤트 메시지를 처리합니다.
- 대화 이름 및 UI 커넥터 서버 ID에 따라 Redis Pub/Sub 채널에 수신된 메시지 게시 채널 형식은
{connector_id}:{conversation_name}
입니다.
Redis
Redis는 Redis용 Memorystore를 사용하여 다음 작업을 실행합니다.
- 매핑
<conversation_name, connector_id>
에 각 대화의 UI 커넥터 서버 ID 정보를 기록합니다. - Redis Pub/Sub 메커니즘을 사용하여 Cloud Pub/Sub 인터셉터가 게시한 이벤트 알림을 상응하는 UI 커넥터 서버로 전달합니다.
UI 커넥터
UI 커넥터는 RESTful Dialogflow API 프록시와 SocketIO WebSocket 엔드포인트를 노출하여 Agent Assist에서 발생한 Dialogflow 메시지를 스트리밍하는 애플리케이션입니다.
UI 커넥터는 Cloud Run에 배포됩니다.
WebSocket 연결은 스테이트풀(Stateful)이므로 상담사 데스크톱은 연결 수명 동안 Cloud Run의 동일한 컨테이너에 계속 연결을 유지합니다. 따라서 모든 UI 커넥터 서버는 서로 다른 대화를 처리하고 처리하는 대화에 대해 고유한 Redis Pub/Sub 채널 ({connector_id}:*
)을 구독합니다. 각 UI 커넥터 서버의 작업:
- 상담사 데스크톱에 맞춤설정된 인증 방법을 지원합니다.
- 상담사 데스크톱의 맞춤설정된 토큰을 인증한 후 임시 JWT를 생성합니다. Dialogflow API 또는 WebSocket 연결에 요청을 전송할 때 UI 커넥터는 원래 상담사 토큰을 확인하는 대신 첨부된 JWT를 확인합니다.
- 지정된 대화 이름을 기반으로 인증된 상담사 데스크톱과 SocketIO WebSocket 연결을 설정합니다.
- 처리하는 대화의 Redis Pub/Sub 채널에 이벤트 메시지를 구독합니다.
- 수신되는 대로 Agent Assist 이벤트를 데스크톱 UI에 푸시합니다.
Secret Manager
UI 커넥터는 인증된 상담사 데스크톱의 임시 JWT를 생성하기 위해 JWT 보안 비밀 키가 필요합니다. 이 보안 비밀 키는 Secret Manager에 저장됩니다.
디렉터리
다음은 코드 저장소의 디렉터리 구조 개요입니다. 저장소에 액세스할 수 없는 경우 Google 담당자에게 권한을 요청하세요.
. ├── cloud-pubsub-interceptor │ ├── Dockerfile: Builds Docker image for Cloud Pub/Sub interceptor deployment on Cloud Run. │ ├── main.py: A starter for flask app. │ ├── requirements.txt │ └── unit_test.py: Unit test code for Cloud Pub/Sub interceptor. └── ui-connector ├── auth.py: Handles JWT validation and registration. ├── config.py: Configures variables about authentication, logging and CORS origins. ├── dialogflow.py: Includes Dialogflow utilities for handling conversations at runtime. ├── Dockerfile: Builds Docker image for UI connector deployment on Cloud Run. ├── main.py: A starter for flask app. ├── requirements.txt ├── templates │ └── index.html: A simple interactive demo. └── unit_test.py: Unit test code for UI connector.
다음 단계
이 통합 방법을 시작하는 방법에 관한 자세한 내용은 백엔드 모듈 설치 가이드를 참고하세요.