Pubsub API
Pubsub API — специальный вариант API, который позволяет создавать сессии, не привязанные к конкретному оператору. Вместо этого оно позволяет доверенным клиентам (web-приложениям) получать некоторую информацию о Call-центра, используя учетные данные созданные для клиента, а не для оператора. Цель данного API — снижение нагрузки на отдельные компоненты SSW посредством вынесения части логики подписок (рассылка нотификаций конечным получателям или агрегация событий и отложенная их отправка) на доверенный клиент. Подчеркивается, что это должен быть именно доверенный клиент, так как данные подписки, при неправильном их использовании могут создавать избыточную нагрузку на SSW, мешая ему выполнять функции обработки вызовов.
URL-пути имеют вид /service/cc/pubsub/*
В текущий момент времени передача данных между клиентом и сервером (SSW) будет осуществляться по вебсокетам. AMQP возможно был бы более предпочтительным вариантом интеграции, но большинство популярных клиентов AMQP не поддерживают используемую нами версию AMQP (0.10).
Команды Pubsub API
Команды могут выполняться либо как отдельный HTTP запрос, либо по вебсокетам.
Полный список команд:
- login
- logout (см. команды HTTP API выше)
- monitor (см. команды HTTP API выше)
pubsub_login.xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Request">
<xs:attribute name="login" type="xs:string" use="required"/>
<xs:attribute name="password_hash" type="xs:base64Binary" use="required"/>
<xs:attribute name="password_salt" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="Response">
<xs:all>
<xs:element name="ok"/>
</xs:all>
</xs:complexType>
<!-- in -->
<xs:element name="in">
<xs:complexType>
<xs:all>
<xs:element name="request" type="Request"/>
</xs:all>
</xs:complexType>
</xs:element>
<!-- out -->
<xs:element name="out">
<xs:complexType>
<xs:all>
<xs:element name="response" type="Response"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
События Pubsub API
Полный список событий:
- line_status_event
line_status_event.xsd:
Статус линии абонента SSW
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="monitor.xsd"/>
<xs:include schemaLocation="conversation.xsd"/>
<xs:simpleType name="LineStatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="idle"/>
<xs:enumeration value="alerting"/>
<xs:enumeration value="talking"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="event">
<xs:complexType>
<xs:complexContent>
<xs:extension base="baseEventType">
<xs:all>
<xs:element name="line">
<xs:complexType>
<xs:attribute name="status" type="LineStatusType"/>
</xs:complexType>
</xs:element>
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>