Переключение с бота на живого агента

Когда пользователи общаются с агентами, их ожидания определяются тем, как агент представляет себя и кто составляет сообщения, которые они получают. Каждый раз, когда агент отправляет сообщение, он может определить, кто составил сообщение: автоматизированный ( BOT ) или живой агент ( HUMAN ). Пользователи видят эту информацию в беседе, и это помогает пользователям понять, каких взаимодействий они могут ожидать в любой момент времени.

Если агент поддерживает представителей как BOT , так и HUMAN , важно предоставить контекст при переключении между ними. При переключении с BOT на представителя HUMAN отправьте событие REPRESENTATIVE_JOINED перед отправкой сообщений от представителя HUMAN и правильно пометьте все последующие сообщения от активных агентов как от представителей HUMAN . Когда активный агент покидает беседу, отправьте событие REPRESENTATIVE_LEFT . Эти кадрирующие события информируют пользователей о том, что они могут задавать более сложные вопросы и ожидать более произвольных ответов.

В этом потоке диалога пользователь в первую очередь взаимодействует с автоматическим ответчиком, который отправляет сообщения в качестве представителя BOT , но живой агент присоединяется к разговору и отправляет сообщения в качестве представителя HUMAN . Сообщения активного агента обрамляются событиями REPRESENTATIVE_JOINED и REPRESENTATIVE_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 , если к разговору не присоединится другой живой агент.