Русский
Русский
English
Статистика
Реклама

Блог компании neuro.net

Как мы развернули круглосуточную техническую поддержку с нуля всего за 1 год

15.04.2021 18:16:38 | Автор: admin

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

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

Начинаем с малого: ты, да я, да мы с тобой

Мы не собирались строить все из ничего, сходу создавая сложную структуру саппорта. Начали с малого в апреле 2020 года. Тогда мы пригласили тимлида и попросили его найти коллегу-инженера. Вместе они занимались решением технических вопросов, которые нужно было решать партнерам и клиентам. Чуть подробнее о том какие вопросы решались - ниже, в подразделе Диверсификация обязанностей. Ни о какой круглосуточной работе изначально не было и речи, это была стандартная пятидневка и график с 9:00 до 18:00.

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

Суббота и воскресенье? Работаем!

Через 2-3 месяца работы саппорта стало ясно, что клиентов и партнеров нужно поддерживать и по выходным. У бизнеса задачи не ограничиваются рабочей неделей, многие компании выполняют те либо иные задачи и тогда, когда все отдыхают.

В отделе технической поддержки на тот момент было уже 3 инженера и 1 тимлид. Задумались мы тогда и о круглосуточной поддержке, но эту идею пришлось отложить. Не потому, что организовать ее сложно, а потому, что это дорого.

Подсчитали, сколько еще людей нужно добрать, прокалькулировали связанные с расширением операционные расходы, посмотрели статистику звонков. Как оказалось, основной трафик идет по будням с 10:00 до 20:30, так что смысла оплачивать дополнительные 14 часов в день пока не было. Но вот субботу и воскресенье решили добавить.

Решение нашли быстро: недельный дежурный с дополнительной оплатой по выходным.

А теперь - диверсификация обязанностей

Компания росла, расширялся и отдел поддержки. Не очень быстро - к октябрю 2020 года количество сотрудников в нем достигло 6 человек. Это 1 тимлид и 5 инженеров.

Клиенты и партнеры саппортом были вполне довольны. Но задач, конечно, стало больше, увеличилось и их разнообразие. С течением времени мы стали замечать, что отдел сам по себе разделился на две части, как раз по типам решаемых задач. Условно это было разделение на "Help Desk" и на "мониторинг". Работа стала эффективнее, и мы уже официально разделили отдел на два подразделения:

  • Help Desk - 2 человека

  • Мониторинг - 3 человека

Единственное - тимлида разделить не удалось, поскольку он был один и не хотел, чтобы его делили. Пришлось оставить его как есть, с условием, чтобы он координировал работу всего отдела.

Задачи Help Desk:

  • Поддержка платформы и локализация ее проблем (ошибки API; кнопка работает не так, как должна; нет доступа и тд.).

  • Поддержка сервисов платформы и локализация проблем с ними (робот не звонит, вместо "привет" распознает "вечер, море, хочу в отпуск", тарабанит фразы как робот и становится не похож на человека).

  • Поддержка SIP-телефонии (сетевые проблемы телефонии).

  • Поддержка External API.

Задачи мониторинга:

  • Мониторинг сетевой инфраструктуры и своевременная реакция на возникающие проблемы (сервера, базы данных, сетевое оборудование).

  • Мониторинг коммерческого трафика и своевременная реакция на возникающие проблемы (прослушивание некоторого кол-ва звонков, отслеживание ключевых показателей проектов).

Спустя некоторое время оценили преимущества разделения:

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

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

  3. Задачи выстроились в стройную систему.

  4. Выходные можно закрывать без дежурного.

Последний пункт стоит немного пояснить. Дело в том, что на этом этапе мы отказались от дежурного в подразделении Help Desk. Вместо этого мы предложили подразделению мониторинга 7-часовой рабочий день по будням с тем, чтобы на выходные у сотрудников оставалось 10 дополнительных часов. Это решение обсуждалось вместе с сотрудниками, которые были не против. Схема простая: сначала один человек работает по 7 часов по будням и в выходные, потом второй, потом третий и так далее. Ну а затем - наша песня хороша, начинай сначала.

Ну привет, круглосуточная поддержка

Выше уже упоминалось, что круглосуточную поддержку мы не вводили, поскольку подавляющее большинство клиентов и партнеров обращались с вопросами в обычное время - с 10:00 до 20:30. Почему так? Все просто - те, с кем мы работали ранее, находились в одном с нами часовом поясе.

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

Сначала получалось так:

  1. Help Desk - c 9:00 до 18:00 по будням. Здесь пока что ничего не менялось.

  2. Мониторинг - 3 смены: 9:00-18:00 (2 человека), 14:00-21:00 (1 человек), 1:00-9:00 (1 человек, добрали позже из другого часового пояса на ГПХ).

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

Изначально выбирали из трех перспективных вариантов реализации полноценного круглосуточного саппорта:

  1. Три смены по 9 часов - утро, вечер, ночь.

  2. 2/2 по 12 часов

  3. Сутки через трое (Why not? как гипотеза подойдет)

По деньгам все варианты более-менее были равны, поэтому стали выбирать, исходя из потребностей и внешних факторов. Основных пунктов было четыре:

  1. Желание сохранить команду (многим не нравится сменный график, и в этом нельзя никого винить)

  2. Необходимость сделать оплату смен достойной (текучка кадров никому не нужна)

  3. Необходимость рассчитать количество сотрудников, которых нужно пригласить дополнительно.

  4. Поиск сотрудников.

Поразмыслив, мы решили оставить первый вариант - три смены по 9 часов. Почему так? Режим сутки через трое рассматривался просто как экзотичный вариант. Но работать 24 часа, а потом трое суток быть дома - на это соглашаются далеко не все, и это понятно. Суточные смены очень сложные.

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

Что было сразу, до глобального перехода на круглосуточную работу?

  1. Help Desk - 4 инженера.

  2. Мониторинг - 3 инженера + 1 инженер ночью.

Теперь решаем наши задачи:

Сохраняем команду - оставляем у всех все так, как есть сейчас. Пусть продолжают работу по стандартному графику - 9:00-18:00

Рассчитываем минимальное количество людей на смене - тут все зависит от нагрузки и трафика в вечер и ночь. В нашем случае достаточно по 1 человеку на ночную смену для каждого подразделения:

Итого нужно:

  1. Help Desk - 4 утро, 1 вечер, 1 ночь.

  2. Мониторинг - 3 утро, 1 вечер, 1 ночь.

После решения этой задачи приступаем уже к реализации. Набрасываем график с 18-20 обязательными сменами (естественно, его можно варьировать), чтобы был запас на больничные/отпуска и ребята могли добрать смен вплоть до 25+.

Где мы искали дополнительных сотрудников для вечерних и ночных смен? Да где и все, собственно - HH, Rabota, LinkedIn и др. Кстати, были даже попытки найти разработчиков на Tinder, но об этом уже в другой раз.

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

Подробнее..

Зачем нам потребовалось написать свою реализацию MRCP-сервера. Часть 1

30.04.2021 12:16:20 | Автор: admin

Привет, Хабр! Сегодня мы хотели бы поделиться кейсом создания собственного MRCP-сервера. Это протокол передачи данных, используемый серверами для предоставления различных услуг (таких как распознавание речи и синтез речи) для своих клиентов. MRCP опирается на другие протоколы, в частности, потоковый протокол реального времени (протокол RTSP) или протокол установления сеанса связи (протокол SIP) для установления и управления сеансом аудиопотоков между клиентом и сервером. О том, что нас привело к созданию собственной реализации этого сервера - под катом. Во второй части расскажем об особенностях своего проекта, с подробным разбором возможностей.

UniMRCP - хорошо, но может быть и лучше

Первая версия сервера была построена на UniMRCP. Почему? Да просто потому, что это стандарт, и практически его все и используют. Альтернативы практически нет.

UniMRCP - кроссплатформенное ПО с открытым исходным кодом, которое включает все необходимое для реализации функций MRCP-клиента и MRCP-сервера. Распространяется под лицензией Apache License 2.0. Все бы ничего, но при работе с UniMRCP у нас возникло несколько проблем.

Проблема 1. Дорого!

Если использовать просто сервер - то все отлично, но для наших целей был необходим плагин к серверу. Плагин называется UMS Transcribe Plugin, а нужен он для распознавания речи. Все бы ничего, но стоит он $50 за канал. А когда нужно несколько тысяч каналов, как в нашем случае, то такой вариант не очень подходит.

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

Проблема 2. Паузы

Для того, чтобы голосовой агент работал нормально и воспринимался собеседником без проблем, он должен моментально реагировать во время разговора. А в случае использования UniMRCP с этим возникали проблемы, которые мешали нормальному общению с собеседниками-людьми. Сложности появились даже в случае пауз в разговоре.

В документации говорится о назначении speech-complete-timeout - это время, после которого должен вернуться результат распознавания, если абонент молчит. В UniMRCP, как мы не пытались, мы не могли этим управлять. Наш собственный VAD к этому параметру восприимчив.

Пример запроса

MRCP/2.0 304 RECOGNIZE 1
Channel-Identifier: 230f4b33-fcdc-1239-d5a6-d00ddfa58be9@speechrecog
Content-Type: text/uri-list
Cancel-If-Queue: false
Recognition-Timeout: 30000
Start-Input-Timers: true
No-Input-Timeout: 5000
Speech-Complete-Timeout: 750
Content-Length: 25builtin:speech/transcribe

Параметром speech-complete-timeout управлять никак не удавалось - такое впечатление, что это просто не предусмотрено разработчиками. Единственный таймаут, который нормально работал в UniMRCP - это recognition-timeout.

Пример разговора (HR-сценарий)

Бот: Здравствуйте! Меня зовут Елена, звоню по поводу вашего резюме. Подскажите, предложение по вакансии актуально для вас?

Абонент: Да, здравствуйте

Бот: Смотрите, сейчас у нас открыта вакансия специалиста офиса продаж. В обязанности входит консультация абонентов, продажа оборудования и работа с кассой. Оформление идет полностью официальное, белая зарплата, средний уровень дохода N рублей, максимальный уровень практически не ограничен, есть возможность карьерного роста. График 5 рабочих дней с двумя плавающими выходными. Также предоставляем все социальные гарантии, дмс, бонусы и скидки от компании. Рассмотрите такие условия для себя?

Абонент: А еще раз, откуда вы звоните?

Бот: Это розничная сеть NNN

Абонент: А какой у вас график?

Бот: График работы формируется программой автоматически с учетом потока клиентов и нагрузки на офис с двумя плавающими выходными, то есть смены рабочие 6 8 10 12 часов в день могут быть и не более 40 часов в неделю. При этом график составляется заранее на 2 недели, то есть вы заранее знаете ваш график, ваши выходные, и можете уже планировать.

Абонент: Ну хорошо

Это лишь начало разговора. И если абонент делал большие паузы, то у бота возникали проблемы, возникали большие задержки в работе бота, а это не просто критично, а очень критично. Разговор мог прерваться, не начавшись.

Проблема 3. Сложности с реакцией на отказ

Речь идет о возможности управлять логикой отправки (START-OF-INPUT) - сообщение, которое сигнализирует о том, что начался ввод и надо бы прервать воспроизведение.

Так, система проигрывает определенный скрипт пользователю.

Бот: Здравствуйте! Меня зовут Валентин и я хочу вам предложить супер-пупер предложение

Абонент: не-не-не, ниче не надо

Мы должны остановиться и среагировать на это не-не-не.... И здесь как раз возникала проблема с возможностью управления логикой отправки.

Проблема 4. Необходимость кастомизации

UMS Transcribe Plugin - проприетарный плагин, в нем ничего нельзя менять и настраивать. Да, можно связаться с разработчиками, что-то там предложить, но такое взаимодействие требует немало сил и, главное, времени. А его никогда ни у кого нет.

Нам же нужно было реализовать не одну кастомную фичу, а сразу несколько, включая:

  • распознавание пола.

  • разделение кредов по проектам.

  • кэширование синтеза.

Хватит это терпеть!

Помучавшись с UniMRCP, мы решили, что не хотим больше проблем, поэтому решили найти выход из положения. И лучшим выходом стало написание собственного сервера/плагина.

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

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

  • Собственный NLU-алгоритм, способный обучаться на небольшом объеме данных.

  • Короткие паузы в диалогах.

  • Умную систему реагирования на прерывания разговора со стороны собеседника.

  • Возможность создания любого количества каналов.

  • Возможность кастомизации - систему можно подстраивать под нужды любого проекта.

Решение стать самостоятельными стало более чем правильным. Кроме того, что мы сами его используем во всех проектах, так им еще и заинтересовались многие компании. Сейчас наша разработка, MRCP-сервер, успешно продается на рынке, ее используют крупные банки и телеком-операторы.

Подробнее..

Hi-tech коммуникации, или как мы создаем голосового агента всего на 500 записях

18.03.2021 10:09:11 | Автор: admin
На Хабре не раз и не два писали о голосовых роботах, принципах их работы и задачах, которые они способны решать. Соответственно, общие принципы создания таких роботов (их мы предпочитаем называть цифровыми агентами) понятны многим. И это хорошо, ведь в этой статье мы хотели бы поговорить о быстром обучении роботов.

Нам удалось успешно обучать агентов на очень ограниченной базе звонков. Минимальное количество записей, на основе которых можно разработать полноценного цифрового агента всего 500. (Спойлер речь идет, скорее, о специализации ассистента, а не обучении с нуля). Как происходит обучение, и какие здесь есть подводные камни, особенности, что лежит в основе технологии? Об этом сегодня и поговорим.

Что должен уметь цифровой агент?


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

  • Определять в речи человека и классифицировать различные ответы, вопросы, возражения.
  • Подбирать подходящий по смыслу ответ или реакцию.
  • Определять кейсы, когда абонент не настроен на диалог и выражает негатив. Определять, когда абонент является ребенком и/или пожилым человеком, и корректно завершать звонок в таких случаях.
  • Определять в речи человека и фиксировать, если необходимо, различные сущности, которые называет абонент: имена, адреса, даты, номера телефонов и т.д.
  • Естественным образом реагировать на попытки перебить со стороны абонента. Так, если собеседник начинает говорить параллельно с ассистентом, последний останавливается, слушает возражение абонента и отрабатывает его. Пример разговора с перебиванием вы найдете чуть ниже.
  • Поддакивать и воспроизводить разные междометия (угу, ага) в уместные моменты, чтобы речь ассистента звучала максимально естественно.
  • Произносить, в зависимости от заданных условий (например, в зависимости от региона проживания конкретного абонента) различные переменные. Допустим, разную стоимость услуги или разные ее составляющие.
  • Воспроизводить на протяжении всего звонка background sound (фоновый шум). Это может быть, например, шум офиса, чтобы создать у абонента ощущение, что он общается с реальным сотрудником колл-центра и многие другие функции, т.к. это не весь важный функционал. Пример ниже.


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

Ну, и что самое главное в данном сегменте цифровые агенты умеют продавать не хуже (а во многих случаях и лучше) живого оператора. Таких продвинутых цифровых агентов мы создаем, к примеру, для крупных телеком-операторов.




Как обучить робота вести диалог


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

Как было раньше?


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

  • Необходимость в большом и квалифицированном человеческом ресурсе для создания регулярных выражений.
  • Необходимость постоянного анализа и ручной обработки больших объемов информации для улучшения качества распознавания система, работающая на регулярных выражениях, не способна к самообучению на размеченных данных.
  • Трудность, а иногда полная невозможность сложной классификации.
  • Ошибки, вызванные человеческим фактором.
  • Сроки подготовки регулярных выражений для конкретного голосового ассистента по сравнению с использованием интент-классификатора (NLU).
  • Средний срок подготовки паттернов (анализ диалогов, создание регулярных выражений на его основе, тесты, правки, доработки) для запуска проекта составлял порядка 3-7 дней; после этого для достижения необходимого качества требовалось еще несколько итераций анализа и масштабных доработок.

А что сейчас?


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

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

Сейчас обучение состоит из двух этапов: непосредственно обучение модели на датасете и дальнейшее дообучение в ходе коммерческой эксплуатации. На текущий момент подключение к движку NLU и экспресс-тесты распознавания занимают у нас всего несколько часов.
Качество, которое раньше достигалось неделями скрупулезной работы, сейчас обеспечивается сразу благодаря основной базе. К примеру, в сегменте b2c первоначальный % ошибок при распознавании согласия/отказа на совершение целевого действия уменьшился в 3 раза (с 10% до 2-3% от общего числа кейсов).

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

Для ее решения мы используем специализированный движок NLU Engine. Его основа семантический разбор текста, который поступает от ASR-систем. В ходе распознавания основных объектов распознавания два типа:

Entities (сущности).
Intents (намерения).

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

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

Пример диалога


Ниже сложный HR-скрипт с обозначением intents и entities; распознанные сущности и интенты указаны под каждой репликой абонента и выделены курсивом.

Бот: Здравствуйте! Меня зовут Елена, звоню по поводу вашего резюме. Подскажите, предложение по вакансии актуально для вас?

Абонент: Да, здравствуйте

Intent: hello_confirm=true

Бот: Смотрите, сейчас у нас открыта вакансия специалиста офиса продаж. В обязанности входит консультация абонентов, продажа оборудования и работа с кассой. Оформление идет полностью официальное, белая зарплата, средний уровень дохода N рублей, максимальный уровень практически не ограничен, есть возможность карьерного роста. График 5 рабочих дней с двумя плавающими выходными. Также предоставляем все социальные гарантии, дмс, бонусы и скидки от компании.

Рассмотрите такие условия для себя?

Абонент: А еще раз, откуда вы звоните?

Intent: question =what_company

Бот: Это розничная сеть NNN

Абонент: А какой у вас график?

Intent: question=schedule

Бот: График работы формируется программой автоматически с учетом потока клиентов и нагрузки на офис с двумя плавающими выходными, то есть смены рабочие 6 8 10 12 часов в день могут быть и не более 40 часов в неделю. При этом график составляется заранее на 2 недели, то есть вы заранее знаете ваш график, ваши выходные, и можете уже планировать.

Абонент: Ну хорошо

Intent: confirmation=true

Бот: Давайте тогда сверим с вами анкетные данные
Подскажите, пожалуйста, ваши Фамилию Имя Отчество полностью

Абонент: Гудкова Елена Вячеславовна

Entity: name=true

Бот: Назовите, пожалуйста, вашу дату рождения

Абонент: тринадцатое ноль второе восемьдесят седьмого

Entities:
day=[30]
month==[February]
year==[1987]


Бот: Скажите, номер, на который вам звоню, могу записать как контактный?

Абонент: Да нет, наверное

Intent: confirmation=false

Бот: Подскажите тогда номер, по которому можно к вам обращаться?

Абонент: девятьсот десять восемьсот восемьдесят пятьдесят двадцать пять

Entity: telephone=true

Бот: Подскажите, какое у вас образование?

Абонент: Высшее

Entity: education=higher

Бот: Уточните, вы сейчас обучаетесь на очной основе?

Абонент: Нет

Intent: confirmation=false

Бот: Скажите, у вас гражданство Российской Федерации?

Абонент: Российское гражданство

Entity: citizenship=russia

Бот: Хорошо, это был последний вопрос. Спасибо, что ответили на мои вопросы, сейчас я отправлю анкету на рассмотрение руководителю. Анкеты рассматривают в течение 3 дней, и, в случае положительного решения, с вами свяжутся наши сотрудники. Всего доброго, до свидания.

Хорошо, скрипт разработан, что потом?


После всего этого с заказчиком проводится согласование разработанных скриптов. В некоторых случаях клиенты хотят что-то добавить или изменить, что мы и делаем. Иногда возникает необходимость уточнить технические параметры:

  • Способ интеграции.
  • Входные / выходные параметры.
  • Подключение SIP транка (если планируется к использованию телефония заказчика).
  • SMS-подключение или подключение к сторонним системам заказчика (CRM, Campaign management).

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

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

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

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

К примеру: номер телефона абонента, длительность звонка, название проекта, в рамках которого совершался звонок, итоги звонка и т.д. Еще выходные данные содержат основной результат звонка, которые зависит от итогов диалога по конкретному проекту (самый простой пример результат Согласие если абонент согласился совершить целевое действие или результат Отказ если абонент отказался). Ну и последнее, это технические данные о статусе звонка и различные коды возможных ошибок (звонок состоялся, звонок не состоялся из-за проблем телефонии, звонок не состоялся из-за некорректных входных данных, и т.п.).
Эти данные могут просто попадать в выходные данные из входных (допустим, во входных данных мы передали ассистенту номер абонента, и в выходных данных по итогам звонка ассистент передал нам тот же номер телефона).

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

Ну а потом наступает черед таких этапов, как озвучка скриптов, разработка логики, разработка паттернов, верификация ПО и, наконец передача проекта клиенту.

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru