通过每日的“敲门”功能管理视频通话权限
#javascript #编程 #教程 #webrtc

作者:Jess Mitchell

设置视频通话时,我们每天都知道不同的呼叫可能需要不同的隐私级别。在某些会议中,您希望尽可能多的人加入。另一方面,只能允许策划的人进入。就像让人们到家一样;您可能有一个开放式房子,任何人都可以进入,或者您可能在晚餐聚会上只有六个地方设置有名片。换句话说:它变化。

每日视频通话以类似的方式管理隐私设置。在某个公共房间环境中,任何人都可以进入,以及需要某些权限的私人环境。

在这篇文章中,我们会比较私人房间设置中的变化。具体来说,我们将专注于每日提供的敲门功能,该功能允许视频呼叫参与者要求输入私人电话。

今天的议程

作为概述,今天我们将:

  • 学习如何在dashboard或Daily的REST API中更新您的日常房间隐私设置。这些设置适用于Daily Prebuilt和使用Abiaoqian构建的自定义UI。
  • 学习如何打开私人房间的敲门声,以及敲门设置如何影响不同类型的呼叫参与者。
  • 请参阅每日预构建中的敲门功能,视频调用UI已经为您构建。
  • 查看使用Daily’s Client SDK for JavaScript构建自己的自定义UI,可以使用哪些方法和事件。在以后的教程中,我们将向您展示如何自己构建自定义敲门功能。

所以,让我们开始!

公共与私人每日房间

如前所述,每日提供公共和私人房间,可以使用privacy configuration进行设置。

如果设置为”public”的房间'默认隐私设置 - 如果有会议链接,任何人都可以在该房间加入呼叫。这就像离开您的房子的门被解锁了 - 任何人都可以走进去。

房间也可以设置为”private”,就像锁上门一样。一旦房间是私人的,只有某些人才能加入。 (以下更多内容。)

您可以使用Daily dashboardREST API更改房间的隐私设置。

如果您使用Daily dashboardcreate or update a room,则在房间形式中设置了隐私设置。

Image description

如果您使用REST API创建或更新房间,则可以将privacy选项设置为”public””private”,例如:

curl -H "Content-Type: application/json" \
     -H "Authorization: Bearer $DAILY_API_KEY" \
     -XPOST -d \
     '{"name": "my-new-room",
       "privacy": "private"' \
     https://api.daily.co/v1/rooms/

注意:您的每日API键在dashboard’s developer page中可用。

每日的敲门功能以及如何启用它

敲门(又称koude5房间设置)是所有私人房间的功能。默认情况下,未启用它,因此必须明确打开它。这对公共房间没有影响,因为任何人都可以加入公共房间。

可以通过仪表板或REST API启用敲门。

在仪表板中,在创建或更新房间时寻找敲门选项。

Image description

使用REST API,将Create a roomModify a room端点与enable_knocking选项设置为true

curl -H "Content-Type: application/json" \
     -H "Authorization: Bearer $DAILY_API_KEY" \
     -XPOST -d \
     '{"name": "DAILY_ROOM_NAME",
       "privacy": "private",
       "properties" : {
          "enable_knocking":true}}' \
     https://api.daily.co/v1/rooms/

注意:enable_knockingproperties下传递,而privacy不是,这是该作者忘记了太多次的细节。

接下来,让我们看一下具有令牌的参与者与没有的呼叫参与者之间的差异。

私人房间的呼叫参与者的类型

私人房间可以有不同类型的电话参与者:

1。具有令牌的参与者,包括:

  • 会见所有者(有时称为主人或管理员),他们与所有者会议令牌打电话给参与者。 (在我们的guide中阅读有关所有者会议令牌的更多信息。)
  • 客人与那个房间的非所有者会议令牌。

2。没有开会令牌的客人,假设启用了koude5 room setting

使用上面提到的房屋类比,会议所有者就像房子的所有者。他们可以随时随地进入,因为它的房子和owner meeting token是解锁门的钥匙。当您有所有者会议令牌时,您还具有特殊特权,例如能够决定还有谁可以输入电话。

与常规(即非所有者)会议代币一起进入的客人可以立即进入,因为他们也有一个钥匙可以让自己进入。但是,他们没有任何特殊特权。例如,如果没有代币敲门的客人参加会议,那么与非所有者令牌的客人无法让他们进入。

如果启用了敲门,则没有令牌的客人可以要求通过敲门所有者将会议所有者接纳。

如果不启用敲门声,并且客人没有会议令牌,那么他们可以进入。

Image description

现在让我们看一下如何为私人房间创建会议令牌。

如何创建会议令牌

要创建一个所有者会议令牌,请使用REST API的meeting token endpoint并将is_owner选项设置为true,就像:

curl -H "Content-Type: application/json" \
     -H "Authorization: Bearer $DAILY_API_KEY" \
     -XPOST -d '{"properties":
                  {"is_owner":true, "room_name":"DAILY_ROOM_NAME"}}' \
     https://api.daily.co/v1/meeting-tokens

注意:您当前只能通过REST API创建会议令牌。

我们将在本文结尾处使用每日预构建的敲门功能,因此,如果您想自己尝试一下,请使用上面的curl命令创建一个令牌。

要创建一个非所有者会议令牌,请在没有is_owner属性的情况下创建一个令牌,或将其明确设置为false

curl -H "Content-Type: application/json" \
     -H "Authorization: Bearer $DAILY_API_KEY" \
     -XPOST -d '{"properties":
                  {"room_name":"DAILY_ROOM_NAME"}}' \
     https://api.daily.co/v1/meeting-tokens

注意:我们建议始终包括koude16 and koude17的选项,以便会议令牌,因为它们在创建它们后不能无效。如果未指定房间名称,则令牌将适用于您的domain下的任何房间。

如何加入会议令牌的电话

每日电话可以通过几种不同的方式加入,包括:

  • 在浏览器中导航到房间的URL。您看到的视频通话UI是每日预构建的。
  • 将每日预构建在您的应用程序中,并使用其URL编程地加入房间。
  • 使用Daily’s client SDK for JavaScript构建自定义UI,并使用其URL编程加入房间。

直接通过浏览器中的房间URL与令牌连接,使用?t=[token]查询参数在URL中包含一个会议令牌。

https://your-domain.daily.co/test-room-name?t=DAILY_MEETING_TOKEN

如果您的应用程序每天都有嵌入式或自定义UI,建议通过koude19方法选项而不是房间URL中的令牌。

callObject.join({
  url: https://your-domain.daily.co/test-room-name,
  token: ‘DAILY_MEETING_TOKEN’
});

接下来,让我们看看此功能在每日预构建中的外观。之后,如果您自己构建敲门功能,我们将概述要使用的方法和事件。

通过每日预构建启用敲门声来加入通话

敲门都可以在每日视频通话中获得,无论您使用Daily Prebuilt还是使用Daily’s client SDK for JavaScript构建了自定义UI。主要区别在于,就像名称所建议的那样,每日预建的UI已经为您建造。一旦您更新了房间的设置,每天的预构建的UI就会相应地更新,以便客人可以敲门进入电话。

(要对比这一点,在自定义UI中,您需要自己构建敲门功能的功能。这通常包括添加一个按钮供客人敲门,以及一种机制,让会议所有者允许或允许或拒绝敲门的人。)

启用敲门且呼叫参与者通过每日预构建加入时,有三个可能的用户路径:

  1. 一个有效的会议令牌的参与者加入并完全跳过了敲门功能。这可能是一个拥有所有者或非所有者会议令牌的人。
  2. 客人试图在没有令牌的情况下加入电话,敲门进入,会议所有者接受他们的请求。客人被带入视频电话。
  3. 宾客试图在没有令牌的情况下加入电话,敲门进入,会议所有者拒绝了他们的请求。向客人展示了一条消息,说他们的要求被拒绝。 ð¥²

当会议所有者(即,有有效的所有者会议令牌的参与者)在视频通话中时,他们会提醒客人试图随时随地加入客人。通话中的其他客人不会看到此警报或意识到敲门声。如果没有会议所有者在场,就无法回应敲门声,就像您敲门的门,没有人在家一样。

让我们看看这些用户路径中的每一种都在每日预构建中。会议所有者的经验将在两个视频中显示,以便他们可以接收敲门声。

首先,让我们从敲门的客人开始,然后让:


客人参与者敲门并被接纳为每日视频室

在屏幕的左侧,我们看到所有者加入会议令牌时,所有者都可以向右进入。在右侧,客人敲门。然后,我们在所有者的视图中看到一个警报弹出。他们单击允许在警报上,并让客人进入通话。

现在,让我们看看当客人被拒绝访问通话时的样子。

客人参与者敲门而没有被接纳到每日视频室

客人敲门和警报显示给所有者。所有者点击否认,并向客人展示了一条消息,说他们的请求被拒绝。我们明确地告诉客人,因为我们始终希望用户了解发生了什么事,因此他们认为这是错误或错误。客人可以重新访问原始房间的网址,如果他们认为他们被偶然被拒绝,则可以再次敲门。

构建自定义敲门功能:概述

每日预建是用Daily’s client SDK for JavaScript构建的,这意味着每天都可以定制任何日常预制的东西。自定义UI比每日预构建更为复杂,因此我们将在以后的帖子中更彻底地介绍此主题。

目前,让我们回顾一下您自己需要使用的重要方法和事件。

注意:当我们谈论没有令牌的客人加入私人电话时,他们可能会在大厅中或与其他参与者进行实际电话。如果他们在大厅里,他们已要求加入电话,但尚未获得访问权限。

javaScript中的客户端SDK中敲门相关方法:

koude20:在加入呼叫之前对参与者进行了预先验证。这使您可以访问某些通话信息,例如参与者的访问级别,然后他们尝试加入呼叫。

koude21:专门返回呼叫参与者的访问状态级别。访问状态级别可以是以下任何一个:

  • ”full”:参与者被授权加入。
  • ”lobby”:参与者必须敲门才能进入。
  • ”none”:参与者无权加入,无法敲门。
  • ”unknown”:尚未确定其访问状态。参与者尚未尝试加入或预先定性加入。

koude26():请求访问等同于敲门。如果来宾调用此方法,他们要求将其访问状态级别从"lobby"更新为"full"

koude29:这允许会议所有者检索大厅等待的客人(或参与者)的名单。列表中的任何人都敲门了,正在等待让。

koude30:允许会议所有者回应加入的请求(即敲门)。

在我们的客户sdk中敲打与JavaScript的事件:

koude31:在将参与者添加到waitingParticipants()列表中时发出。

koude33:当waitingParticipants()列表中的参与者更新其名称时发出。

koude35:从waitingParticipants()列表中删除参与者时发出。

koude37:在呼叫中发生无法恢复的错误时发出。在这种情况下,带有“加入请求拒绝”的errorMsg的错误事件告诉我们会议所有者否认了敲门请求。

koude39:当本地参与者的访问状态发生变化时发出。当会议所有者回应敲门请求时,这将发出。

此列表应该帮助您入门,但请继续关注我们即将通过Daily’s client SDK for JavaScript构建此功能的教程。

结论

在这篇文章中,我们审查了通话权限以及如何启用私人日常房间的敲门声。在下一篇文章中,我们将研究如何构建一个提供类似于每日预构建功能的敲门功能的自定义UI。

与此同时,在我们的room privacy guide和我们的tutorial on building a prejoin UI中了解有关敲门和调用权限的更多信息,这是通常在自定义UI中添加敲门功能的地方。