Маршрутизация повторных обращений тому же оператору: контакт, заявка и мобильное устройство

Обзор

В этом руководстве показано, как настроить маршрутизацию, чтобы при каждом повторном вызове или обращении в чат клиент соединялся с наиболее подходящим оператором. Это помогает сохранять преемственность обслуживания и повышать удовлетворенность клиентов: они снова общаются с человеком, уже знакомым с их вопросом.

В Cloud Contact есть встроенный способ направлять повторное обращение клиента оператору, который обрабатывал его последнее обращение. Для этого используется переменная сценария $(item.continuationUserId). Если этого способа недостаточно, можно использовать три описанных ниже варианта собственной маршрутизации.

Сценарии для скачивания

Вы можете скачать готовые сценарии из этого руководства. Сценарии для третьего способа приведены в разделе Способ 3 ниже. Это примеры, не предназначенные для использования в рабочей среде.

После скачивания:

  1. Откройте Администратор контакт-центра > Сценарии (Contact Center Administrator > Scenarios).
  2. Нажмите Импортировать сценарий (Import Scenario).
  3. Загрузите файл и откройте сценарий, чтобы изучить настройки.

Три способа собственной маршрутизации

1. По записи контакта: сохранить последнего оператора, обслуживавшего клиента.

2. По ответственному за заявку: направлять обращение оператору, назначенному открытой или недавней заявке.

3. При звонке на номер компании направлять клиента оператору, который ранее связывался с ним.

Общая схема маршрутизации для всех трех способов

После определения идентификатора нужного оператора сценарий должен выполнять примерно следующую логику:

1. Проверить, вошел ли нужный оператор в систему и доступен ли он.

2. Если доступен, направить обращение ему.

3. Если недоступен, применить маршрутизацию по команде или навыку: использовать навык, соответствующий команде оператора.

4. Если нет доступных операторов с этим навыком, применить обычную маршрутизацию при переполнении или другой резервный путь.

Маршрутизация Cloud Contact основана на навыках. Поэтому для резервного направления к команде ее нужно представить навыком и группой навыков: напрямую выбирать команду как условие маршрутизации нельзя.

Способ 1. Маршрутизация по связи с оператором на уровне контакта

Иногда организации нужно точнее управлять определением предыдущего оператора. Например, применять собственный временной интервал или сохранять историю маршрутизации для нескольких типов обращений.

В таком случае сценарий может сохранять сведения об операторе в пользовательских полях контакта и использовать их для маршрутизации.

Описанный ниже способ использует историю действий контакта, чтобы направлять повторные обращения последнему оператору. Используйте его, если стандартного продолжения обслуживания (Service Continuation) недостаточно.

Практическая задача

Когда клиент, уже обращавшийся в организацию, связывается с ней снова, обращение можно предложить оператору, который последним обслуживал клиента или пытался это сделать, если соответствующее обращение произошло в заданный период. Это сохраняет преемственность, избавляет клиента от повторных объяснений и делает обслуживание более персональным.

Как работает этот способ

1. Система определяет клиента по доступным идентификаторам, например номеру телефона или идентификатору в чате. Контакты могут определяться автоматически через настройки идентификации Cloud Contact: входящие обращения сопоставляются с внутренней базой контактов или настроенными внешними базами данных.

2. В истории действий контакта определяется последний ответственный оператор и время подходящего обращения.

3. Если последнее обращение попадает в настроенный временной интервал, система пытается направить новое обращение этому оператору.

4. Если оператор недоступен, применяется резервная маршрутизация по навыкам.

Шаг 1. Создайте пользовательские поля контакта

В разделе Администратор контакт-центра > Управление заявками и контактами > Пользовательские поля (Contact Center Administrator > Case & Contact Management > Custom Fields) создайте, например, такие поля:

  • Last Agent ID — идентификатор последнего оператора (текст)
  • Last Agent Interaction Time — время последнего обращения к оператору (дата и время)

Создайте пользовательские поля для дальнейшей маршрутизации.

Эти поля хранят последнюю подходящую связь контакта с оператором. Обычно сведения берутся из записей действий, связанных с контактом, и записываются логикой сценария или интеграции.

Шаг 2. Определите, какие действия обновляют сведения о последнем операторе

Последний оператор для маршрутизации должен определяться по самому недавнему подходящему действию, связанному с контактом. В зависимости от требований к таким действиям могут относиться:

  • Входящие обращения, обработанные оператором.
  • Попытки исходящих вызовов вручную, выполненные оператором, независимо от ответа.
  • Попытки вызовов в кампаниях Preview, независимо от ответа.

После подходящего действия обновите поля контакта, записав:

  • Идентификатор обслуживавшего оператора.
  • Дату и время обращения.

Так последняя подходящая связь с оператором становится доступна для последующей маршрутизации.

Логика сценария для маршрутизации к оператору по контакту

Следующий сценарий показывает один из вариантов реализации. В рабочей среде могут потребоваться дополнительные выходы и обработка ошибок. Входящий сценарий должен следовать такой схеме:

1. Попробовать определить клиента по номеру телефона или другим доступным идентификаторам.

В большинстве сценариев Cloud Contact автоматически определяет контакт встроенными способами идентификации: например, по ANI для голосового вызова или идентификатору мессенджера для чата.

Если нужна дополнительная или собственная логика идентификации, блок Определить контакт (Identify Contact) позволяет искать контакт по конкретному идентификатору: номеру телефона, идентификатору мессенджера или пользовательскому полю контакта.

Если Identify Contact присутствует в любой части сценария, автоматическая идентификация контакта для него отключается. В таком случае контакт нужно явно определять этим блоком во всех ветвях сценария.

Блок Identify Contact используется, когда нужна собственная логика идентификации контакта.

2. Если контакт не найден, используйте ветвь выхода «Не найдено» (not found) блока Определить контакт (Identify Contact):

  1. Направьте клиента любому оператору с помощью обычной маршрутизации. После обращения получите идентификатор обслуживавшего оператора ($(user.id)) и время обращения ($(system.dateTime))
  2. Используйте блок Создать объект (Create Object), чтобы создать новый объект Contact в базе данных. Заполните:
    • Тип объекта: Contact
    • Поля контакта (Contact fields): доступные данные клиента, например имя, фамилию, номер телефона и адрес электронной почты.
    • Идентификатор последнего оператора (Last Agent ID): ($(user.id))
    • Время последнего обращения к оператору (Last Agent Interaction time): ($(system.dateTime))
Если контакт не найден, сохраните идентификатор оператора и время обращения в записи контакта.

3. Если контакт найден, но сведения о последнем операторе отсутствуют:

  • Используйте блок Условие (If), чтобы проверить, связаны ли с контактом сведения о последнем операторе.
  • Если сведения отсутствуют, обработайте обращение с помощью обычной маршрутизации.
  • После обращения получите идентификатор обслуживавшего оператора ($(user.id)) и время обращения ($(system.dateTime)).
  • Используйте блок Обновить объект (Update Object) для записи этих значений в контакт в базе данных. Заполните следующие свойства:
    • Тип объекта: Contact
    • Идентификатор записи (Record ID): идентификатор существующей записи контакта, обычно возвращаемый предыдущим блоком Определить контакт (Identify Contact).
    • Идентификатор последнего оператора (Last Agent ID): ($(user.id))
    • Время последнего обращения к оператору (Last Agent Interaction Time): ($(system.dateTime))

Если сведения о последнем операторе не найдены, используйте Update Object, чтобы сохранить идентификатор оператора и время обращения в записи контакта.

4. Если контакт найден и сведения о последнем операторе есть:

  • Проверьте, попадает ли предыдущее обращение в разрешенный временной интервал (см. шаг 3 ниже).
  • Если нет, продолжите обычную маршрутизацию.
  • Если да, попробуйте направить обращение сохраненному оператору.

Направьте обращение сохраненному оператору с помощью блоков Найти оператора (Find Agent) и Соединить вызов (Connect Call). Настройте Требуемые навыки оператора (Agent Skills Required) в блоке Найти оператора (Find Agent), выбрав Конкретный оператор (specific agent) в качестве условия ожидания и выполнив поиск по $(contact.LastAgentID). Подробнее см. маршрутизацию к конкретному оператору.

Шаг 3. Задайте временной интервал для повторного соединения с оператором

Маршрутизацию к конкретному оператору следует применять, только если предыдущее обращение достаточно недавнее и сохраняет актуальность.

Во входящем сценарии:

1. Получите Last Agent Interaction Time из контакта через переменную $(contact.LastInteractionTime)

2. Сравните его с текущими датой и временем с помощью переменной $(system.dateTime)

3. Если обращение старше заданного порога, например 24 часов, пропустите маршрутизацию к конкретному оператору и примените обычную логику. Для этого можно использовать блок Условие (If) с двумя ветвями:

  • Если предыдущее обращение попадает в разрешенный интервал:
    • Направить клиента сохраненному оператору.
  • Если предыдущее обращение находится за пределами интервала:
    • Применить обычную маршрутизацию, чтобы соединить клиента с любым доступным оператором.

На иллюстрациях ниже блок Условие (If) настроен для сравнения текущего времени со временем последнего обращения клиента с помощью переменных $(system.dateTime) и $(contact.LastInteractionTime). Если прошло меньше заданного порога, то есть 24 часов, сценарий направляет обращение последнему оператору. Иначе применяется стандартная маршрутизация.

Блок If проверяет, достаточно ли недавно произошло последнее обращение.
Условие Yes: с последнего обращения прошло меньше 24 часов (86400 секунд).

Шаг 4. Направьте обращение последнему оператору

Если идентификатор последнего оператора есть и обращение попадает в разрешенный интервал, направьте новое обращение сохраненному оператору с помощью условия ожидания specific agent блока Найти оператора (Find Agent).

Найдите сохраненного оператора по LastAgentID в записи контакта.

Шаг 5. Настройте резервную маршрутизацию

Принадлежность к команде недоступна как условие маршрутизации в блоке Найти оператора (Find Agent). Поэтому, если предпочтительный оператор недоступен, сценарий должен перейти к одному из резервных вариантов.

Сначала настройте блок Найти оператора (Find Agent) для поиска сохраненного оператора по идентификатору пользователя (User ID) и задайте параметр Интервал (Interval), определяющий, сколько времени ждать доступности этого оператора. Если за этот интервал оператор не станет доступен, используйте соответствующий условный выход для перехода к выбранной резервной маршрутизации. Возможны следующие варианты:

Направление по навыку, соответствующему команде оператора

Создайте по одному навыку для каждой команды, назначьте соответствующий навык ее операторам и направляйте обращение по этому навыку в сценарии. Подробнее см. назначение навыков операторам. Так обращение предлагается операторам одной рабочей группы, хотя реализуется это через навыки, а не прямую маршрутизацию по команде.

Направление в общую очередь или применение стандартной логики

Если после неудачной попытки соединения с предпочтительным оператором персональная маршрутизация больше не нужна, сценарий может продолжить обычный путь через сервис, очередь или обработку переполнения.

Требования и ограничения идентификации

Повторное соединение с оператором работает только тогда, когда система может однозначно связать обращение с одной записью контакта.

Если один номер телефона или другой идентификатор указан у нескольких контактов, система может не определить последнего ответственного оператора и применит стандартную маршрутизацию.

Актуальные данные контактов без дубликатов повышают эффективность этого способа.

Если совпадение не найдено, можно создать контакт, но повторное соединение с оператором станет возможным только после сохранения сведений об операторе в контакте этого клиента.

Способ 2. Маршрутизация по ответственному за заявку

Этот способ направляет клиента оператору, назначенному открытой или недавней заявке, связанной с контактом. Если у клиента есть текущая заявка в службу поддержки и он обращается снова, его можно сразу соединить с ответственным оператором.

Шаг 1. Определите контакт

Как и при использовании способа 1, сопоставьте входящее обращение с существующим контактом по номеру телефона или другому идентификатору.

Шаг 2. Найдите подходящие заявки

С помощью интеграции с CRM или системой управления заявками:

1. Найдите открытые или недавние заявки, связанные с контактом. Например, после определения контакта блок Найти объект Cloud Contact может найти во внутренней базе данных записи Заявка (Case), в которых Reporter ID совпадает с идентификатором контакта, а Status равен «Open». Блок возвращает нужные поля заявки, например назначенного оператора, в набор записей для дальнейшей маршрутизации.

Например, чтобы найти открытые заявки определенного контакта:

  1. Добавьте блок Найти объект Cloud Contact.
  2. Задайте для параметра «Тип объекта» (Object type) значение Заявка (Case).
  3. Добавьте условия поиска, например:
    • Идентификатор заявителя (Reporter ID) = $(contact.id)
    • Статус (Status) = Open
  4. Добавьте возвращаемые поля (Return fields) для значений, которые понадобятся далее, например:
    • идентификатор заявки (case ID)
    • идентификатор назначенного оператора или поле владельца
    • статус (status)
  5. Задайте имя набора записей (Recordset name), например: openCases

Поиск открытых заявок блоком Cloud Contact Search Object.

2. Выберите наиболее подходящую заявку, например открытую заявку, обновленную последней. Добавьте Assigned Agent ID в Return fields блока Search Object и используйте возвращенное значение как идентификатор нужного оператора.

Этот оператор становится первым кандидатом для маршрутизации.

Шаг 3. Примените стандартную логику маршрутизации

Используйте блок Условие (If), чтобы проверить, назначен ли заявке оператор.

1. Если назначенный оператор найден:

  • Попробуйте направить обращение ему напрямую.

2. Если назначенный оператор недоступен:

  • Настройте резервную маршрутизацию к его команде или в общую очередь. Подробнее см. способ 1, шаг 5.

3. Если подходящая заявка или назначенный оператор не найдены:

  • Примените маршрутизацию по умолчанию.

Блок If проверяет, назначен ли уже оператор.

Способ 3. При звонке на номер компании направляйте клиента оператору, который ранее связывался с ним

Этот способ часто используется, когда выездные специалисты совершают исходящие вызовы с мобильных устройств через телефонную систему компании, поэтому клиент видит основной номер компании. Если клиент пропустит вызов и позже перезвонит на этот номер, сценарий определит предыдущего оператора и направит вызов тому же специалисту вместо общей очереди. Для этого используются два сценария: первый сохраняет идентификатор специалиста в контакте, второй использует его для направления ответного вызова тому же специалисту.

Сценарии для скачивания

Шаг 1. Сохраните сведения о выездном специалисте при исходящем вызове

Для маршрутизации ответного вызова система сначала должна сохранить идентификатор специалиста, который совершил исходящий вызов.

1. Убедитесь, что вызываемый клиент связан с записью контакта во внутренней базе данных.

2. При исходящем вызове через телефонную систему компании получите идентификатор пользователя специалиста.

3. Сохраните его в пользовательском поле контакта, например Идентификатор последнего оператора (Last Agent ID)

5. Используйте блок Создать объект (Create Object), если запись контакта еще не существует, или блок Обновить объект (Update Object), если контакт уже есть. Настройте следующие свойства:

  • Тип объекта: Contact
  • Идентификатор записи (Record ID): идентификатор найденного контакта при обновлении существующей записи.
  • Идентификатор последнего оператора (Last Agent ID): $(user.id)
  • Время последнего обращения к оператору (Last Agent Interaction Time): $(system.dateTime)

Сохраните идентификатор специалиста и время обращения в записи контакта.

Шаг 2. Определите клиента при ответном вызове

Когда клиент позже звонит на основной номер компании:

1. Определите запись контакта по номеру вызывающего абонента.

2. Получите сохраненное значение поля «Last Agent ID» из этого контакта.

3. При необходимости получите сохраненное значение поля «Last Agent Interaction Time», чтобы ограничить маршрутизацию давностью обращения.

4. Если контакт не найден или идентификатор специалиста отсутствует, примените обычную маршрутизацию.

Используйте Identify Contact и If для правильной маршрутизации повторного обращения.

Шаг 3. Попробуйте направить вызов специалисту

1. Используйте блок Найти оператора (Find Agent) для поиска сохраненного специалиста по User ID.

2. Настройте ожидание этого оператора в течение нужного интервала.

3. Если специалист станет доступен, направьте ответный вызов ему.

Используйте условие ожидания specific agent блока Find Agent и ищите по contact.LastAgentID.

Шаг 4. Настройте резервную маршрутизацию

1. Если специалист недоступен, перейдите к резервному пути. Используйте навык соответствующей группы выездной поддержки или обычный путь через очередь и обработку переполнения.

2. Если подходящие резервные операторы недоступны, примените стандартную маршрутизацию.

Итоги

Все три способа используют один общий подход. Они различаются источником сведений о нужном операторе:

Способ Источник сведений об операторе
Связь на уровне контакта Пользовательские поля контакта
Маршрутизация по заявке Оператор, назначенный открытой или недавней заявке
Сценарий для выездных или мобильных специалистов Оператор, связанный с контактом после исходящего вызова выездного специалиста

Выбрав способ, подходящий вашему рабочему процессу, можно сделать обслуживание более персональным и эффективным, сохранив надежную резервную маршрутизацию на случай недоступности конкретного оператора.

|