Базовая интеграция с Jitsi Meet (звонки с видео)

Jitsi Meet - сервис для видеоконференций

Имеется публично доступный сервер по адресу https://meet.jit.si/, но можно разворачивать и собственный экземпляр сервера.

Для использования сервиса не нужна регистрация пользователей.

По умолчанию любой желающий может создать комнату или войти в нее, просто перейдя по ссылке https://meet.jit.si/roomID, где roomID - название комнаты, поэтому для интеграции может быть достаточно генерировать такие ссылки и отправлять ее нужным пользователям любым способом. Если ссылку открыть на мобильном устройстве, будет предложено открыть комнату в приложении или установить приложение.

Дополнительные параметры

1. JSON Web Token

https://jwt.io/ 

Вставляется в ссылку в виде параметра https://meet.jit.si/roomID?jwt=token

Токен может содержать информацию о пользователе, такую как имя, email и т.п.

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

2. Параметры вида https://meet.jit.si/roomID#config.param1Name=”param1Value”&#config.param2Name=”param2Value”

В таком виде можно указать такие параметры, как язык по умолчанию, использование камеры и другие, описанные в файле конфигурации https://github.com/jitsi/jitsi-meet/blob/master/config.js 

Хорошей документации по этому моменту нет, скорее всего при необходимости нужно экспериментировать. 

Также доступен API, который предназначен для встраивания фрейма jitsi на страницу.

Пример генератора ссылок с токенами на javascript

function base64url(source) {
    encodedSource = btoa(encodeURI(source));
    encodedSource = encodedSource.replace(/=+$/, '');
    encodedSource = encodedSource.replace(/\+/g, '-');
    encodedSource = encodedSource.replace(/\//g, '_');
 
    return encodedSource;
}
 
function getJitsiRoomLink(url, room, username) {
    var tokenHeader = {
        "alg": "HS256",
        "typ": "JWT"
    };
 
    var tokenPayload = {
        "context": {
            "user": {
                "name": username
            }
        }
    };
 
    var token = base64url(JSON.stringify(tokenHeader)) + "." + base64url(JSON.stringify(tokenPayload));
 
    return url + "/" + room + "?jwt=" + token + "#config.defaultLanguage=%22ru%22";
}

Примечание