Skip to main content

Перевод на человека

Цель модуля: корректно отдать разговор администратору — и предусмотреть, что тот не ответит.
Инспектор узла Transfer: слепой и тёплый перевод, SIP-настройки, брифинг и удержание

Transfer, тёплый перевод: назначение, метод SIP, лимит дозвона, отображаемый номер, свои X-заголовки, брифинг для принимающего и то, что слышит клиент на удержании.

Инспектор узла Transfer: слепой и тёплый перевод, SIP-настройки, брифинг и удержание
Брифинг бывает двух видов: фиксированный текст или сгенерированный моделью по вашему указанию — «кратко перескажи: кто звонит, какой визит, суть просьбы». Клиент этого не слышит. На удержании можно оставить тишину, музыку или фразу — тишина в трубке воспринимается как разрыв, поэтому фраза лучше.

Фраза перед переводом

«Соединяю вас со специалистом, оставайтесь на линии» говорит сам узел Transfer — отдельный узел разговора перед ним не нужен. Тумблер «Говорить фразу перед переводом» стоит в инспекторе после настроек перевода; под ним тот же выбор, что у брифинга: фиксированный текст с подстановкой переменных или инструкция модели. Перевод начинается только после того, как фраза прозвучала целиком — и при слепом переводе, и при тёплом, и при переводе на другого агента. По умолчанию тумблер выключен. Галочка «Не перебивать эту фразу» под полем делает реплику непрерываемой. Она относится ко всем репликам узла — к фразе перед переводом, к реплике вне графика операторов и к фразе при неудаче перевода: настройка про узел, а не про отдельную фразу.
Секция «Фраза перед переводом» в инспекторе узла Transfer

Секция «Фраза перед переводом» в инспекторе Transfer: тумблер, выбор между фиксированным текстом и промптом, поле реплики с подстановкой переменных и галочка «Не перебивать эту фразу».

Фиксированный текст дешевле инструкции. Инструкция модели — это обращение к ней в самый чувствительный момент, между решением перевести и соединением: абонент ждёт дольше. Фиксированная фраза, наоборот, попадает в кэш синтеза и звучит мгновенно. Инструкцию берите, когда фраза должна учитывать разговор («сошлись на том, о чём человек только что попросил»).
Вне графика работы операторов фраза не звучит — там своя реплика: обещать соединение, которого не будет, незачем. А если реплику по инструкции не удалось сгенерировать, перевод всё равно начнётся: молчание — не повод не переводить.

По какой линии уходит перевод

Перевод идёт не по настройкам исходящего обзвона: у транка для него есть отдельное направление — сабгруппы перевода со своими номерами, лимитами и разрешёнными направлениями (см. Телефонию). В узле поле линии — это список: пункт «по умолчанию» и доступные вам сабгруппы перевода. Цифры руками не вписываются.
  • «По умолчанию» — линия исходящего звонка, затем линия по умолчанию у транка, затем единственная, если она одна.
  • Выбранная сабгруппа перевода — с неё берётся всё: номер, лимиты, разрешённые направления, форма адреса.
Линию перевода сначала заводят на стороне телефонии, и только потом выбирают в узле. Пока этого не сделано, оператор просто не получит звонок, а снаружи это выглядит как «перевод не работает». Если вы настраиваете переводы впервые — согласуйте линию с теми, кто ведёт вашу телефонию, до правки сценария.Если выбранная сабгруппа для этого звонка недоступна — например, агент переехал на другой транк, — перевод всё равно состоится по линии по умолчанию, а в истории звонка появится строка о подмене. Это лучше молчаливого отказа, но настройку стоит поправить.
Если в узле префикс вписан руками, значение показывается только для чтения, а валидатор помечает его предупреждением. Это подсказка перевести узел на сабгруппу перевода, а не ошибка.

График работы операторов

Секция графика работы операторов в инспекторе узла Transfer

Секция «График работы операторов» в инспекторе Transfer: тумблер, часовой пояс операторов с подстановкой зоны организации, строки «дни + с/до», запрет перевода за 5 минут до закрытия и реплика вне графика. В подсказках подстановки видны переменные ближайшего открытия.

Перевод не обязан идти круглосуточно. В секции «График работы операторов» тумблер «Переводить только в рабочее время» включает расписание узла: часовой пояс операторов (подставляется зона организации — меняйте, если контакт-центр в другой), строки «дни + с/до» и галочка «Не переводить за 5 минут до закрытия» — чтобы не отдавать абонента тому, кто уже собрался домой. Интервал через полночь задаётся двумя строками; включённый график без строк не публикуется. Вне графика узел не начинает перевод: {{transfer_status}} становится out_of_hours, {{transfer_success}}false, а время ближайшего открытия попадает в {{transfer_next_open_time}} и {{transfer_next_open_date}} (есть ещё {{transfer_next_open_iso}} и {{transfer_next_open_epoch}} — для Function и Code). В блоке «Что сказать вне графика» задаётся реплика: фиксированный текст с подстановкой — «Операторы работают до 21:00, перезвоните после {{transfer_next_open_time}}» — или инструкция модели. Пустое поле означает, что узел промолчит и просто уйдёт по переходу. В истории звонка такой случай виден как событие перевода со статусом «пропущен» и причиной «Вне графика работы» — то есть в отчёте он не смешивается с недозвонами до оператора.
Грабли: график без маршрута — тупикВключить график и не предусмотреть переход на этот случай легко — тогда звонок вне окна упирается в тупик. Валидатор об этом предупреждает: нужен либо Default, либо условие {{transfer_status}} == "out_of_hours". Ведите его в узел, который извинится и предложит перезвонить, а не в тишину.
Расписание считает сам узел — узнавать время внешним запросом через Function и разбирать «09:00–21:00» кодом для этого не нужно. Для остальных проверок времени в песочнице Code есть часы now("Asia/Almaty") — см. модуль 06. Переменные.

Где заканчивается звонок и где — запись

Разговор с агентом заканчивается в момент передачи клиента живому оператору. Там же заканчиваются и длительность звонка в истории, и запись: при тёплом переводе это момент удержания, при слепом — начало дозвона. Дальнейший разговор клиента с оператором в длительность звонка не входит — иначе два логически одинаковых перевода давали бы в отчёте разные числа. В секции «Запись разговора» узла Transfer есть галочка «Продолжать запись после перевода» — по умолчанию выключена. Включите её, если сценарию нужна и часть с живым оператором: тогда запись окажется длиннее звонка, и это осознанный выбор — не забудьте про требования к записи разговоров и про предупреждение абонента.
Приватный брифинг оператору в транскрипте помечен отдельно («Briefing to operator») — абонент его не слышал. При выключенной галочке в запись он тоже не попадает.
Грабли: успешный перевод терминален, неуспешный — нетЕсли перевод удался, диалог для агента закончен. А переходы узла Transfer — это маршруты неуспеха: администратор занят, не ответил, номер недоступен. Узел без такого перехода означает «клиент слушает тишину и кладёт трубку». Всегда ведите Default в узел вида «сейчас занято, перезвоним в течение часа».
Практика для нашего контураЗаголовки X-* — способ передать в телефонию контекст: имя клиента, номер заявки, id разговора. Если в контакт-центре есть карточка клиента, договоритесь с телефонией об этих полях заранее — потом это экономит десятки секунд на каждом переводе.

Когда перевод не удался

Фраза вместо тишины

Если перевод сорвался, а сценарию сказать нечего — нет маршрута неуспеха или он ведёт в молчаливое завершение, — абонент слушает мёртвый эфир, пока сам не положит трубку. На этот случай есть «Фраза при неудаче перевода» в настройках агента, в разделе управления звонком: фиксированный текст или инструкция модели. Пустое поле означает молчаливое завершение. Фраза не возвращает разговор в сценарий: она звучит, и звонок заканчивается. Вернуть человека в диалог — работа маршрута неуспеха, потому что «занято» и «номер недоступен» заслуживают разных слов. Валидатор предупреждает и о втором варианте той же беды: маршруты неуспеха есть, но каждый ведёт в молчаливое завершение. Предупреждение публикацию не блокирует и снимается, как только фраза задана.

Почему не удался — видно сразу

Причина неуспеха записана в двух местах:
  • в истории звонка — у события перевода, отдельной строкой: занято, не ответил, отказ телефонии, вне графика;
  • в переменной {{transfer_failure_reason}} рядом с {{transfer_status}} — по ней можно развести маршруты неуспеха и отдать причину во внешнюю систему вебхуком.
Оператору звонят один раз. Если абонент говорит поверх фразы перед переводом, узел на время перевода закрыт: реплика абонента пишется в историю, но никуда не ведёт, а повторный запрос отклоняется.

Перевод не на человека, а на другого агента

Назначением перевода может быть не только номер или SIP-адрес, но и другой опубликованный агент — типичный случай — «переключение на язык»: англоязычный агент отдаёт разговор испаноязычному. Продолжение идёт целиком на настройках целевого агента: его голос и модель синтеза, его язык распознавания, его напоминания о тишине и слова поддакивания, его ограничения управления звонком. Таймеры тишины начинают отсчёт заново — от первой реплики нового агента, а не от начала звонка. Работает во всех каналах, а не только в телефонном звонке: звонок с сайта, голосовой тест в кабинете, чат и WhatsApp.