Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
uniphone [2016/03/16 21:15] mcvet создано |
uniphone [2016/03/18 15:06] (текущий) mcvet |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== UniPhone API ====== | ====== UniPhone API ====== | ||
- | API взаимодействия программных компонентов внутри единой CTI-платформы. | ||
- | ===== Общие сведения ===== | + | UniPhone API предназначено для объединения программных продуктов и телекоммуникационных платформ с целью совместной работы как единое CTI-решение. |
- | UniPhone API предназначено для объединения различных программных продуктов и телекоммуникационных платформ как участников единой CTI-платформы. Выделяются три категории участников: | + | |
+ | {{ :uniphonemain.png?nolink&340 |}} | ||
+ | |||
+ | UniPhone API предоставляет единый унифицированный доступ ко всем компонентам платформы, позволяя строить гибкое CTI-решение с взаимозаменяемыми компонентами. Выделяются три группы компонентов платформы: | ||
* Провайдер - поставщик сведений о телекоммуникационных операциях. | * Провайдер - поставщик сведений о телекоммуникационных операциях. | ||
* CRM - программный продукт или облачный сервис для ведения управленческого учета, регистрации продаж и т.п. | * CRM - программный продукт или облачный сервис для ведения управленческого учета, регистрации продаж и т.п. | ||
- | * Софтфон - программный телефон, сервис click-to-сall и другие. | + | * Софтфон - программный телефон, сервис click-to-call, push-уведомлений или любой-другой CTI-компонент на стороне пользователя. |
- | Сервер UniPhone выступает выступает центральным узлом платформы, который в real-time режиме маршрутизирует сообщения между участниками. | + | Сервер UniPhone выступает центральным узлом платформы, для маршрутизирует сообщения между ее компонентами real-time режиме. |
- | + | ||
- | Обмен сообщениями выполняется в режиме real-time по средством технологии WebSocket. Сообщения оформляются по протоколу [[http://wamp-proto.org|WAMP]] v2 (Web Application Messaging Protocol). | + | |
- | + | ||
- | В UniPhone API применяются две модели коммуникаций между участниками: | + | |
- | * Publish & Subscribe (PubSub) | + | |
- | * Remote Procedure Calls (RPC) | + | |
- | + | ||
- | В паттерне PubSub отправитель и получатель сообщений связаны друг с другом косвенно. Отправитель предоставляет информацию в абстрактной "теме" (topic), а получатели принимают сообщения объявив о своей заинтересованности к соответствующей "теме". Отправителя обычно называют издателем (publisher), а получателя - подписчиком (subscriber). | + | |
- | + | ||
- | TO DO: схема PubSub | + | |
- | + | ||
- | Паттерн RPC подразумевает получение интересующей информации по средством обращения к ее поставщику. Выполнение запроса и его обработка выполняется асинхронно. Сервер UniPhone выступает посредником при вызове удаленной процедуры и возврате результата работы. | + | |
- | + | ||
- | TO DO: схема RPC | + | |
- | + | ||
- | TO DO: Пример | + | |
- | + | ||
- | ===== Подключение API ===== | + | |
- | Для работы с API потребуется одна из реализаций WAMP-клиента. | + | |
- | * [[http://autobahn.ws/cpp|Autobahn|Cpp]] - C++ 11 реализация клиента на Boost ASIO. | + | |
- | * [[http://autobahn.ws/js|Autobahn|JS]] - Библиотека WAMP-клиента для браузера и Node.js. | + | |
- | * [[http://autobahn.ws/python|Autobahn|Python]] - Библиотека WAMP-клиента и WebSocket реализация для Python 2 и 3. | + | |
- | * [[http://wamp-proto.org/implementations|PHP, Go, C#, Lua и другие языки программирования.]] | + | |
- | + | ||
- | ===== Аутентификация ===== | + | |
- | TO DO: Написать про аутентификацию | + | |
- | + | ||
- | ===== Структура API ===== | + | |
- | Каждому участнику отведена своя роль в зависимости от его специализации. Потому от него требуется реализация только своей части API. | + | |
- | + | ||
- | Структура API представлена в виде требований к участникам платформы. В подразделе PubSub указаны "темы", к которым участнику необходимо предоставить доступ по правилам WAMP-протокола. В подразделе RPC указаны процедуры, которые необходимо зарегистрировать в системе, чтобы другие участники могли их вызывать. В замен каждый участник получает доступ к "темам" и процедурам остальных участников. | + | |
- | + | ||
- | ===== UniPhone Provider API ===== | + | |
- | API реализуемое на стороне провайдера IP-телефонии. | + | |
- | + | ||
- | ==== PubSub Topics ==== | + | |
- | Необходимо выступить в качестве издателя по указанным "темам": | + | |
- | + | ||
- | === /provider.call === | + | |
- | Информацию о звонке при первом наступлении события или смене состояния. | + | |
- | + | ||
- | == Параметры: == | + | |
- | | **call_id** | Глобальный идентификатор звонка (в формате провайдера). | | + | |
- | | **state** | Текущие состояние звонка. Принимает следующие значения:\\ //Calling// - инициация звонка;\\ //Connected// - соединение двух абонентов;\\ //Hangup// - завершение звонк. | | + | |
- | | **from** | Данные инициатора звонка. | | + | |
- | | **from:extension** (опция) | Внутренний номер абонента. | | + | |
- | | **from:number** | Внешний номер абонента. | | + | |
- | | **to** | Данные вызываемого. | | + | |
- | | **to:extension** (опция) | Внутренний номер абонента. | | + | |
- | | **to:number** | Внешний номер абонента. | | + | |
- | + | ||
- | == Пример: == | + | |
- | <code>{ | + | |
- | "call_id":"askozia-1445526019", | + | |
- | "state":"Calling", | + | |
- | "from":{ | + | |
- | "extension":"SIP\140", | + | |
- | "number":"140" | + | |
- | }, | + | |
- | "to":{ | + | |
- | "extension":"SIP\112", | + | |
- | "number":"112" | + | |
- | } | + | |
- | }</code> | + | |
- | + | ||
- | ===== UniPhone CRM API ===== | + | |
- | API реализуемое на стороне CRM приложения или сервиса. | + | |
- | ==== Remote Procedure Call ==== | + | ---- |
- | Необходимо зарегистрировать процедуры для удаленного вызова: | + | |
- | === /crm.whois === | + | ===== Содержание ===== |
- | Возвращает данные абонента, которому принадлежит заданный номер телефона. | + | |
- | == Параметры: == | + | ==== Общие сведения ==== |
- | | **number** | Номер телефона. | | + | [[uniphone:modelapi|Модель взаимодействия]]\\ |
+ | [[uniphone:modelapi#publish_subscribe| - Publish & Subscribe]]\\ | ||
+ | [[uniphone:modelapi#remote_procedure_calls| - Remote Procedure Calls]]\\ | ||
+ | [[uniphone:modelapi#imenovanie_resursov| - Именование ресурсов]]\\ | ||
+ | \\ | ||
+ | [[uniphone:auth|Аутентификация]]\\ | ||
+ | \\ | ||
+ | [[uniphone:connectapi|Работа с API]]\\ | ||
+ | [[uniphone:connectapi#podkljuchenie_k_serveru_uniphone| - Подключение к серверу UniPhone]]\\ | ||
+ | [[uniphone:connectapi#podpiska_na_poluchenie_soobschenij| - Подписка на получение сообщений]]\\ | ||
+ | [[uniphone:connectapi#publikacija_soobschenij| - Публикация сообщений]]\\ | ||
+ | [[uniphone:connectapi#registracija_procedur| - Регистрация процедур]]\\ | ||
+ | [[uniphone:connectapi#vyzov_procedur| - Вызов процедур]]\\ | ||
- | == Ответ: == | + | ==== Справочник API ==== |
- | | **name** | Имя абонента. | | + | [[uniphone:providerapi|UniPhone Provider API]]\\ |
- | | **link** (опция) | Веб-ссылка к карточке абонента. | | + | [[uniphone:crmapi|UniPhone CRM API]]\\ |