Яндекс.Метрика

    Ни о чём

    Интеграция телефонии в свои приложения без изучения TAPI

    У любого современного предприятия есть компьютерная система (или несколько), позволяющая учитывать и управлять как внутренними, так и внешними ресурсами предприятия. Внутренние ресурсы — это, к примеру, сотрудники, товары, оборудование и т.п., а внешние — это, например, клиенты, поставщики и партнёры.
    Примерами таких систем являются CRM, ERP, HRM и пр.
    Также функционирование любого предприятия невозможно без коммуникаций: это в первую очередь связь с клиентами, партнёрами, поставщиками, а также между сотрудниками предприятия, между головным офисом и филиалами и т.д.
    Основными средствами коммуникации в современном деловом мире являются Интернет и телефон. Несмотря на то, что обмен электронными сообщениями вошёл в нашу жизнь настолько, что порой непонятно как же мы обходились без этого ранее, всё же живое голосовое общение он заменить пока не смог, да и вряд ли когда-нибудь сможет. Конечно же есть и получают всё большее распространение такие технологии как VOIP и voice mail, но всё же наиболее распространённым видом деловых коммуникаций остаются деловые переговоры по телефону. В каждом, даже самом небольшом, современном офисе есть мини-АТС, чаще всего аппаратная, наиболее распространены офисные АТС фирм Panasonic, LG, Siemens, Avaya, Samsung. Наличие офисной АТС позволяет предприятию более эффективно использовать имеющиеся городские линии, а также позволяет сотрудникам предприятия общаться между собой без использования внешних линий связи, обеспечивая экономию средств на звонках через город, кроме того можно связать главный офис с филиалами при помощи связывания головной АТС с АТС филиалов по выделенным каналам связи, так же экономя на использовании сетей общего пользователя, и позволяя иметь единый план нумерации головного офиса и филиалов.
    Итак, мы имеем АТС, а также компьютерную систему, в которой хранится информация о людях, с которыми нам нужно общаться, в том числе и телефонные номера. Конечно же, возникает вопрос: а как бы сделать так, чтобы с любого рабочего места из интерфейса компьютерной системы можно было позвонить требуемому абоненту (клиенту, партнёру, коллеге), не запоминая телефонного номера, не переписывая его на бумажку, да и вообще не набирая его? Ведь есть же компьютер-пусть он и набирает!
    А ещё хотелось бы, чтобы когда наши партнёры или клиенты будут нам звонить, то их номер телефона определялся бы системой, в зависимости от этого номера по некоторым заранее запрограммированным правилам звонок направлялся бы на определённого абонента или их группу (например звонки клиентов должны автоматом отправляться в отдел продаж, звонки поставщиков в отдел закупок, а звонок важного партнёра кому-нибудь из топ-менеджеров компании), при этом на дисплее компьютера сотрудника, получившего вызов отобразилось бы всплывающее окно с именем вызывающего абонента и другой сопутствующей информацией. Ну и нелишне было, чтобы данные о звонке(время, длительность, внешний и внутренний абоненты и пр.) автоматически сохранились в базу данных для последующего анализа.
    На помощь в таких случаях приходит компьютерно-телефонная интеграция(или CTI, сокращение от английского «Computer Telephony Integration»). Технология CTI позволяет объединить возможности компьютерных и телефонных систем, позволяя компьютеру отслеживать вызовы и управлять ими, используя любой запрограммированный заранее сценарий обработки вызовов.
    Однако, когда перед Windows-программистом ставят задачу интегрировать существующую компьютерно-информационную систему предприятия с телефонным оборудованием, то после изучения вопроса становится понятно, что для этого программисту придётся изучить TAPI (англ. Telephony Application Programming Interface — интерфейс прикладного программирования для телефонии).
    При самых оптимистичных оценках для этого понадобится несколько месяцев, причём программировать придётся, скорее всего на C\C++, т.к. TAPI версий 1.х, 2.х разработано на C/C++ и предполагает довольно сложную работу с памятью. С TAPI 3.х дело обстоит несколько иначе, он спроектирован с использованием технологии COM (Component Object Model), однако тут могут возникнуть трудности с поддержкой различным оборудованием этой версии стандарта, т.к. TAPI 3.х включает не все возможности, доступные в версии 2.х, кроме того, производителям легче написать драйвер(TSP, от английского "TAPI Service Provider") для АТС с использованием TAPI 2.х, т.к. имеется почти прямое соответствие между интерфейсами TSP-драйвера и TAPI 2.х
    Версии же TAPI, позволяющей напрямую работать с телефонией из «managed»-языков, Microsoft до сих пор не выпустила и не планирует(KB Article 841712).
    Для тех разработчиков, которые желают заняться интеграцией телефонии в свои приложения без изучения TAPI, существует Rander COM Telephony API(RanCOM).
    RanCOM создан по технологии СOM и позволяет в течении короткого времени начать разработку собственных программных продуктов, работающих с офисной АТС. При помощи RanCOM можно решить такие задачи, как:
    • Получение информации о поступающем вызове на компьютере оператора
    • Автоматический набор номера
    • Управление распределением входящей связи в реальном времени (маршрутизация по CallerID и другим условиям)
    • Мониторинг линий АТС в реальном времени
    • Построение IVR систем (автоматизированных систем интерактивных меню, автосекретарей)

    Логическая схема программного комплекса на базе RanCOM выглядит следующим образом:
    image
    Более подробная информация доступна по адресу: http://randersoft.com/ru/RanCOM.shtml
    Как же выглядит работа с АТС с точки зрения программиста? Приведем простой пример:
    Dim ranCom as RanCom;
    Dim LineId
    RanCom.Connect "myservername","myusername","mypassword"
    LineId=RanCom.OpenLine("111")
    RanCom.Dial2 "123"
    RanCom.Disconnect


    Так выглядит набор номера из программы на Visual Basic for Applications (для простоты понимания, но алгоритм будет одинаков на любом языке, изменится лишь синтаксис вызова методов RanCOM'a).
    Как видите, всё очень просто: соединение с сервером, открытие линии, набор номера, рассоединение.
    И никакого TAPI!

    Так же просто получить номер вызывающего абонента при входящем звонке:
    Dim call_info As CallInfo
    Dim callerId
    call_info = ran.GetCallInfo(call_id)
    callerId=call_info.CallerId


    Идентификатор звонка call_id получаем по сообщению NewCall2 или посредством функции Getcalls.
    Как видите, при помощи RanCOM'a можно существенно сэкономить время разработчика, а значит и деньги фирмы на оплату его труда, а возможности, открывающиеся перед разработчиком поистине широки.

    Здесь можно ознакомиться с несколькими наиболее интересными проектами, реализованными нашими партнёрами и клиентами при помощи компонента RanCOM.
    Ждём Вас на нашем сайте: http://randersoft.com