Перейти к содержимому

Перейти
Перейти

Интеграция 1С c IP PBX Asterisk


  • Закрытая тема Тема закрыта
В этой теме нет ответов

#1   Доктор Шульц

Доктор Шульц

      Генералиссимус

    • Пользователи
    • PipPipPipPipPipPipPipPipPipPip
    • Сообщений: 17083
    • Регистрация: 01-March 14

Отправлено 15 April 2014 - 17:17

Название: Интеграция 1С c IP PBX Asterisk

Добавил: Доктор Шульц

Добавлен: 02 Mar 2014

Категория: Прочее


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

Исходные данные. Программная АТС Asterisk (версия 1.6, далее просто АТС) в сборке Trixbox, 1с Предприятие 7.7 Торговля + Склад.
Поставленная задача: Определить входящий номер звонка, передать его в 1с. Звонок приходит на АТС, включается интерактивное меню, в котором звонящий абонент может набрать внутренний номер сотрудника. Если он это делает, то номер абонента должен передаться в 1с именно тому сотруднику, в справочнике «Пользователи» которого указан соответствующий внутренний номер.
Реализация.
АТС астериск имеет два механизма интеграции с внешнем миром, это AsteriskAGI – это когда dial-планом управляет скрипт, написанный на любом языке, а также AsteriskAMI (asteriskmanagerinterface) или как его еще называют AsteriskAPI (asteriskprograminterface). В совокупности две эти технологии предоставляют разработчику практически неограниченные средства для построения схем интеграции с любыми внешними системами, позволяя организовать достаточно гибкий и динамичный dial-planв астериске. В данной статье не будет рассматриваться вопрос взаимодействия через AsteriskAGI, так как для решения поставленной задачи достаточно использовать AsteriskAMI, тем более, при использовании различных сборок для Asteriskтипа Trixboxили FreePBX, применение скриптов намного усложняется и требует от разработчика незаурядных знаний в этом вопросе.
AsteriskAMIпредставляет собой сервис, подключившись к которому клиент может получить доступ к событиям, которые происходят внутри самой АТС, а также можно передавать команды и получать на них ответы. Команды и события имеют спецификации и описаны в мануалх к AsteriskAMI.
Для решения поставленной задачи необходимо всего лишь соккет-клиент, который бы подсоединился к АТС и «слушал» то, что происходит в ней и искал бы нужные данные (в нашем случае, когда кто-нибудь дозванивается до внутреннего номера сотрудника). 1С этого делать не умеет. В интернете полноценных соккет-клиентов, написанных в качестве внешних компонент не нашел, и решил создать свою собственную dll (или ocx– как вам будет удобно) на Delphi. Скажу сразу, что до этого момента я не имел никакого опыта в написании собственных внешних компонент для 1с, но порывшись в интернете, я приступил к реализации данного решения и через два дня у меня была готовая внешняя компонента, которая подсоединялась к АТС и «слушала» события, и при возникновении нужного события генерировала внешенее событие для 1С, котрое последняя и обрабатывала в процедуре ОбработкаВнешнегоСобытия(,,,)

Сама ВК - Project2.dll. Подключается в 1с:
ЗагрузитьвнешнююКомпоненту("Project2.dll");
ВК = СоздатьОбъект("AddIn.Main");
В компоненте описаны две функции:
1) Connect("{Адрес}","{Порт}") - устанавливает соединение с астериском, далее необхдимо залогинится на нем, послав ему соответствующую команду:
Action: login
Username: ИмяПользователя
Secret: ПарольПользователя
Events: off
Обязательно пробел после двоеточия, каждая строка должна заканчиватся символом конца строки и переводом коретки (клавиша Enter), а конец передаваемой порции информации - в конце долна быть нажато два раза клавиша Enter
2) Send("{Текст}"); - собствено отправка текста. Затем ВК "слуашет" что приходит к нему от астериска и какждый раз, когда что-нибудь от него приходит, она генерирует внешнее событие для 1с.
Теперь о исходниках. В файле socket-klient.rar лежат исходники на делфи. Разархивируйте их и можете испольвать их на свое усмотрение, меняя алгоритм работы ВК как вам удобно. Но перед этим вам нужно будет обязательно прикрутить к делфи все то, что находится в файле AddIn.rar (у меня они лежат в C:\Program Files\Borland\Delphi7\Projects\ туда и положите их, чтобы не было проблем с компеляцией). В них лежат классы, предоставляемые фирмой 1С, без них невозможно будет сгенерировать внешнее событие для 1с, работать с внутренними формами и т.д и т.п. Вообще путь к ним у меня прописан в модуле, описывающий саму dll - library Project2; В Делфи открываете Меню Вид-Модули, выбираете модуль Umain - и вуаля, там написана вся логика работы с сокет-клиентом, т.е. там лежат вышеописанные процедуры Connect() и Send(), можете менять их логику, перекомпелировать и готово! Новые методы, а также добавлять параметры в существующие методы (процедуры) вручную нельзя! Для этого служат средства самого делфи... Меню Вид-Модули выберите Project2-TLB. Нажмите F12, откроется визуальные редактор в виде диалогового окна. В нем, в левой части окна вы увидите дерево объектов, самый первый из них, это наш Интерфес IMain, в котором хранятся все наши методы (процедуры), если нажать знак "+" слева от него, то вы увидите все созданные ранее методы, вот здесь можно создавать новые и редактировать уже имеющие методы (редактировать имеется ввиду, добавлять или удалять передаваемые параметры, и менять тип их значений, сама же логика, естественно делается в модуле UMain в теле самой процедуры)


Нажмите здесь, чтобы скачать файл


  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных