====== Работа с 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);