Работа с атс что это
Как работает виртуальная АТС
Сегодня расскажем, что такое виртуальная АТС, как она работает и чем облачное решение лучше обычной, аналоговой офисной телефонии.
Что такое облачная АТС (она же виртуальная)? Облачная АТС — это интернет-телефония. Если аналоговая АТС станция подразумевает отдельное помещение, аппаратуру, кучу проводов, в среднем неделю установки и наладки, то виртуальная АТС размещается на сервере компании, которая предоставляет телефонию и вся работа ведется в облаке. Пользователи подключаются к системе по интернету, мобильным или локальным сетям.
Виртуальная АТС обладает совсем не иллюзорными возможностями и во многом превосходит традиционные аппаратные АТС. Например, не нужно покупать и устанавливать с помощью профессионалов совсем не дешевое оборудование.
Зачем нужна облачная АТС
Перечислим для новичков выгоды использования виртуальной АТС.
Для имиджа
Как мы сказали выше, прямой городской телефонный номер на сайте — это такой имиджевый момент, который может повысить конверсию. Когда человек серфит интернет в поисках нужной услуги, он просматривает десятки сайтов компаний. Понятно, что он скорее закажет, условно, ремонт ноутбука там, где указаны прямые городские номера, а не мобильные.
Если у компании есть стационарный телефон, значит, есть офис. Значит, можно доверять. Поэтому для придания компании солидности и удобства коммуникации используют аренду прямых номеров через виртуальную АТС.
Чтобы не терять звонки
Если у вас виртуальная АТС, у вас не пропадет ни один звонок. Дело в том, что вы арендуете один прямой номер, а переадресацию с него делаете на несколько любых других номеров. Когда люди звонят на ваш «официальный» номер, там никогда не будет занято, так как АТС переадресует звонки вашим сотрудникам.
Для экономии
Подключать «физическую» АТС довольно затратно. Провести телефонные линии, поставить стационарные аппараты, приобрести у сотовых операторов корпоративные «симки». В случае облачной АТС все уже установлено за вас. Просто подключаем ноутбуки и смартфоны сотрудников к сервису.
Для контроля
Виртуальная АТС — не просто номер, куда звонят клиенты. Это мощный сервис с множеством инструментов аналитики, записи и хранения звонков, голосовая почта и даже виртуальный факс. А еще интеграция с CRM, что делает вашу работу с клиентской базой и воронкой продаж максимально удобной и детализированной.
Для комфорта
Виртуальная АТС очень просто настраивается и интегрируется с другими сервисами. Многие вещи можно подстроить, что называется, «под себя».
Для свободы
И да, через виртуальную АТС можно работать как московский «офис» из любой точки мира.
Типы облачных АТС
Решение из коробки
Коробочное решение — это готовая виртуальная АТС. Сейчас в России есть 5-10 лидеров по продажам таких решений. Часто АТС идет в составе большой облачной системы автоматизации бизнеса, например, голосовая телефония в составе Битрикс24.
Решение на основе платформы (PaaS)
Платформа — это база для разработки собственных решений виртуальных АТС. Инфраструктура и набор библиотек, сервис и поддержка — от поставщика, а создание уникальной облачной АТС на базе платформы — от ваших разработчиков.
Как работает облачная АТС: маршрут звонка
Вкратце принцип работы виртуальной АТС можно описать так: на указанный вами номер звонит клиент, звонок поступает в недра АТС, анализируется и перенаправляется на номер нужного сотрудника. Все автоматически и с применением всем знакомого голосового меню. Все эти «нажмите звездочку», «перевожу вас на техподдержку» и даже «оставайтесь на линии, ваш звонок очень важен для нас» — все это виртуальная АТС.
У АТС есть умная очередь звонков, в которой ни один звонок не теряется и по порядку направляется куда следует согласно вашей схеме переадресации. Схемы можно менять, чередовать, настраивать под себя. В схеме запрограммирован день недели, время ожидания, маршрут переадресации звонков. К примеру, поступает звонок от важного клиента. Сперва звонок направляется системой ответственному за клиента менеджеру. Если тот не отвечает 10 секунд, звонок перенаправляется его помощнику. Если и тот ушел на обед, то клиента ведут в голосовую почту.
Преимущества виртуальной АТС
Как выбрать между облачной и аналоговой АТС
Как всегда в бизнесе, нельзя сказать однозначно, что всем подходит только облачная АТС. Это зависит от массы факторов, в первую очередь, масштаба предприятия. Облачная АТС — это аналог физической АТС мини-формата. Сфера деятельности, закрытость предприятия тоже играют роль. Да уровень продвинутости сотрудников трудно недооценить: кто-то умеет звонить только со стационарного телефона, а кто-то помоложе видел такой аппарат только в кино.
Чем хороша аналоговая АТС: заплати и получишь лучшее
Полный независимый контроль качества и безопасности телефонной связи на вашей территории и вашими сотрудниками. У стороннего виртуального сервиса могут быть проблемы, которые отразятся на вас. В случае аналоговой АТС такой проблемы нет, но вам нужно иметь свой обслуживающий персонал или вызывать специалистов при сбоях.
Полная настройка сервиса под себя. Виртуальная АТС «из коробки» поставляется с набором функций и ограниченными возможностями по настройке. Собственная аналоговая АТС «допиливается» под ваши задачи. Доработки вам тоже должны делать либо сотрудники, либо нанятые люди.
Чем плоха аналоговая АТС: физические ограничения
Среди недостатков стационарных АТС можно назвать привязку к физическому адресу и буквально к телефонным аппаратам. Звонить через АТС можно только с рабочего места, а это такое себе преимущество в век удаленной работы и онлайн сервисов.
У облачной АТС нет опции детализированных отчетов по звонкам, да и в целом функционал имеет ограничения. При переезде в новый офис все устанавливать и настраивать придется с нуля. Старые номера тоже, скорее всего, продадут.
Чем хороша облачная АТС: полная свобода и легкость эксплуатации
Мы много сказали выше о преимуществах облачной АТС. Если обобщать, то ее легко установить и внедрить, легко настраивать под себя. Любой может пользоваться интернет-телефонией без какого-то долгого обучения. Больше возможностей совершать звонки удаленно и с любых устройств.
Подключается все за один день и гораздо дешевле, чем аналоговая АТС. Есть множество возможностей для интеграции с другими сервисами, оптимизации и автоматизации бизнес-процессов.
Чем плоха облачная АТС: не совсем подходит для крупного предприятия
Не в любой компании можно использовать облачные решения, в том числе, и АТС. Крупный бизнес со стабильным адресом офиса и бюджетами на поддержание инфраструктуры выбирает «физическую» телефонию. Это, так сказать, фундаментальнее.
Заключение
Выбор за вами. Если вы маленький и гордый стартап — выбирайте облачную АТС, арендуйте «красивые» номера, интегрируйте в будущем АТС в CRM систему. Если вы — компания-гигант с физическими офисом, у вас есть деньги на мощное оборудование и отдельное помещение под инфраструктуру АТС — выбирайте аналоговый вариант.
АТС и CRM за 5 минут
Можно ли сэкономить на телефонии? Да, еще и не потеряв в функционале. Сейчас опишем, как за несколько минут настроить телефонию для бизнеса вместе с базой клиентов (облачную АТС в связке с CRM).
Настроить офисную телефонию и привязать её к CRM очень просто, да ещё и бесплатно.
8 лет назад мы уже писали статью про настройку АТС за 5 минут. С тех пор функционал АТС увеличился на порядок, к ней добавились интеграции с 20 популярными CRM/Helpdesk и своя бесплатная CRM. Но время настройки только уменьшилось, за счет опыта сотен тысяч клиентов.
Зачем нужна виртуальная АТС?
В 2021 году это скорее риторический вопрос. В эпоху удаленки жизнь любого бизнеса связана с облачными технологиями. Виртуальная АТС позволяет телефонизировать бизнес за считанные минуты без привязки к географии. Не важен масштаб бизнеса — цветочный магазин с городским телефоном или колл-центр страховой компании с сотнями номеров 800 — все это легко подключить и интегрировать с CRM/ERP/Helpdesk системами.
Связка АТС+виртуальный номер дают свободу предпринимателю. Сотрудники могут находиться в офисе, дома, на больничном, в командировке. Единственное, что желательно иметь — стабильный интернет (даже это не обязательно с переадресацией).
Функции АТС
Основные функции и преимущества облачных АТС и CRM:
Настройка за 5 минут
Шаг 1. Подключение номера
Для входящих звонков нужен телефонный номер. Вы можете выбрать номер в любой из 100 стран, 100 городов России, городские мобильные или номера 8-800.
Просто выбираете понравившийся телефонный номер, загружаете документы (если требуются), для РФ подойдет авторизация через ГосУслуги. После оплаты получите сообщение о подключении — можно звонить и принимать звонки.
Шаг 2. Мастер настройки АТС
Нажимаем на кнопку включения АТС и понятный мастер настройки помогает настроить телефонию.
Выбираете количество сотрудников, которые будут звонить и отвечать на звонки (количество всегда можно расширить). Также рекомендуем сразу включить запись звонков и бесплатную CRM.
Шаг 2.5. Голововое меню АТС
Выбираете, что услышит клиент после звонка — сразу голос сотрудника, приветствие или голосовое меню. Приветствие или меню можно начитать или загрузить файл.
Наконец, настраиваете сценарий входящих звонков. Если выбрали ранее вариант с голосовым меню, то выстраиваете порядок внутренних номеров сотрудников в зависимости от нажатой клиентом кнопки.
Настройка АТС завершена. Если сразу выбрали галочку создания бесплатной ZCRM, то после окончания настройки АТС автоматически попадаете на страницу настройки CRM.
Шаг 3. Настройка ZCRM
Снова все просто — вводите домен, на котором будет находиться ваша CRM. По умолчанию — вы администратор CRM. Для первоначальной настройки все сотрудники — внутренние номера АТС. Вы сможете дать приглашение каждому сотруднику, чтобы у него был уникальный вход в систему и он не мог сам менять настройки АТС.
После нажатия на кнопку “Создать CRM” вы сразу попадаете на главную ZCRM.
Здесь каждый сотрудник сможет увидеть:
Подробнее про все возможности ZCRM вы сможете прочитать на нашем сайте.
Также АТС Zadarma имеет бесплатные интеграции с другими популярными CRM-системами.
Шаг 4. Программы для звонков
Основных рекомендации три:
Дополнительные функции
Дополнительная внешняя линия
Вы можете подключить номер другого оператора в качестве дополнительной внешней линии. АТС по-прежнему останется бесплатной, однако бесплатно на дополнительной линии дается лишь один входящий канал, увеличить исходящие и входящие каналы можно за дополнительную плату.
Речевая аналитика — идеальный инструмент для контроля отдела продаж или поддержки. Функция распознавания речи превращает записи разговоров в текст, а затем текст анализируется по множеству параметров, включая упоминание слов или фраз в разговоре.
В нерабочие часы АТС звонок может отправляться либо специальному менеджеру либо на автоответчик. Ваши клиент не будет слушать “пустые” гудки.
Интеграция с популярными мессенджерами
Интеграция с популярными мессенджерами позволяет получать полезные уведомления — начиная от входящих SMS, заканчивая пропущенными звонками.
Коллтрекинг и виджеты для сайта
Кнопка «Позвони мне» и виджет обратного звонка повышают конверсию продаж с вашего сайта. Настройка и размещение виджета займет несколько минут, вы выбираете нужные параметры и дизайн виджетов, а мы даём готовый код, который остается разместить на сайте.
Такая же простая настройка у инструмента коллтрекинга, который позволяет следить за эффективностью разных рекламных каналов — номер телефона на сайте меняется в зависимости от канала, откуда пришел ваш клиент. Аналитику по рекламным каналам можно увидеть на сайте либо передать в Google Analytics и Яндекс Метрика.
Бесплатные видеоконференции напрямую не относятся к инструменту АТС, но последний год очень актуальны. Кроме простоты создания конференции — от участников не требуется установки программ — удобно создать видеовстречу из календаря ZCRM, который заранее отправит ссылку на событие.
Вот и все. Ваш бизнес телефонизирован. Вы звоните и принимаете звонки, все это хранится в CRM-системе в карточке каждого отдельного клиента. Все это лишь простая настройка, функционал ZCRM и АТС имеет большую глубину и со всем вы сможете ознакомиться в подробной инструкции.
Виды, функции и принцип работы мини АТС
Без мини-АТС сейчас уже достаточно сложно представить офис современной компании. Они прочно вошли в деловую жизнь и обладают рядом неоспоримых преимуществ.
Основное предназначение подобных устройств – экономия на стандартных телефонных разговорах, а также множество других дополнительных функций. Установив АТС в офисе или доме, можно значительно упростить прием звонков с городских линий и перенаправлять их на другие аппараты зоне действия сети.
Что это такое и для чего нужна
Мини-АТС представляет собой специальный компьютер, который собирает в себе все телефонные линии предприятия. С его помощью значительно экономятся средства и время, ведь он позволяет общаться между собой множеству внутренних номеров и при этом не занимать внешние ресурсы.
Любая офисная станция справляется с двумя основными задачами:
Важно! Внутренние – это направления, подключенные к конкретным аппаратам на рабочих местах. Внешние – городские, подключенные к АТС.
Возможности станции
Мини-АТС – многофункциональное устройство, которое обеспечивает выполнение множества задач.
Основными его возможностями являются:
Важно! Все разговоры, совершаемые сотрудниками в сети, не используют для этого внешние линии, что позволяет их разгрузить.
Видео: АТС Panasonic
Функции
Помимо вышеперечисленных, есть и много других, не менее полезных возможностей, среди них:
Подобные станции обладают очень широкими возможностями настройки системы. После установки специалист, учитывая конкретные пожелания владельца, может активировать те или иные функции, установить иерархию пользователей и многое другое.
Преимущества
Чем же подобная сеть лучше, чем обычная телефонная связь? Как уже отмечалось, она значительно экономит время и деньги.
Мини-АТС – это:
Принцип работы
Давайте рассмотрим, как работает мини-АТС. Для того чтобы начать ее использование, достаточно иметь на компьютере специальное программное обеспечение, а также любую подходящую гарнитуру для разговоров. Интерфейс подобных программ очень прост в использовании и не вызовет проблем даже у человека, владеющего персональным компьютером на уровне рядового пользователя.
Схема работы очень проста: согласно установленным в программе настройкам, она принимает городские и внутренние звонки, и распределяет их между абонентами. Чаще всего звонящий первоначально попадает к секретарю, который далее перенаправляет вызов в нужный отдел или конкретному должностному лицу. При звонке внутри сети программа после набора номера напрямую связывает с другим абонентом.
Важно! Если возникает необходимость подключить к сети факс, то стоит учитывать, что он подсоединяется к любой внутренней линии связи. Это позволяет использовать его в ручном режиме, а также переключаться на него в автоматическом.
Станции для дома и офиса
Особую популярность приобрели станции для дома. Их работа подчиняется тем же принципам, что офисные аналоги. Конечно, многих заинтересует цена мини-АТС.
Она значительной степени зависит от таких факторов:
С учетом этих факторов, средний ценовой диапазон такой станции колеблется от 14 до 200 тысяч рублей. Выбирая мини атс для офиса, цены и виды станций должны быть изучены с особой тщательностью, ведь каждая из них направлена на обслуживание предприятий разного масштаба и может отличаться рядом дополнительных функций. Разобраться в этом поможет следующий пункт статьи.
Какие бывают виды мини АТС
Мини-АТС классифицируется по двум основным признакам:
По типу соединения они разделяются на:
Аналоговая обладает высокой функциональностью и надежностью. Отличаются своей невысокой ценой и высокой скоростью установки. Такая мини-АТС способна обслуживать не более 8 внешних и 24 внутренних линий. Чаще всего этот тип используется в домах, небольших коттеджах и магазинах.
Цифровая мини-АТС преобразует поступающий сигнал в цифровой код, который далее передается абоненту и дешифруется его аппаратом.
Такой вид передачи сигнала позволяет уменьшить посторонние шумы и увеличить качество связи. Он отличается своей современностью и, соответственно, более высокой ценой. Подобная беспроводная станция прекрасно впишется в любой офис.
Отдельным типом является гибридная. В ней аналоговый сигнал не поддается преобразованию. При этом управляется она тем же программным обеспечением, что цифровые, что позволяет подключать к ней также аналоговые телефоны.
В целом каждый из типов АТС служит одной цели – быстрой и выгодной связи, но при выборе стоит обратить внимание на следующие пункты:
Это позволит подобрать аппарат, который наилучшим образом впишется в жизнь вашего дома или офиса.
Управление АТС — Дьявол в деталях
Примерно год назад мне пришлось столкнуться с новой для себя задачей — автоматизацией управления АТС. На первый взгляд, в ней нет ничего сложного: необходимо соединиться с управляющим портом АТС по TCP или Serial-интерфейсу, передать команду и проанализировать ответ. Как выяснилось в процессе работы, простота эта оказалась обманчивой.
В своей статье я хочу рассказать о сложностях, с которыми мне пришлось столкнуться в процессе работы. Вряд ли эта статья будет интересна широкому кругу читателей, но, возможно, специалисты, занимающиеся телефонией, найдут в ней что-то для себя полезное. В качестве иллюстративного материала я буду использовать примеры команд АТС Alcatel S12 и M200, поддерживаемых проектом в настоящее время.
1. Глоссарий
Для начала, следует определиться с терминологией.
1.1 Задания
Задание представляет собой набор действий, выполняемый атомарно. С точки зрения подсистемы управления оборудованием, задание состоит из набора услуг. Каждая услуга управляет доступом абонента к тому или иному сервису (например, можно выделить услуги доступа к междугородней и международной связи).
При выполнении задания, отдельные услуги могут включаться или отключаться. Кроме того, для ряда услуг, могут устанавливаться значения конфигурационных параметров (например таких, как время срабатывания будильника или значение PIN-кода). Булевские значения, определяющие состояние подключения или отключения той или иной услуги, также рассматриваются в качестве параметров.
С точки зрения оборудования, процесс подключения или отключения какой либо услуги сводится к выполнению одной или более команд. Процесс выполнения команд на оборудовании будем называть активацией.
1.2 Спецификации
Спецификации управляют работой специализированного ORM, предназначенного для интеграции приложения с подсистемой Order Management, управляющей выполнением заданий. Я не буду углубляться в эту тему, поскольку она не связана с вопросами специфики взаимодействия с АТС. Для понимания последующего изложения, достаточно знать, что этот слой предоставляет доступ на чтение и запись к именованным переменным, содержащим значения загруженные из БД.
Помимо доступа к скалярным значениям, предоставляется доступ к коллекциям кортежей. Так, например, открыв коллекцию, представляемую именем ‘tk’ (Тех. Карта), можно получить доступ к записям, содержащим данные тех.карт, таким как ‘tk.phone’ — телефон абонента или ‘tk.ats_type’ — тип АТС. В свою очередь, эти записи могут содержать ссылки на другие коллекции. Вложенность коллекций не ограничена.
Из всего сказанного выше, возможно не очень понятно, почему используется термин спецификация? Дело в том, что при разработке этого слоя, активно использовались такие понятия SID как Specification и Policy, что, с моей точки зрения, весьма упростило разработку. В общем, я настоятельно рекомендую ознакомиться с материалами TM Forum-а всем, у кого есть такая возможность.
1.3 Скрипты
Эту подсистему я уже описывал ранее. Первоначально, скрипт выполнял две задачи: описывал порядок выполнения команд в рамках наряда и скрывал в себе платформозависимые особенности. Скрипт обращался к переменным, предоставляемым спецификациями и формировал команды, в зависимости от типа АТС. Вот как это выглядело:
По приведенному выше фрагменту, можно видеть, что анализируя переменную tk.attach.service мы определяем, какая команда должна выполняться. Затем, в зависимости от платформы, путем подстановки в соответствующий шаблон команды номера телефона из переменной tk.phone, формируется команда для выполнения на оборудовании.
Поскольку различных команд было довольно много, скрипт получался большим (более 1000 строк) и малопонятным. В результате, при разработке второй версии, было принято решение отказаться от формирования отдельных команд в скрипте (переведя ее на более низкий уровень), передавая на выполнение вместо готовых команд коды услуг. Это решение весьма благотворно отразилось на размере скрипта. Вот как выглядит скрипт второй версии целиком:
Логику его выполнения я объясню в последующих разделах, пока лишь скажу, что теперь скрипт управляет исключительно последовательностью подключения и отключения услуг в рамках задания. Мы по прежнему можем выполнять различный код, в зависимости от типа используемого оборудования, но теперь это используется только в случае если зависимость от платформы имеет значение при выполнении задания в целом, а не отдельных команд.
1.4 Адаптер
Адаптер представляет собой подключаемый модуль (plugin), реализующий логику работы с конкретным типом оборудования. В первой версии, адаптер получал от скрипта готовые команды и его роль сводилась к тому, чтобы передать эти команды на АТС, используя TCP или Serial-подключение и обработать полученный ответ. В текущей (второй) версии, логика формирования набора команд, при подключении или отключении той или иной услуги, перенесена в адаптер. Объяснение причин, по которым это было сделано, и составляет предмет этой статьи.
1.5 Синхронизация
Синхронизацией мы будем называть процесс получения текущих настроек абонентов с оборудования. Проблема рассогласования данных о состоянии настроек абонентов на АТС по отношению к БД является фундаментальной для данного класса задач. Эта проблема актуальна не только для телефонии. В предыдущем активационном проекте, связанном с управлением оборудованием cisco он стоял не менее остро. Можно сказать, что эта статья рассказывает о том как, используя синхронизацию, сделать процесс активации более «умным».
2. Уровень задания
Очевидно, что для управления различными типами АТС используются совершенно непохожие друг на друга системы команд, так, например, для отключения исходящей связи в АТС M-200 используется команда:
Но подобные различия в синтаксисе команд, далеко не единственная сложность. Разберемся в этом вопросе подробнее.
2.1 Отображение услуг на команды
Первое, с чем мы сталкиваемся, это то, что возможности, по активации различных услуг, предоставляемые разными АТС также различны. Разумеется, есть некоторый общий набор услуг, поддерживаемых большинством типов АТС, таких как управление исходящей связью, установка будильника, управление автодозвоном и т.п.
В то же время, значительная часть команд, интересных с точки зрения бизнеса, может быть не реализована на том или ином типе АТС (и чем больший набор типов АТС поддерживается, тем больше таких команд). Это означает, что услуга, входящая в состав задания, далеко не всегда может быть выполнена на той АТС, где выполняется активация. Попытка активировать такую услугу может рассматриваться как ошибка, а может и просто игнорироваться. Важно то, что должен быть реализован механизм отображения услуг, используемых в составе заданий на услуги реализованные на поддерживаемых типах АТС.
Одна услуга задания может отображаться на несколько различных услуг поддерживаемых АТС. Например, M-200 поддерживает следующие команды для включения ПИН-кода:
Первая включает использование ПИН-кода на междугороднюю и международную связь, а вторая на всю исходящую связь. В нашем случае, одним из требований Заказчика было то, чтобы обе эти услуги, на уровне задания, отображались в одну общую услугу ‘PINCODE’. То какая именно услуга будет выполняться, определяется значением дополнительных переменных. Для Alcatel S12 реализована всего одна команда включения ПИН-кода:
Помимо того, что отсутствует разделение этой услуги на два типа, можно заметить, что эта команда не только включает использование ПИН-кода, но и устанавливает его значение. Разумеется, M-200 позволяет выполнить, например такую команду:
Но, в процессе внедрения первой версии активационного модуля в промышленную эксплуатацию, выяснилось, что эти команды более удобно активировать раздельно. Кроме того, выяснилось, что, для того, чтобы ПИН-код работал, необходимо активировать еще одну команду. Таким образом, для M-200 команда установки ПИН-кода должна привести к активации трех команд в заданном порядке:
Более того, команда enb_pincode, управляющая возможностью использования ПИН-кода, может выполняться отдельно (добавляя таким образом еще один вариант отображения услуги ‘PINCODE’). В этом случае, ПИН-код может быть установлен самим абонентом. Это приводит к довольно не тривиальной проблеме, которую я рассмотрю ниже, в разделе «Проблемы связанные с синхронизацией».
2.2 Ограничение исходящей связи
АТС различных типов могут различаться не только набором поддерживаемых услуг, но и тем, как эти услуги реализованы. Так для M-200 доступом к внутризоновой, междугородней и международной связи можно управлять раздельно:
Для Alcatel S12 аналогичные команды выглядят так:
Можно заметить, что эти команды управляют состоянием всего одной настройки (при включении междугородней связи, ограничения просто снимаются). Это приводит к следующей проблеме:
Это хороший пример функционала, реализованного на уровне скрипта активации. Посмотрим, как это может быть реализовано:
Нас спасают переменные. Активировав первую команду, управляющую исходящей связью, из коллекции tk.attach, мы устанавливаем флаг is_dou_activated, запрещающий активацию последующих команд. Причем, этот код работает только для Alcatel S12.
Единственное что нам требуется, чтобы этот подход работал, это то, чтобы команды приходили в правильном порядке: сначала включение международной связи (если оно есть), затем междугородней и внутризоновой. К счастью, спецификации позволяют сортировать выборки
коллекций по любому критерию. Требуется только добавить в таблицу услуг поля приоритета при выполнении подключения и отключения.
3. Проблемы связанные с синхронизацией
Как я уже говорил выше, возможность получения актуальных настроек с оборудования — одно из главных требований для выполнения хоть сколь нибудь корректной активации. Посмотрим, почему это так?
3.1 «Интеллектуальная» активация
Самое первое дополнительное требование, которое мы получили от Заказчика, при внедрении первой версии продукта, заключалось в том, что не следовало повторно активировать настройки ранее активированные на оборудовании. Это действительно важно по двум причинам:
10 секунд (M-200 работает значительно быстрее (
Разумеется, это не идеальное решение, поскольку при ручном выполнении команд, в обход подсистемы активации, данные в БД окажутся рассинхронизированы, но это меньшее из зол, которое мы можем себе позволить. Кроме того, по завершении активации команды, актуальные значения настроек станут нам известны (поскольку команда успешно их изменила) и мы сможем обновить рассинхронизированные данные в БД.
При использовании M-200 также имеется проблема. В некоторых случаях tune-сервер, используемый для взаимодействия с АТС, о котором я буду рассказывать ниже, начинает работать некорректно. На все команды settune он отвечает Ok, хотя данные на АТС не изменяются! Вызов gettune, в этом случае, приводит к ошибке.
Это означает, что для M-200 мы должны вызывать gettune не только до, но и после активации и, в случае получения ошибки, должны инициировать повторное выполнение задания. Как только tune-сервер начнет работать корректно, мы сможем активировать те команды, активация которых фактически не прошла на предыдущем выполнении задания. То что было успешно активировано, повторно активироваться не будет.
3.2 Зависимые услуги
Как я уже рассказывал выше, на АТС M-200, включение услуги ‘PINCODE’ (в зависимости от значений переменных спецификации) может привести к активации одной из трех последовательностей команд:
Настройка enb_pincode включается во всех трех случаях. Легко представить себе возможную ошибку, возникающую при наивной реализации активации этих команд:
Решение, в общем то, очевидно. Мы должны фиксировать в БД все активированные услуги и проводить дополнительную проверку при активации команд отключения. В случае, если отключаемая настройка все еще используется какой либо другой не отключенной услугой, команда отключения должна игнорироваться.
Да, абонент сможет пользоваться услугой enb_pincode, от которой фактически отказался, но установленные ПИН-коды будут работать, без каких либо претензий со стороны абонента. Подобных зависимостей в системе команд M200 не очень много, но все они связаны с важными услугами (такими например, как установка будильника или включение переадресации). Учет этих зависимостей важен, с точки зрения корректной активации.
3.3 Реализация отката
Не любое задание может быть выполнено успешно. Активация команды может завершиться ошибкой, по причине некорректных данных (номер абонента не обслуживается данной АТС, некорректное время при установке будильника и т.п.), либо при конфликте активируемых услуг (такое довольно часто бывает на Alcatel S12). Подобные ошибки будем называть невосстановимыми.
Поскольку задание должно быть выполнено атомарно, при возникновении невосстановимой ошибки, нам придется «откатить» все команды, успешно активированные ранее, в рамках того-же задания. Первое, что приходит в голову, это запомнить все команды, выполнить которые удалось и, при возникновении ошибки, выполнить обратные им команды. Реализацию этого подхода можно видеть в старой версии скрипта:
Здесь, немедленно после успешного отключения услуги ‘PINCODE’ выполняется сохранение обратных команд, для подключения услуги, в стеке команд отката. Помимо излишней многословности, этот подход имеет ряд других недостатков.
Для того, чтобы закрыть этот вопрос, осталось упомянуть еще об одном моменте. Дело в том, что активационное задание может выполнять активацию команд на нескольких АТС (например при переносе абонента с одной АТС на другую).
Настройки доступа к АТС хранятся в коллекции tk и может оказаться так, что успешно отработав команды на одной АТС, мы получили ошибку при выполнении команды на другой. В открытой записи коллекции tk, на этот момент, уже нет параметров доступа к АТС, на которой должен выполняться откат. Самый простой способ справиться с этой проблемой — после инициации отката, вызвать рестарт активации задания. В этом случае, все коллекции будут открыты заново и «услуга» ‘ROLLBACK’ будет выполнена для всех АТС, участвующих в активации:
3.4 Возобновляемая активация
Помимо невосстановимых ошибок, рассмотренных в предыдущем разделе, возможны ошибки, после возникновения которых активация может быть продолжена. Например если TCP-соединение с АТС было разорвано в процессе активации, откат выполнять не требуется. В этом случае, активацию достаточно повторить, пропуская выполнение команд, активированных ранее. Вот как выглядит иерархия исключений, возбуждаемых в процессе активации:
Исключения, подразумевающие необходимость возобновления активации, наследуются от RetryRequiredException. RollbackRequiredException дополнительно инициирует откат активации. Незапланированные ошибки инициирует RuntimeAeException, завершая работу сервиса активации с соответствующей диагностикой. Возобновление активации в связи с потерей соединения с АТС (TcpConnectionLostException) может возникнуть в двух принципиально различных случаях:
Во втором случае, ошибка, например, может быть вызвана тем, параметры доступа к АТС заданы неверно. В этом случае, должно быть выполнено несколько попыток подключения, после чего, должно быть сформировано сообщение об ошибке. Эта логика реализуется скриптом:
В самом начале скрипта, мы увеличиваем счетчик попыток (если переменная не определена спецификацией, она автоматически создается с нулевым значением), а после успешного выполнения любой команды, сбрасываем его в 0. Превышение значением счетчика максимального числа попыток подключения отслеживается спецификацией и формирует исключение, с соответствующей диагностикой.
4. Валидация параметров
Важным моментом является необходимость валидации значений параметров, подставляемых в команды. Как я уже говорил выше, передача в параметр некорректного значения может привести к невозможности автоматического выполнения последующих команд (например команд отката):
Разумеется, можно анализировать паттерны таких ошибок и автоматически формировать дополнительные команды, переводящие АТС в состояние ожидания очередной команды, но это существенно усложнит алгоритм взаимодействия с АТС. Гораздо проще таких ошибок не допускать. Сделать это довольно легко. Например, для валидации значения количества срабатываний будильника, нулевое значение которого привело к ошибке в этом примере, достаточно использовать следующее регулярное выражение:
Разумеется, лучше всего выполнять эту проверку еще в Order Management, не допуская создания заданий с некорректными значениями параметров. Но, независимо от того, реализована такая проверка или нет, имеет смысл проверить значения параметров непосредственно перед передачей команды на АТС. Это поможет избежать лишних ошибок и позволит упростить логику взаимодействия с АТС.
5. Доступ к АТС
Особенности доступа к АТС также следует учитывать при проектировании. Общим моментом и для Alcatel S12 и для M-200 (с использованием tune) является то, что сессия управления не создается для каждого подключения к АТС. Фактически, мы каждый раз подключаемся к одной и той-же «сессии» (это является некоторым упрощением, но, для подсистемы активации, выглядит именно так). Из этого факта имеются два важных следствия:
В настоящее время, для подключения как к Alcatel S12, так и к M-200 используется Telnet-подобное TCP-подключение, но это решение не является единственно возможным. Ниже кратко рассмотрены другие варианты подключения к этим АТС.
5.1 Serial vs TCP
Как я уже говорил ранее, на момент начала проекта я не обладал каким-либо опытом работы с Alcatel S12. Тот факт, что с этим типом АТС (во всяком случае, в комплектации используемой Заказчиком) придется работать по Serial-соединению, с самого начала, рассматривался как один из самых значительных рисков проекта. Это может показаться странным, но я одновременно был прав и ошибался.
Разумеется, при использовании таких библиотек как RXTX или jSSC (о которой я узнал из статьи на Хабре) само по себе подключение к Serial-порту из Java SE (используемой в проекте) не является проблемой, но здесь нужно учитывать два момента:
Мы потратили довольно много времени, пытаясь решить эту проблему, пока не выяснили, что некоторые модели MOXA позволяют использовать TCP-подключение. Этот подход и был использован. В работе нам очень сильно помог монитор Serial-порта и сниффер.
5.2 Tune vs TCP
При подключении к M-200 было меньше проблем, поскольку она изначально поддерживала подключение по TCP. Первоначально планировалось использовать непосредственный доступ к «абонентской карте». Я не буду загромождать статью дампами TCP-сессий, скажу только, что настройки абонентов в M-200 хранятся в битовой карте. Протокол управления АТС позволяет (используя TCP) читать эту битовую карту целиком и записывать ее обратно, после внесения необходимых изменений.
Часть полей «абонентской карты» нам удалось расшифровать (документацию найти не удалось), но, в конечном итоге, было принято решение, использовать для управления АТС tune-сервер как более документированный метод. Кроме того, работа в режиме ввода текстовых команд была удобнее.