52 Matching Annotations
  1. May 2026
    1. connect

      ~~в getUserData нет status: ESTABLISHED, этот статус возникает только на клиенте. поэтому ws.data: {status:ESTABLISHED} выглядит лишним.~~

      статус есть в getUserData, хотя SDK поднимает статус ESTABLISHED наверх, не проверяя это значение, по факту получения и обработки getUserData

    2. pauseStream

      Этот функционал вообще работает? Не помню такого метода в WebSDK, автоматической документации на него тоже нет, нужно проверифицировать

    3. Request Body schema

      WebRTC и Flash здесь нет, только SIP

      состав параметров не соответствует хуку. RegistrationStatusEvent выглядит так (пример из логов сервера) OBJECT: { "nodeId" : "f02vkq9PbK9A8MrBnKatCK9clLbHbPyR@95.191.130.39", "appKey" : "defaultApp", "sessionId" : "/5.129.23.83:53866/95.191.130.39:8443-caab56ae-481a-484e-8ca6-ff8a47456080", "status" : "REGISTERED" }

    4. Request Body schema

      ConnectionStatusEvent содержит разный состав полей для различных кейсов: WebRTC, Flash, SIP

      и кейса Status там точно нет

      рекомендуется протестировать вручную и посмотреть, как это работает

    5. /apps/DefaultApp/RegistrationStatusEvent

      на диаграмме не хватает connect от клиента к серверу

      иначе непонятно, откуда взялось SIP REGISTER

      не TCP connect, просто connect, т.к. SIP REGISTER мы отправляем не только по факту websocket connect, там еще идет сигналинговое сообщение connection с параметрами регистрации

    6. /apps/DefaultApp/XcapStatusEvent

      этот функционал вообще работает?

      в документации, генерируемой по коду WebSDK, нет метода для отправки такого запроса. нужно проверифицировать, как он должен работать

      если это легаси, лучше будет его из документации убрать вообще

    7. /apps/DefaultApp/StreamKeepAliveEvent

      это не информационное сообщение, это управление потоком (остановка потока на стороне сервера) документация здесь: https://docs.flashphoner.com/static/WCS53/Streaming_video_functions/Captured_stream_management/Stopping_the_video_stream_on_the_server_side/

      нужно скорректировать описание и диаграмму

      лучше показать пример остановки стрима: 1. верхняя стрелка оставляем только publishing stream 2. бэкенд отвечает 403 Forbidden 3. от клиента к серверу перечеркнутая стрелка publishing stream 4. от сервера к клиенту стрелка Notify stream status (FAILED)

      если приходит 200 OK, сервер ничего с потоком не делает, но если приходит что-то иное (в клиентской доке мы рекомендуем 403, т.к. это ближе всего по смыслу), сервер останавливает медиасессию, клиент получает нотификацию StreamStatusEvent с FAILED

    8. /apps/DefaultApp/StreamEvent

      диаграмма:

      1. Пунктирная стрелка от клиента к серверу Publishing stream
      2. Пунктирная стрелка от сервера ко второму клиенту Playing stream
      3. Стрелка от паблишера к серверу Mute stream audio
      4. Стрелка от сервера к паблишеру audioMuted
      5. POST /apps/DefaultApp/StreamEvent к бэкенду и т.д.

      Вообще, зеленый квадратик желательно расшифровывать во всех случаях

      Стрелка audioMuted должна быть от сервера к зрителю, а не к паблишеру

    9. /apps/DefaultApp/DataStatusEvent

      диаграмма:

      Речь идет об отправке данных с одного клиента многим клиентам https://flashphoner.com/docs/api/WCS5/rest_api/latest/v3/#tag/Data/operation/sendData

      1. От клиента к серверу POST /data/send
      2. Рисуем второго клиента, к нему OnDataEvent
      3. Дальше POST /apps/DefaultApp/DataStatusEvent на бэкенд и т.д.
    10. Hook type: notify

      Можно ли вынести тип хука в оглавление (как в доке по REST API v3 сделано с асинхронными запросами, у которых в оглавлении отмечено JOB)?

    11. /apps/DefaultApp/unPublishStream

      На диаграмме не хватает пунктирной стрелки от клиента к серверу Publishing stream

      также Unpublish stream лучше заменить на Stop publishing

    12. /apps/DefaultApp/submitBugReport

      Метод WebSDK Session.submitBugReport() принимает на вход JSON объект. Не факт, что упаковка вообще поддерживается. Нужно проверить, как работает функционал, и скорректировать описание.

    13. /apps/DefaultApp/stopStream

      Здесь на диаграмме не хватает пунктирной стрелки от сервера к клиенту Playing stream

      stopStream идет только доя PLAYING сессий, для PUBLISHING есть свой хук unPublishStream

    14. /apps/DefaultApp/snapshot

      На диаграмме выглядит так, что 200 OK в сторону REST клиента уходит (ну или статус задания меняется на DONE) только после срабатывания хука. Необходимо проверить, так это или нет, и, если не так, то скорректировать диграмму

    15. playRTSP

      Этот хук предназначен только для аутентификации https://docs.flashphoner.com/static/WCS53/Streaming_video_functions/Playing_a_video_stream_from_the_server/In_a_player_via_RTSP/#rtsp_playback_authentication_via_rest_hook

      URL, имя и другие параметры стрима при этом не меняются. В custom передаются параметры, которые должны проверяться (например, accessKey)

    16. /apps/DefaultApp/playHLS

      Этот хук предназначен только для аутентификации https://docs.flashphoner.com/static/WCS53/Streaming_video_functions/Playing_a_video_stream_from_the_server/In_a_browser_via_HLS/#hls_playback_authentication_using_rest_hook

      URL, имя и другие параметры стрима при этом не меняются. В custom передаются параметры, которые должны проверяться (например, accessKey)

    17. /apps/DefaultApp/connect

      Этот хук работает не только для Websocket (DefaultApp), но и для cdnApp, и для falshStreamingApp. Во всех случаях триггером служит сам факт установки TCP соединения. Поэтому правильнее будет не заостряться именно на Websocket

      диаграмма:

      1. Open Websoket and sebd connect меняем на TCP connect
    18. /apps/DefaultApp/SessionDebugStatusEvent

      Claude не разобрался, откуда этот хук берется. надо разобраться и поправить формулировку и диаграмму

      исходным событием должен быть вызов Session.startDebug() на стороне клиента (WebSDK). возможно, этот функционал уже и не работает, нужно проверифицировать.

    19. /apps/DefaultApp/RecordingStatusEvent

      диаграмма:

      1. От клиента к серверу пунктирная стрелка Publishing stream
      2. От клиента к серверу стрелка POST /recorder/startup
      3. Далее POST /apps/DefaultApp/RecordingStatusEvent к бэкенду и т.д.

      и надо проверифицировать, отправляется ли этот хук, не помню, чтобы видел его в логах сервера

    20. The hook is informational

      диаграмма: Перед ConnectionStatusEvent нужно показать какое-то событие сессии. Например, перечеркнутая стрелка от клиента к серверу с надписью Disconnect.

    21. The hook is informational

      диаграмма: 1. Показываем от клиента к WCS /v3/call/startup 2. Показываем от WCS к PBX стрелку с подписью Call established 3. Дальше остается POST в сторону бэкенда и т.д.

    22. Overview of a typical hook-driven flow

      диаграмма: 1. Убрать Create Connection instance. Мы не показываем внутренние процессы сервера. 2. После Apply backend updates пунктирная стрелка в сторону клиента с подписью Connected 3. Убрать Create Stream instance 4. После Apply backend updates пунктирная стрелка от клиента к серверу с подписью Publishing stream

    23. with a JSON payload built from the internal data object (Connection, Call, Stream, Message, etc.).

      не показываем внутренние объекты, это внешняя документация

  2. Apr 2026
    1. Name of the stream published to Origin to inspect its delivery route

      маршруты показываются и для профилей поэтому можно так: The name of the stream published to Origin, or stream name by profile to inspect its delivery route

    2. /rest-api/v3/mixer/set_body_watermark

      в мастере примеры для текстовой ватермарки и картинки разделены, лучше, чтобы при мерже это не потерялось

    3. /rest-api/v3/mixer/set_stream_watermark

      в мастере примеры для текстовой ватермарки и картинки разделены, лучше, чтобы при мерже это не потерялось

    4. /rest-api/v3/inject2

      возможно, стрелка Playing stream1 должна быть выше, чем POST /inject2/startup. так нагляднее показывается, что поток заменяется у существующих зрителей, а не у новых

    5. /rest-api/v3/cdn/connection/reset_inbound

      обычно у нас с одной нодой один коннект: либо incoming, либо outgoing поэтому на диаграмме можно оставить только incoming connection

    6. /rest-api/v3/cdn/connection/reset_all

      то же, что для reset_inbound: у нас не может быть двух коннектов с одной нодой для этого случая нужно еще одну ноду на диаграмму добавить