Что у меня есть? Готово:
- Соединение WebSocket установлено: Соединение WebSocket активно, и я вижу 101 Реакция переключения протоколов во время рукопожатие.
- Подтвержденное общение в пинг-понге:
Отправка пинга:Код: Выделить всё
ws.sendPing(ByteBuffer.wrap("keepalive".getBytes())); - Получение понга:
Код: Выделить всё
@Override
public CompletionStage onPong(WebSocket webSocket, ByteBuffer message) {
System.out.println("Pong received: " + new String(message.array()));
return null;
}
- Это соединение работает отлично, и я вижу соответствующие журналы в Avaya IP Office SysMonitor.
< /ol> - Полезная нагрузка подписки:
I отправляю следующее сообщение Protobuf, чтобы подписаться на очередь группы поиска:
Код: Выделить всё
Message
{
subscribe
{
requestid=2
subscribe_id=7500
queue
{
flags=0x3
ccflags=0x40039
name=TestCTI
}
}
}
- Сериализованная полезная нагрузка Protobuf:
Код: Выделить всё
1A 18 08 02 10 D2 1D 22 10 08 03 10 39 80 04 1A 05 53 61 6C 65 73 - Обрамлен префиксом длиной 4 байта:
Код: Выделить всё
00 00 00 18 1A 18 08 02 10 D2 1D 22 10 08 03 10 39 80 04 1A 05 53 61 6C 65 73 - Запрос отправляется с помощью:
Код: Выделить всё
ws.sendBinary(ByteBuffer.wrap(framedMessage), true);
[*]Имитация активности в очереди подписки: Звонки передаются в группу поиска «Продажи» для генерации событий, но ответы на WebSocket не поступают.
[*]Реализованный ответ Обработка:
- используется для обработки ответов сервера:
Код: Выделить всё
onBinary()Код: Выделить всё
@Override public CompletionStage onBinary(WebSocket webSocket, ByteBuffer data, boolean last) { try { IpoMtcti3.Message message = IpoMtcti3.Message.parseFrom(data.array()); System.out.println("Server Response: " + message.toString()); } catch (Exception e) { System.err.println("Error parsing response: " + e.getMessage()); } webSocket.request(1); return null;
Код: Выделить всё
Наблюдения:
- Подключение через WebSocket и пинг-понг работают без проблем.
- Сообщение о подписке получено сервером (подтверждено) через журналы), но нет подтверждения или последующих событий.
- Существуют ли особые требования или конфигурации для IP Office сможет правильно обрабатывать запросы на подписку?
- Неправильно ли полезная нагрузка Protobuf или кадрирование для этого типа подписки?
- Как я могу отладить это, чтобы определить, почему сервер не отправляет ответ?
Примечание. Я попробовал этот код Avaya IPO с MTCTI-3 Api
Подробнее здесь: https://stackoverflow.com/questions/792 ... cti-3-prot
Мобильная версия