봇에서 실시간 에이전트로 트랜스퍼

사용자가 에이전트와 통신할 때 에이전트가 자신을 표현하는 방법과 수신하는 메시지를 작성하는 사람에 대한 기대치가 설정됩니다. 에이전트가 메시지를 전송할 때마다 자동(BOT) 또는 실시간 에이전트(HUMAN) 대표가 메시지를 작성했는지 식별할 수 있습니다. 사용자는 대화 내에서 이 정보를 볼 수 있으며 이를 통해 사용자는 특정 시점에 어떤 상호작용을 기대할 수 있는지 이해할 수 있습니다.

상담사가 BOTHUMAN 담당자를 모두 지원하는 경우 둘을 전환할 때 컨텍스트를 제공하는 것이 중요합니다. BOT에서 HUMAN 담당자로 전환할 때는 HUMAN 담당자로부터 메시지를 전송하기 전에 REPRESENTATIVE_JOINED 이벤트를 전송하고, 실시간 에이전트의 모든 메시지에 HUMAN 담당자로부터 라벨을 지정합니다. 실제 상담사가 대화를 종료하면 REPRESENTATIVE_LEFT 이벤트를 전송합니다. 이러한 프레이밍 이벤트는 사용자에게 보다 복잡한 질문을 하고 더 많은 자유 형식 응답을 기대할 수 있음을 알립니다.

이 대화 흐름에서 사용자의 첫 번째 상호작용은 자동 응답자와 상호작용하여 메시지를 BOT 담당자로 보내지만, 실시간 상담사가 대화에 참여하여 HUMAN 담당자로 메시지를 전송합니다. 실시간 에이전트 메시지는 REPRESENTATIVE_JOINEDREPRESENTATIVE_LEFT 이벤트로 프레이밍됩니다.

  1. 사용자가 상담사와 대화를 시작합니다.
  2. 사용자가 응답을 입력하기 시작하면 에이전트에 입력 이벤트가 전송됩니다.

    {
      "agent": "brands/1111/agents/2222",
      "conversationId": "3333",
      "customAgentId": "live-agent-handoff",
      "requestId": "1234567890",
      "userStatus": {
        "isTyping": "true",
        "createTime": "2020-10-02T15:01:23.045123456Z",
      },
      "sendTime": "2020-10-02T15:01:24.045123456Z",
    }
    
  3. 사용자가 '안녕하세요. 문제가 있습니다.'라는 메시지를 보냅니다.

    {
      "agent": "brands/1111/agents/2222",
      "conversationId": "3333",
      "customAgentId": "live-agent-handoff",
      "requestId": "123123123",
      "message": {
        "messageId": "4444",
        "name": "conversations/12345/messages/67890",
        "text": "Hi, I have a problem",
        "createTime": "2020-10-02T15:05:23.045123456Z",
      },
      "context": {
        "entryPoint": "PLACESHEET",
        "userInfo": {
          "displayName": "Michael",
          "userDeviceLocale": "en",
        },
        "resolvedLocale": "en",
      }
      "sendTime": "2020-10-02T15:05:24.045123456Z",
    }
    
  4. 상담사가 문의해 주셔서 감사합니다. 실제 상담사가 나와 채팅할 수 있는 경우에는 BOT 담당자의 메시지로 이를 전달합니다.

    curl -X POST "https://businessmessages.googleapis.com/v1/conversations/3333/messages" \
    -H "Content-Type: application/json" \
    -H "`oauth2l header --json path/to/service/account/key.json businessmessages`" \
    -d "{
      'messageId': '5555',
      'text': 'Thanks for contacting us. I'll pass this along when a live agent is available to chat with you.',
      'representative': {
        'avatarImage': 'https://live.agent/bot-avatar.jpg',
        'displayName': 'Hello World Agent',
        'representativeType': 'BOT'
      }
    }"
    
  5. 실제 상담사가 통화 상태가 됩니다.

  6. 에이전트는 실시간 에이전트에서 첫 번째 메시지를 보내기 전에 REPRESENTATIVE_JOINED 이벤트를 전송합니다.

    curl -X POST "https://businessmessages.googleapis.com/v1/conversations/12345/events?eventId=6666" \
    -H "Content-Type: application/json" \
    -H "`oauth2l header --json /path/to/service/account/key.json businessmessages`" \
    -d "{
      'eventType': 'REPRESENTATIVE_JOINED',
      'representative': {
        'avatarImage': 'https://live.agent/human-avatar.jpg',
        'displayName': 'Jane Doe',
        'representativeType': 'HUMAN',
      },
    }"
    
  7. 상담사가 문제가 발생한 것 같습니다. HUMAN 담당자의 메시지로 어떻게 도움을 주면 좋을까요?

    curl -X POST "https://businessmessages.googleapis.com/v1/conversations/3333/messages" \
    -H "Content-Type: application/json" \
    -H "`oauth2l header --json path/to/service/account/key.json businessmessages`" \
    -d "{
      'messageId': '7777',
      'text': 'I see you have a problem. How can I help?',
      'representative': {
        'avatarImage': 'https://live.agent/human-avatar.jpg',
        'displayName': 'Jane Doe',
        'representativeType': 'HUMAN'
      }
    }"
    
  8. 사용자의 요청이 처리될 때까지 실제 에이전트와 사용자가 메시지를 교환합니다. 실시간 에이전트가 작성한 모든 메시지는 HUMAN 담당자에서 전송됩니다.

  9. 실시간 에이전트가 대화에서 나가는 경우 에이전트는 REPRESENTATIVE_LEFT 이벤트를 전송합니다.

    curl -X POST "https://businessmessages.googleapis.com/v1/conversations/12345/events?eventId=6666" \
    -H "Content-Type: application/json" \
    -H "`oauth2l header --json /path/to/service/account/key.json businessmessages`" \
    -d "{
      'eventType': 'REPRESENTATIVE_LEFT',
      'representative': {
        'avatarImage': 'https://live.agent/human-avatar.jpg',
        'displayName': 'Jane Doe',
        'representativeType': 'HUMAN',
      },
    }"
    
  10. 다른 실시간 에이전트가 대화에 참여하지 않는 한 에이전트는 BOT 담당자와 모든 후속 메시지를 보냅니다.