Pull to refresh

Comments 9

А можно сделать кастомный запрос для расширения функционала API? Как?

Что значит "кастомный запрос"?

Не до конца понял вопрос, если имеется в виду “как согласовать работу нескольких скриптов (клиентов, сущностей)”, то для этого есть команда fireMyEvent. Она позволяет разослать всем сущностям подключенным к VideoSDK по вебсокету любые текстовые данные.

  1. Клиент, который управляет VideoSDK выполняет команду fireMyEvent с данными, например, "power off".

  2. Все другие клиенты, которые тоже подключены к управлению VideoSDK, получат событие myEvent c этими данными.

Не знаю как с SDK, но АПИ от самого TrueConfServer вызывает только те самые страх и ненависть: почему токен нельзя в заголовках передавать (и к тому же в строке адреса эт\о не безопасно, т.к. она логируется часто)? Ужасные ИД у всего, которые надо экранировать, к тому же у некоторых объектов они передаются в разном формате в разные методы. Ответы (200 OK), хотя операция провалена, и т.д. и т.п. Такое чувство как смотришь на что-то года из 2005 - не удобный и не интуитивный набор методов лишь бы были...

Да ладно, это, наверное, совсем старый опыт работы с API TrueConf) Используется стандартное экранирование спецсимволов для json, насчёт 200 при ошибке - тоже не встречал: старые добрые 400-я, 501-я, 404-я - это пожалуйста, я даже проверил в том же Postman. API TrueConf не работает по http, только по https, в этом случае что урл, что хедеры одинаково шифруются при передаче. Да и сама API обновляется постоянно, так что, если какие проблемы раньше были, то я их не застал

Ниже "Минимальный рабочий код" для видеозвонка абоненту

# coding=utf8

import pyVideoSDK
from pyVideoSDK.methods import Methods
from pyVideoSDK.consts import EVENT, METHOD_RESPONSE
import pyVideoSDK.consts as C
import config

# Открываем сессию - подключаемся к приложения по API Web Sockets
sdk = pyVideoSDK.open_session(ip = "10.110.14.53", port = 4545, pin = "123")
methods = Methods(sdk)


## Обработчик нотификации
"""
Обработка текущего состояния приложения. "appState" может быть следующим:
    0 - нет подключения к серверу;
    1 - VideoSDK/Room пытается подключиться к серверу;
    2 - требуется авторизация (пользователем);
    3 - VideoSDK/Room подключен к серверу и залогинен. Доступен для вызова;
    4 - VideoSDK/Room находится в ожидании: либо он звонит кому-то, либо звонят ему;
    5 - VideoSDK/Room находится в конференции;
    6 - VideoSDK/Room завершает конференцию.
"""
@sdk.handler(EVENT[C.EV_appStateChanged])
@sdk.handler(METHOD_RESPONSE[C.M_getAppState])
def on_state_change(response):
    print(f'    Application state is {response["appState"]}')

    if response["appState"] == 5:
        print("\nDone! We are in the conference!\n")

## Обработчик нотификации
"""
Нотификация о том, что пользователь отклонил входящий видеозвонок.

cause - причина отказа, может принимать следующие значения:
    0 - отклонен пользователем конференции
    1 - достигнуто максимальное количество участников конференции
    2 - пользователь занят
    3 - пользователь сейчас не доступен
    4 - конференции не существует
    5 - пользователя не существует
    6 - отклонения вызова не произошло
    7 - недостаточно средств (для платного тарифа)
    8 - доступ запрещен
    9 - произошел выход из аккаунта
    10 - действие не может быть завершено
    11 - недостаточно ресурсов
    12 - требуется ввести пароль
    13 - неверный пароль
    14 - пользователь не в списке друзей
    15 - низкий рейтинг (тех. характеристики) системы
    16 - пользователь не отвечает
    17 - конференция еще не началась
    18 - конференция уже завершилась
    19 - конференция не найдена
"""
@sdk.handler(EVENT[C.EV_rejectReceived])
def on_reject(response):
    print('Reject received')
    print(f'    Cause: {response["cause"]}')
    print(f'           {C.CAUSE[response["cause"]]}')

if __name__ == '__main__':
    print("Calling...")
    # bot1@connect.trueconf.com - это доступный видеобот
    # Вы можете здесь указать абонента (его TrueConf ID) или идентификатор конференции
    methods.call("bot1@connect.trueconf.com")
    sdk.run()

Приложение было запущено с ком. строкой:

"C:\Program Files\TrueConf\Room\TrueConfRoom.exe" --pin="123"

IP и порт показаны на главном окне приложения:

Результат в консоли:

Брать готовый open-source – меня не устраивает, всем известны случаи встраивания back door в проекты с открытым исходным кодом с целью нанести ущерб пользователям из России.

Ну то есть взять закрытый код, в который и не посмотреть (а вдруг там враги боНбу заложили) - это безопасный подход? Мы точно в 2023 году?

Любое standalone приложение - чОрный ящик :)

С закрытым кодом - да. С открытым есть возможность посмотреть под капот.

Sign up to leave a comment.

Articles