Мы более года тесно занимаемся разработкой решений по интеграции телефонии на базе Asterisk и программ 1С. В первую очередь мы испытываем решения на себе, и я хочу поделиться опытом о том, что можно получить от такой интеграции.
У нас используется терминальная схема работы с 1С:CRM. На столе у каждого сотрудника IP телефон, который подключен по локальной сети к IP ATС Askozia, развернутой вместе с терминальным 1С сервером внутри VMware инфраструктуры в ближайшем ЦОДе.
Click to call
Первое, что сделали — организовали набор номеров из 1C с помощью отправки прямой команды на Asterisk с указанием внутреннего номера сотрудника и внешнего номера клиента. Выглядит это очень просто, сотрудник жмет на номер телефона в базе 1С:CRM в терминальной сессии, звонит телефон на столе, снимаем трубку, звонок пошел на клиента. Удобно, просто, реализовали за 15 минут, сэкономили кучу времени менеджерам.
Технически — это было соединение по FTP и создание call файла с информацией о том, кто кому должен позвонить. Позже переделали с использованием компоненты для 1С.
Отображение названия клиента при входящем звонке
Очень удобно при входящем звонке видеть название фирмы клиента на IP телефоне, а не голый номер. Для этого мы использовали AGI скрипт, который при входящем звонке обращается к серверу 1С: Предприятия 8 и из базы 1C:CRM берет название клиента, транслитерирует его и вставляет в поле Caller ID. Подробности реализации в моем прошлом посте. Это очень удобная функция, история звонков на Asterisk буквально заговорила, вместо голых номеров — названия клиентов.
Карточка клиента при входящем звонке
Для того чтобы получить карточку клиента при входящем звонке нужно сделать так, чтобы во время звонка сервер Asterisk дернул каким-нибудь образом 1С: Предприятие, да еще и клиентский сеанс того пользователя, чей телефон в данный момент зазвонил.
Одна из самых сложных для нас задач — пришлось разрабатывать клиентскую компоненту для связи 1С и Asterisk, о которой я писал в этом посте.
Для реализации этой функции мы использовали AJAM интерфейс Asterisk — это командный интерфейс, позволяющий реализовать управление телефонной станцией и получать обратную связь от нее.
На базе этой компоненты была реализована панель телефонии 1С, которая запускается вместе с сеансом 1С:CRM у каждого пользователя и взаимодействует с Asterisk во время звонка.
В результате при входящем звонке мы отображаем информацию о клиенте, открываем документ событие, который менеджеры дозаполняют в процессе разговора. А в скрытое поле документа Событие записываем уникальный идентификатор звонка, но об этом чуть позже :)
История звонков в 1С
Создавать события на входящие звонки — хорошая практика при использовании CRM систем, но не всегда получается это сделать оперативно, да и не все менеджеры «любят» забивать звонки в CRM, если им конечно не платят за количество событий:). Мы организовали небольшой PHP скрипт на стороне Asterisk, который отдает порциями записи CDR, а сервер 1С: Предприятия 8 регламентным заданием забирает записи и вносит их в регистр сведений, таким образом, в 1С создается идентичная копия базы данных CDR Asterisk.
В каждой записи таблицы содержится уникальный идентификатор звонка, и мы теперь точно знаем, создал менеджер событие на конкретный звонок или нет, но это еще не все…
Тотальная запись разговоров и их прослушивание
В Asterisk есть отличная функция записи разговоров, однако без интеграции с CRM системой, это простой набор звуковых файлов, тысячи файлов, миллионы бесполезных неструктурированных файлов.
Да их можно разложить по папочкам, но найти все звонки одного клиента, особенно если звонили с разных номеров, можно только используя интеграцию с CRM системой.
Небольшая модификация dialplan asterisk, и в одном из полей CDR мы храним имя файла записи разговора. В итоге мы внутри 1С: Предприяития получаем таблицу истории звонков с ссылками на запись разговора и уникальными идентификаторами звонка, теми же самыми, что сохранены в документе Событие, который открывался в начале звонков.
Это хороший инструмент для менеджера и его руководителя.
Менеджер может постепенно вносить информацию в CRM систему о заявках клиентов, прослушивая записи своих разговоров прямо из документа событие. Руководитель может проверить все ли звонки обработаны менеджерами и на каждый ли звонок создан документ. Естественно, он также может прослушать любой разговор подчиненного.
С другой стороны, в карточке каждого клиента можно сделать закладку, в которой будут накапливаться разговоры с сотрудниками данного клиента с возможностью быстро найти и прослушать нужный разговор. Это удобно и позволяет мгновенно находить решения конфликтных ситуаций. Скажу честно, мы ни разу не пользовались записью разговора для решения конфликта, но после упоминания в разговоре с конфликтующей стороной факта наличия записи, дальнейший разбор ситуации идет намного мягче независимо от того прав ли был клиент :)
Отображение города звонящего
На память мы помним несколько кодов городов, но когда звонки начинали поступать с разных концов страны, появилась идея отображать название города при входящем звонке, чтобы менеджеры адекватно реагировали на вопросы о том, можем ли мы приехать и продемонстрировать наш продукт в городе Хабаровск :)
Реализация не сложная. С сайта Россвязи взяли соответствие номеров и городов, загнали в регистр сведений, при входящем звонке определяем город и отображаем его в панели телефонии.
Отображение компании звонящего на карте
Город знаем, подключаем Яндекс карту и через API в 1С при входящем звонке отображаем графически расположение клиента. Если он уже в базе, то отображаем вплоть до улицы и дома. Удобно, но есть свои нюансы, идея требует доработки.
Отображение произвольного 1С отчета в момент звонка
Еще до поднятия трубки можно отобразить отчет по контрагенту, например отчет по истории взаиморасчетов или показать открытые заказы клиента, историю покупок. Например, нашему бухгалтеру удобно видеть список невозвращенных документов, а менеджеру по продажам — список неоплаченных счетов.
Отправка факсимильного сообщения в один клик
Я ненавижу факсы, но бывает так, что клиент очень просит отправить ему факс с печатью. Как это сделать из интегрированной системы? Не просто, но вполне возможно. Asterisk умеет отправлять факсы в текущий разговор, используя графический формат TIFF. 1С умеет формировать печатную форму документа с печатью и сохранять ее в формат PDF. Отлично, во время разговора открываем документ счет, жмем кнопку отправить факс, 1С сохраняет форму в формат PDF и отправляет ее на сервер Asterisk, параллельно переводя звонок в служебный канал отправки факса, сообщая Asterisk информацию о текущем разговоре и имени отправляемого PDF файла. Asterisk выполняет запуск скрипта конвертации PDF в TIFF, затем отправляет TIFF файл в текущий разговор, а по окончании передачи отправляет в 1С сообщение о результате доставки.
Статистическая обработка CDR средствами системы компоновки данных 1С
Накопив достаточно большую базу звонков за год работы, мы попробовали применить мощный аналитический модуль системы 1С для построения графиков на основе CDR таблицы, загруженной в 1С: Предприятие 8. Вот пример пары отчетов, которые у нас получились:
Статистика звонков по дням недели:
Распределение звонков по часам:
Анализ использования исходящих каналов:
Умная маршрутизация звонка
В CRM системе 1С есть специализированное поле, которое позволяет закрепить клиента за конкретным менеджером. Этот механизм можно использовать для «умной маршрутизации». Как это работает? При старте системы 1С:CRM формирует список своих клиентов, а точнее номеров «своих» клиентов и держит их в памяти. У каждого пользователя системы свой список. При входящем звонке, когда клиент набирает многоканальный номер и готовится услышать приветствие голосового меню (IVR), панель телефонии каждого сотрудника сверяет свой список номером с номером звонящего, и если номер совпадает, перехватывает звонок на себя. Получается, что перевод звонка срабатывает только в том случае, если панель телефонии и сеанс 1С активен. Если 1С закрыта, значит пользователь не на месте, потому отрабатывает стандартный маршрут с секретарем и отделами.
Для клиента это выглядит интересным образом, он звонит на общий многоканальный номер и сразу соединяется с нужным сотрудником, IVR не успевает даже произнести первые звуки приветствия.
Функция подслушать разговор и шепнуть коллеге
Эту идею мы подсмотрели у Switchvox.
В Asterisk есть замечательная функция «супервизора».
Как это работает?
Звонит клиент и попадает на новичка, который рассказывает о наших продуктах, отвечает на вопросы клиента. Мне, как руководителю отдела, становится интересна тема разговора, и я в один клик подсоединяюсь к разговору в режиме слушателя, клиент задает вопрос о цене или скидке которую мы готовы предложить, один клик и я включаю режим шепота, говорю коллеге: «10% если, купит на 100000 рублей». После чего новичок, не прерывая разговор, продолжает обсуждать с клиентом сделку, учитывая мое замечание, которое слышал только он. При необходимости я могу вмешаться в разговор и организовать трехстороннюю конференцию несколькими кликами в списке сотрудников.
Управление статусами, перевод вызова из 1С
На дорогих IP телефонах есть функция BLF, которая позволяет отображать статус IP телефона другого сотрудника. По цвету лампочки сразу понятно разговаривает, занят или свободен коллега.
Так как наша 1С:CRM система соединена с Asterisk, мы получаем информацию о статусах напрямую в 1С и можем ее отображать на экране, а также менять логику работы панели в зависимости от состояния.
Например, если кликнуть по сотруднику, который в данный момент свободен, то произойдет простой звонок этому сотруднику. Если в данный момент сотрудник с кем-то общается, панель предложит присоединиться к разговору или подслушать его.
Перевод вызова тоже может быть интеллектуальным и может учитывать состояние. Например, я получил звонок от клиента и хочу перевести его на коллегу, я опять же кликаю на сотрудника в списке, происходит консультативный перевод на него, если я во время разговора с клиентом получаю второй звонок, я опять же кликаю на коллегу и звонок переводится безконсультативно. Это удобно и достаточно просто в понимании. Никаких решеток и звездочек.
В планах организовать управление статусом согласно рабочему графику, а в зависимости от этого менять маршрут звонка на подменяющего коллегу автоматически.
Заключение
Идей много, если я что-то упустил, предлагайте, будет интересно обсудить и реализовать.
Более подробно о нашем проекте интеграции 1С и Asterisk можно почитать на сайте проекта.
Автор: jorikfon