Link Search Menu Expand Document

Управление пользователями

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

Создание пользователя

Для создания в системе нового пользователя используется метод createUser. В теле запроса передаются данные пользователя - адрес email, имя пользователя в системе, его пароль, дополнительно можно указать телефон. В результате выполнения метода будет зарегистрирован новый пользователь с указанными данными. Полная спецификация метода приведена в Swagger.

Важно! При создании нового пользователя используется токен клиента

Пример выполнения запроса createUser

POST https://moodhood-api.livedigital.space/v1/users

{
  "email": "some-email@example.com",
  "password": "gmi28abc",
  "username": "Some Username Here",
  "phone": "+79671234567",
  "captchaToken": "string"
}

Пример кода для cURL

curl --location --request POST 'https://moodhood-api.livedigital.space/v1/users' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwiY0lkIjoiNjJhMDlmYzcwMmY4NmNlMzdhOTM4NmYxIiwianRpIjoiSzZEX1ZNQWRrc25CQnpjaTJnRlFBIiwic2duIjoiYjgxMTBmOGZiNiIsImlhdCI6MTY1NTc0MTEyOSwiZXhwIjoxNjU2MzQ1OTI5fQ.Qy-zwBGwjyWzPF8uXYtla9IOvCfOCeQ9uzCaUo8Q7pM' \
--header 'Content-Type: application/json' \
--data-raw '{
 "email": "some-email@example.com",
 "password": "gmi28abc",
 "username": "Some Username Here",
 "phone": "+79671234567"
}'

В результате выполнения запроса будет зарегистрирован новый пользователь с указанными данными и вернется его идентификатор в системе.

Результат:

{
  "id": "60cb1fd41f46ac12ff0eec79"
}

Управление доступом пользователей

Создание инвайта для доступа к группе

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

Примечание. Для публичных групп и комнат доступ по умолчанию есть у всех пользователей.

Для предоставления доступа к группе используется метод createInvite. В строке запроса передается идентификатор группы, а в теле запроса указывается параметр role, который может иметь два значения:

  • role_space_moderator - модератор,
  • role_space_user - пользователь.

Полная спецификация метода приведена в Swagger.

В результате выполнения запроса возвращается идентификатор, по которому далее следует активировать инвайт (см. ниже).

Пример выполнения запроса createInvite

POST https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/invites

{
  "role": "role_space_moderator"
}

Пример кода для cURL

curl --location --request POST 'https://moodhood-api.livedigital.space/v1/spaces/62bcc725721aeb718445daf7/invites' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwiY0lkIjoiNjJhMDlmYzcwMmY4NmNlMzdhOTM4NmYxIiwianRpIjoic2YxOHFtdkV4Ymdzc2pNV0hRNWVyIiwic2duIjoiYjgxMTBmOGZiNiIsImlhdCI6MTY1NjUzODg2NCwiZXhwIjoxNjU3MTQzNjY0fQ.bNopnFmGc7bEX8Jy8GkcojCA1SGy1wm7xIhFbO9kzVY' \
--header 'Content-Type: application/json' \
--header 'Cookie: accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwiY0lkIjoiNjJhMDlmYzcwMmY4NmNlMzdhOTM4NmYxIiwianRpIjoic2YxOHFtdkV4Ymdzc2pNV0hRNWVyIiwic2duIjoiYjgxMTBmOGZiNiIsImlhdCI6MTY1NjUzODg2NCwiZXhwIjoxNjU3MTQzNjY0fQ.bNopnFmGc7bEX8Jy8GkcojCA1SGy1wm7xIhFbO9kzVY; refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6InJlZnJlc2hUb2tlbiIsImNJZCI6IjYyYTA5ZmM3MDJmODZjZTM3YTkzODZmMSIsImp0aSI6ImRoUXhxM2ZyV1V0QktOZUhsd1o3cCIsInNnbiI6ImI4MTEwZjhmYjYiLCJpYXQiOjE2NTY1Mzg4NjQsImV4cCI6MTY1ODM1MzI2NH0.INhr4aj0cY-l-CbyFL0KkV4nz-2-vmRMpdVB2MWTg2o; trClId=LhAdDHgbA5gqFpklo8rw' \
--data-raw '{
 "role": "role_space_moderator"
}'

Результат:

{
   "id": "62bccb101f211e947a00da47"
}

Сервер возвращает идентификатор инвайта для его активации.

Активация инвайта

Созданный инвайт для группы необходимо активировать. Для этого следует выполнить метод activateInvite, авторизовавшись с помощью access_token того пользователя, которому должен быть предоставлен доступ. Методу в качестве параметров в строке запроса передаются идентификатор группы и идентификатор инвайта (см. предыдущий раздел). Тело запроса пустое. Полная спецификация метода приведена в Swagger.

Пример выполнения запроса activateInvite

POST https://moodhood-api.livedigital.space/v1/spaces/62bcc725721aeb718445daf7/invites/62bccb101f211e947a00da47/activate

где 62bcc725721aeb718445daf7 - идентификатор группы, 62bccb101f211e947a00da47 - идентификтаор инвайта.

Пример кода для cURL

curl --location --request POST 'https://moodhood-api.livedigital.space/v1/spaces/62bcc725721aeb718445daf7/invites/62bccb101f211e947a00da47/activate' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwiY0lkIjoiNjJhMDlmYzcwMmY4NmNlMzdhOTM4NmYxIiwianRpIjoic2YxOHFtdkV4Ymdzc2pNV0hRNWVyIiwic2duIjoiYjgxMTBmOGZiNiIsImlhdCI6MTY1NjUzODg2NCwiZXhwIjoxNjU3MTQzNjY0fQ.bNopnFmGc7bEX8Jy8GkcojCA1SGy1wm7xIhFbO9kzVY' \
--header 'Cookie: accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwiY0lkIjoiNjJhMDlmYzcwMmY4NmNlMzdhOTM4NmYxIiwianRpIjoic2YxOHFtdkV4Ymdzc2pNV0hRNWVyIiwic2duIjoiYjgxMTBmOGZiNiIsImlhdCI6MTY1NjUzODg2NCwiZXhwIjoxNjU3MTQzNjY0fQ.bNopnFmGc7bEX8Jy8GkcojCA1SGy1wm7xIhFbO9kzVY; refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6InJlZnJlc2hUb2tlbiIsImNJZCI6IjYyYTA5ZmM3MDJmODZjZTM3YTkzODZmMSIsImp0aSI6ImRoUXhxM2ZyV1V0QktOZUhsd1o3cCIsInNnbiI6ImI4MTEwZjhmYjYiLCJpYXQiOjE2NTY1Mzg4NjQsImV4cCI6MTY1ODM1MzI2NH0.INhr4aj0cY-l-CbyFL0KkV4nz-2-vmRMpdVB2MWTg2o; trClId=LhAdDHgbA5gqFpklo8rw'

В результате выполнения запроса пользователю будет предоставлен доступ к группе.

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

Предоставление прав доступа к комнате

Для предоставления доступа к комнате используется метод grantRole. В строке запроса передается идентификатор группы и комнаты в ней, а в теле запроса идентификатор пользователя и его роль:

  • role_room_user - пользователь,
  • role_room_moderator - модератор.

Полная спецификация метода приведена в Swagger.

В результате выполнения запроса пользователю задается роль для указанной комнаты.

Пример выполнения запроса grantRole

POST https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/rooms/60d55c0eb9ef88ab17b0aabb/roles

где 60d55c0eb9ef88ab17b0aabb - идентификатор группы, 60d55c0eb9ef88ab17b0aabb - идентификатор комнаты.

{
  "targetUserId": "60d55c0eb9ef88ab17b0aabb",
  "role": "role_room_user"
}

Пример кода для cURL

curl --location --request POST 'https://moodhood-api.livedigital.space/v1/spaces/62bcc725721aeb718445daf7/rooms/62bcc7341f211e444300da37/roles' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwiY0lkIjoiNjJhMDlmYzcwMmY4NmNlMzdhOTM4NmYxIiwianRpIjoic2YxOHFtdkV4Ymdzc2pNV0hRNWVyIiwic2duIjoiYjgxMTBmOGZiNiIsImlhdCI6MTY1NjUzODg2NCwiZXhwIjoxNjU3MTQzNjY0fQ.bNopnFmGc7bEX8Jy8GkcojCA1SGy1wm7xIhFbO9kzVY' \
--header 'Content-Type: application/json' \
--header 'Cookie: refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6InJlZnJlc2hUb2tlbiIsImNJZCI6IjYyYTA5ZmM3MDJmODZjZTM3YTkzODZmMSIsImp0aSI6ImRoUXhxM2ZyV1V0QktOZUhsd1o3cCIsInNnbiI6ImI4MTEwZjhmYjYiLCJpYXQiOjE2NTY1Mzg4NjQsImV4cCI6MTY1ODM1MzI2NH0.INhr4aj0cY-l-CbyFL0KkV4nz-2-vmRMpdVB2MWTg2o; trClId=LhAdDHgbA5gqFpklo8rw' \
--data-raw ' {
 "targetUserId": "60d55c0eb9ef88ab17b0aabb",
 "role": "role_room_user"
}'

В результате выполнения запроса пользователю назначаются права доступа к комнате в соответстви с заданной ролью и сервер возвращает код ответа 200.

Предоставление прав доступа к комнате незарегистрированному пользователю

Можно предоставить временный доступ к комнате пользователю, незарегистрированному в системе. Для этого используется метод generateAccess. В строке запроса передается идентификатор группы и комнаты в ней, а в теле запроса имя пользователя и его роль:

  • user - пользователь,
  • moderator - модератор.

Примечание. Метод может быть использован только пользователем, который создал комнату (не путать с правами создателя группы) или уже имеющим права модератора в комнате.

Дополнительно в теле запроса можно передать следующие параметры:

  • externalUserId - любой буквенно-циферный идентификатор, по которому интегратор может сопоставить пользователя системы с пользователем своего сервиса, например, в аналитическом отчёте,
  • ttl - время жизни данной ссылки в секундах. Дефолтное значение 86400 секунд (24 часа),
  • isPermanent - булево значение (True или False), указывающее, будет ли ссылка однаразовой - т.е. инвалидируется сразу после первого открытия, или ей можно воспользоваться снова в течение всего указанного периода TTL,
  • email - эл. почта пользователя,
  • phone - телефон пользователя.

Примечание. При переходе в комнату по ссылке, которая будет сгенерирована в результате выполнения метода, у пользователя будут запрошены персональные данные, такие как его эл.почта, телефон и т.д. Эти данные потом используются в аналитических отчетах. Если какие-то данные известны заранее, то можно передать их в запросе, указав в теле запроса значения email, phone и другие поля, которые могут быть запрошены у пользователя на странице входа. Если эти данные были переданы в теле запроса, то они уже не запрашиваются у пользователя повторно на форме входа в вебинар.

Полная спецификация метода приведена в Swagger.

Пример выполнения запроса generateAccess

POST https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/rooms/60d55c0eb9ef88ab17b0aabb/generate-access

где 60d55c0eb9ef88ab17b0aabb - идентификатор группы, 60d55c0eb9ef88ab17b0aabb - идентификатор комнаты.

{
  "username": "JohnSmith",
  "role": "user",
  "externalUserId": "string",
  "ttl": 86400,
  "isPermanent": true,
  "email": "user@some.mail",
  "phone": "+93456580"
}

Пример кода для cURL

curl --location --request POST 'https://moodhood-api.livedigital.space/v1/spaces/62bcc725721aeb718445daf7/rooms/62bcc7341f211e444300da37/generate-access' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwiY0lkIjoiNjJhMDlmYzcwMmY4NmNlMzdhOTM4NmYxIiwianRpIjoic2YxOHFtdkV4Ymdzc2pNV0hRNWVyIiwic2duIjoiYjgxMTBmOGZiNiIsImlhdCI6MTY1NjUzODg2NCwiZXhwIjoxNjU3MTQzNjY0fQ.bNopnFmGc7bEX8Jy8GkcojCA1SGy1wm7xIhFbO9kzVY' \
--header 'Content-Type: application/json' \
--header 'Cookie: refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MmFiNWE4NGIwY2U2ZWUzMWIwOTk3YjMiLCJhdWQiOiJ1c2VyIiwidHlwZSI6InJlZnJlc2hUb2tlbiIsImNJZCI6IjYyYTA5ZmM3MDJmODZjZTM3YTkzODZmMSIsImp0aSI6ImRoUXhxM2ZyV1V0QktOZUhsd1o3cCIsInNnbiI6ImI4MTEwZjhmYjYiLCJpYXQiOjE2NTY1Mzg4NjQsImV4cCI6MTY1ODM1MzI2NH0.INhr4aj0cY-l-CbyFL0KkV4nz-2-vmRMpdVB2MWTg2o; trClId=LhAdDHgbA5gqFpklo8rw' \
--data-raw ' {
  "username": "JohnSmith",
  "role": "user",
  "externalUserId": "string",
  "ttl": 86400,
  "isPermanent": true,
  "email": "user@some.mail",
  "phone": "+93456580"
}'

В результате выполнения запроса пользователю задается роль для указанной комнаты и в теле ответа возвращается параметр url, содержащий ссылку для доступа вида:

https://edu.livedigital.space/room/hMInKY6FoM?participantName=JohnSmith&accessToken=someAccessToken

Ссылка содержит значения participantName, равное указанному в запросе параметру username и уже сгенерированный токен пользователя accessToken, таким образом нет необходимости отдельно его генерировать и подставлять в ссылку.

Предоставление прав доступа к комнате незарегистрированному пользователю без использования авторизации

Иногда у приложения отправляющего запросы нет своего бэкенда или базы данных для сохранения информации о пользователях для последующей выгрузки аналитических отчетов. В этом случае можно использовать связку методов для предоставления пользователю персональной ссылки и последующему сбору информации по полученному в ссылке токену в рамках этой сессии.

Дополнительно в теле запроса можно передать следующие параметры:

  • externalUserId - любой буквенно-циферный идентификатор, по которому интегратор может сопоставить пользователя системы с пользователем своего сервиса, например, в аналитическом отчёте,
  • ttl - время жизни данной ссылки в секундах. Дефолтное значение 86400 секунд (24 часа),
  • email - эл. почта пользователя,
  • phone - телефон пользователя.

Примечание. При переходе в комнату по ссылке, которая будет сгенерирована в результате выполнения метода, у пользователя будут запрошены персональные данные, такие как его эл.почта, телефон и т.д. Эти данные потом используются в аналитических отчетах. Если какие-то данные известны заранее, то можно передать их в запросе, указав в теле запроса значения email, phone и другие поля, которые могут быть запрошены у пользователя на странице входа. Если эти данные были переданы в теле запроса, то они уже не запрашиваются у пользователя повторно на форме входа в вебинар.

Полная спецификация метода приведена в Swagger.

Пример выполнения запроса generateAccess

POST https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/rooms/60d55c0eb9ef88ab17b0aabb/generate-access/guest-url

где 60d55c0eb9ef88ab17b0aabb - идентификатор группы, 60d55c0eb9ef88ab17b0aabb - идентификатор комнаты.

{
  "username": "John Smith",
  "externalUserId": "string",
  "ttl": 86400,
  "email": "john.doe@mail.server",
  "phone": "+9606646464"
}

Пример кода для cURL

curl --location --request POST 'https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/rooms/60d55c0eb9ef88ab17b0aabb/generate-access/guest-url' \
--header 'Content-Type: application/json' \
--data-raw ' {
  "username": "John Smith",
  "externalUserId": "string",
  "ttl": 86400,
  "email": "john.doe@mail.server",
  "phone": "+9606646464"
}'

В результате выполнения запроса пользователю задается роль для указанной комнаты и в теле ответа возвращается параметр roomUrl, содержащий ссылку для доступа вида:

https://edu.livedigital.space/room/hMInKY6FoM?participantName=JohnSmith&accessToken=someAccessToken

Ссылка содержит значения participantName, равное указанному в запросе параметру username и уже сгенерированный токен пользователя accessToken, таким образом нет необходимости отдельно его генерировать и подставлять в ссылку.

Данный метод возвращает индивидуальную ссылку для пользователя для входа в комнату. Ссылка включает временный токен, срок жизни которого составляет 24 часа. В ссылку также можно добавлять GET параметры.

Получение аналитики по пользователю в рамках сессии guest-url

Используя accessToken полученный в персональной ссылке, можно запросить callId звонков в которых учавствовал пользователь и аналитический отчет

Для выгрузки аналитики по вебинару\конференции используется метод getRoomAnalyticsReport, который возвращает данные аналитики в формате JSON или XLSX. В параметрах метода указывается идентификатор вызова callId.

В строке запроса getRoomAnalyticsReport как часть URL обязательно передается идентификатор группы spaceId, а также в качестве обязательных параметров запроса передается идентификатор комнаты и идентификатор вызова - параметры roomId и callId. Также указывается параметр format, который определяет формат выгрузки отчета и может принимать значение xlsx или json.

Идентификаторы группы и комнаты для заданной вебинарной комнаты должны быть известны (см. раздел Создание групп и комнат). А получить идентификатор вызова callId можно с помощью метода analyticsCalls (см. описание ниже).

Полная спецификация метода getRoomAnalyticsReport приведена в Swagger.

Пример выполнения запроса getRoomAnalyticsReport:

GET https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/analytics/report?roomId=60d55c0eb9ef88ab17b0aabb&callId=60d55c0eb9ef88ab17b0aabb&format=xlsx

В результате выполнения запроса возвращается аналитика по событию в формате JSON или XLSX.

Для получения callId нужно использовать метод analyticsCalls. В строке запроса как часть URL обязательно передается идентификатор группы spaceId, а также в качестве обязательных параметров запроса передается идентификатор комнаты и дата, за которую надо получить аналитику - параметры roomId и date. Дополнительно можно указать, например, фильтр по минимальному количеству участников события.

Полная спецификация метода приведена в Swagger.

Пример выполнения запроса analyticsCalls

GET https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/analytics/calls?roomId=60d55c0eb9ef88ab17b0aabb&date=2024-01-01

где 60d55c0eb9ef88ab17b0aabb - идентификатор группы, 60d55c0eb9ef88ab17b0aabb - идентификатор комнаты, date - дата звонка.

Пример кода для cURL

curl --location --request POST 'https://moodhood-api.livedigital.space/v1/spaces/60d55c0eb9ef88ab17b0aabb/analytics/calls?roomId=60d55c0eb9ef88ab17b0aabb&date=2024-07-12' \
--header 'Authorization: Bearer {accessToken}' \
--header 'Content-Type: application/json'

В результате выполнения запроса вы получите список звонков в которых участвовал/учавствует пользователь

Результат:

{
  "items": [
    {
      "id": "60d55c0eb9ef88ab17b0aabb",
      "active": true,
      "roomId": "60d55c0eb9ef88ab17b0aabb",
      "participantsCount": 0,
      "isBreakoutRoom": true,
      "planAlias": "string",
      "roomType": "lesson",
      "totalParticipantsCount": 0,
      "uniqueParticipantsCount": 0,
      "startedAt": "2024-07-12T07:43:38.664Z",
      "finishedAt": "2024-07-12T07:43:38.664Z"
    }
  ]
}