====== Работа с API ====== Обмен сообщениями выполняется в режиме real-time по средством технологии WebSocket. Сообщения оформляются по протоколу [[http://wamp-proto.org|WAMP]] v2 (Web Application Messaging Protocol). Для работы с API потребуется одна из реализаций WAMP-клиента. ==== Клиенты для работы с API ==== * [[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 и другие языки программирования.]] ===== Подключение к серверу UniPhone ===== Для установления соединения с сервером потребуется немного программного кода в клиентского приложении: == JavaScript == var connection = new autobahn.Connection({ url: "ws://uniphone.mikolab.ru/ws", realm: "realm1" }); connection.onopen = function (session, details) { // Publish, Subscribe, Call and Register }; connection.onclose = function (reason, details) { // handle connection lost } connection.open(); ===== Подписка на получение сообщений ===== Чтобы подписаться на получения всех сообщений в теме "provider.topics.calls" и получать оповещения о звонках, достаточно написать: == JavaScript == session.subscribe("provider.topics.calls", function (args) { console.log("New call data: ", args[0]); }); ===== Публикация сообщений ===== Чтобы поместить сообщение в теме "provider.topics.calls" достаточно одной строчки кода: == JavaScript == session.publish("provider.topics.calls", [callObject]); ===== Регистрация процедур ===== Регистрация процедуры для удаленного вызова выполнятся таким образом: == JavaScript == var whois = function(args) { return '{"name":"MIKO LAB"}'; }; session.register("crm.methods.whois", whois); ===== Вызов процедур ===== Вызов удаленной процедуры выполняется так: == JavaScript == session.call('crm.methods.whois', ['+74952293042']).then(function (res) { console.log('This phone number belongs to ', res); }, console.log);