R50 80a65a658f0c5b326e4fa4fc03759f11
Построение Asterisk-телефонии

Базовая интеграция Asterisk и «1С:Предприятие»

Добавлено 18 янв 2021 в 14:07
Решаемая проблема, цель
Начну с того, какую проблему я решал, какую цель я преследовал. Проблема состоит в том, что пока бизнесмен ошибочно считает, что его бизнес, который он задумывал как клиенто ориентированным, часто таковым не является. И доказать это труда не составит.

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

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

Стоит помнить, что клиентами, как и всеми люди вообще, движут их потребности. А в перечне потребностей почти никогда не встречается «позвонить и поболтать». Кстати, тут некоторые мысли о потребностях клиентов.

Да, существуют бизнес-модели, когда нет смысла напрягаться над тем, чтобы звонящий был счастлив. Принято считать, что этим страдает большой бизнес. Ну и черт с ним… Но что делать то малому бизнесу? Почему он позволяет себе колоссальную наглость по отношению к звонящим клиентам — не узнает их?

А вот и цель — помочь малому бизнесу работать с клиентами и увеличить процент удовлетворенных клиентов. Помочь тому бизнесу, который понимает, что клиенты не морковь, на грядках не растут. Их нельзя пойти и еще надергать взамен потерянных, клиентов надо сохранить.
Достойная цель? Можете не отвечать. Я знаю ответ.

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

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

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

В базовый набор отображаемой информации входит:
  • Наименование / ФИО контрагента
  • Наименование группы контрагентов
  • Стадия взаимоотношений с контрагентом (XYZ-классификация)
  • Важность клиента (ABC-классификация)
  • Основной менеджер контрагента
  • Основная деятельность контрагента
  • Регион деятельности контрагента
  • Информацию о холдинге, если контрагент в нем состоит
  • Если звонящий является не самим контрагентом, а его контактным лицом, то выводится то информация о контактном лице (ФИО, занимаемая должность, выполняемые функции)
  • Различные описания (контрагента, холдинга и контактного лица)
Почему я написал «Базовый набор»? Строго говоря, на текущий момент (18.01.2021) это все еще прототип, который я буду развивать. Меня интересует создание такого коннектора, который будет выводить кастомизированную и наиболее подходящую информацию для конкретного бизнеса и деятельности конкретного сотрудника информацию.

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

Совместимость
  • Работает под операционными системами семейства Microsoft Windows. Они — наибольшее распространение в бизнес-среде. По крайней мере, в украинских компаниях.
  • Какой самый распространенный источник данных о клиентах, который можно использовать для реализации идентификации? Правильно — «1С:Предприятие». И пусть вас не смущает великое количество существующих конфигураций (десятки типовых и неопределенное множество разработанных самостоятельно и адаптированных/доработанных типовых), коннектор совместим с любой из них.
  • Ну и, разумеется, телефония должна иметь в своей основе Asterisk. Да, лучше бы он был установлен мною, но это не принципиально. У Asterisk есть стандартный API, который носит название AMI ( Asterisk Managment Interface). Он, если создатели Asterisk-based телефонии принципиально не старались отключить, дает нужную мне возможность — получать уведомления о приходящих вызовах.
Как это работает
Сначала взглянем с точки зрения пользователя. То есть — как программа-коннектор выглядит в работе.

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

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

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

Теперь взглянем с точки зрения человека, внедряющего идентификацию.

Предполагается, что на конкретном компьютере установлен и настроен клиент 1С:Предприятие. В идеале — конкретный сотрудник уже давно работает в информационной базе (выставляет счета, смотрит остатки, формирует заказы… ну, или чем там люди занимаются…), информация о клиентах в базе накапливается, она эпизодически приводится в какое-то подобие порядка.

Оскорбительно прозвучало? Извините. Почему я упомянул именно «подобие порядка»? Чаще всего в нужных полях, там где хранятся телефоны, вместе с номерами телефонов можно найти все, что угодно. Почему именно так происходит? Люди, которые вносят данные о клиентах в базу, не очень то и задумываются о том, как эти данные потом будут использоваться. Поэтому можно встретить и emailы вместо телефонов, и цвет волос, и адрес бабушки...

Чтобы начать внедрение идентификации, следует навести определенный порядок в данных о клиентах.

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

По окончанию установки, производится первоначальная настройка. В том числе:
  • Определение параметров доступа к Asterisk (IP-адрес, AMI-порт, логин, пароль)
  • Определение параметров доступа к информационной базе 1С:Предприятие (наименование COM-объекта, которое у разных версий 1С разное, и строка инициализации)
  • И самое интересное — написание нужных запросов, которые будут выполняться при поиске нужных данных. В зависимости от того, как построено прикладное решение 1С, эти запросы могут быть очень и очень индивиидуальны.
Технические детали. Я уже упомянул, что взаимодействие с Asterisk происходит с использованием AMI. А взаимодействие с информационной базой происходит с использованием так называемого COM-объекта 1С.

COM(Component Object Model) – технологический стандарт компании Microsoft, предназначенный для построения межпрограммного взаимодействия, поддерживается разработчиками системы «1C:Предприятие».

Отличительной особенность COM-соединения является высокая скорость взаимодействия с информационной базой. Это связано с тем, что для его работы не требуется визуализировать громоздкие интерфейсы. Да и потребности в ресурсах, требуемых для работы, крайне малы. Для работы программы-коннектора понадобиться приблизительно 50-100 Mb оперативной памяти. А данные из информационной базы будут получены быстрее, чем человек успеет сообразить, что пора принять вызов.

Программа-коннектор, после того, как запускается (а запускается она автоматически при включении компьютера) и прячется в трей, фактически запускает миниатюрную копию 1С и, при поступлении вызова, выполняет запросы через нее.

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


3685e964e6