创作者是任何用户生成内容 (UGC) 平台的命脉。构建实时流媒体 UGC 应用程序的挑战之一是为内容创建者提供他们需要的工具来扩大受众。没有观众,创作者就没有动力去创作内容(没有积极的创作者,我们就不会有平台)。一旦观众找到他们喜欢与之互动的创作者,他们就会订阅该频道并期待在该创作者在线时收看。这就是事情变得棘手的地方 - 因为大多数观众不会保持登录到我们的应用程序 24/7 开放,以检查他们最喜欢的创作者是否在线。为了鼓励他们返回我们的平台,我们需要构建一个通知系统,以便在观众喜欢的流媒体在线时提醒他们。值得庆幸的是,使用 Amazon Interactive Video Service (Amazon IVS) 可以很容易地构建它。在本文中,我们将了解如何在 Amazon IVS 流在线时通知查看者。
要构建此功能,我们将利用 Amazon IVS 将有关流状态的更改事件发送到 Amazon EventBridge 这一事实。这种集成可用于许多不同的目的,因为每个流都会发布大量事件。以下是一些已发布事件的列表:
会话创建/结束
串流开始/结束/失败
录音开始/结束
有关事件的完整列表,请参阅文档。
您可能会猜到,我们将利用的事件是Stream Start事件。让我们创建一个规则,每次流开始时都会触发该规则。
在我们创建 EventBridge 规则之前,我们需要创建一个 AWS Lambda 函数,该函数将从规则中调用(它必须存在才能创建规则)。我们将使用最新可用的 Node 18.x 来实现我们的功能。
这个函数将是我们在流上线时向订阅者发送通知的方式。在您的应用程序中,您可以使用任何最有效的方法来发送通知。如果您有移动应用程序或 PWA,您可能想要发送推送通知。也许您的订阅者更喜欢电子邮件通知?或者,也许您想将消息发布到社交媒体提要或 Discord/Slack 频道。也许您想使用 Amazon SNS 向订阅者发送 SMS 消息?这里有很多不同的选择,没有任何限制。就我而言,我使用Pushover向我的移动设备发送推送通知。 Pushover 有一个很好的基于 REST 的 API,易于使用。
export const handler = async(event) => { // push notification using Pushover.net const formData = new FormData(); formData.append('token', process.env.PUSHOVER_APP_TOKEN); formData.append('user', process.env.PUSHOVER_USER_TOKEN); formData.append('title', `${event.detail.channel_name} is Live!!!`); formData.append('message', 'Watch now!'); formData.append('url', 'https://recursive.codes'); const pushoverResponse = await fetch('https://api.pushover.net/1/messages.json', { method: 'POST', body: formData }); };
可以使用 AWS CLI ( docs )、任何 AWS 开发工具包或 AWS 控制台创建此规则。对于这篇文章,我们将重点关注控制台。登录 Amazon EventBridge 控制台,选择EventBridge Rule ,然后单击Create rule 。
在下一页上,为规则指定一个Name和一个可选的Description ,选择一个Event bus ,选择Rule with an event pattern ,然后单击Next 。
选择AWS 活动或 EventBridge 合作伙伴活动。
如果您想创建一个示例事件用于测试目的,请选择Enter my own ,然后粘贴以下模式。
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Stream State Change", "source": "aws.ivs", "account": "123456789012", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-east-1:123456789012:channel/12345678-1a23-4567-a1bc-1a2b34567890"], "detail": { "event_name": "Stream Start" } }
在Creation method下,选择Use pattern form ,然后选择AWS 服务的事件源。对于AWS 服务,选择交互式视频服务 (IVS) 。最后,在Event type下,选择IVS Stream Stage Change 。
我们可以让事件模式保持原样,或者我们可以通过单击编辑模式并将其修改为如下所示,将此规则限制为仅Stream Start事件:
{ "source": ["aws.ivs"], "detail-type": ["IVS Stream State Change"], "detail": { "event_name": ["Stream Start"] } }
单击测试模式以确保事件模式与上面的示例事件相匹配,然后单击下一步。
在下一步中,在Target 1下,选择AWS service 。在选择目标下,选择Lambda 函数,然后找到并选择我们之前创建的 Lambda 函数。
单击Next ,输入任何所需的标签,然后查看并创建规则。
我们都准备好测试我们的规则。为此,我们只需要开始向 Amazon IVS 频道广播。一旦我们这样做,我们的规则将被触发,我们的 Lambda 函数将被调用。就我而言,这会在我的移动设备上产生一个很好的推送通知。
在本文中,我们创建了一个 AWS Lambda 函数来发送推送通知,并创建了一个 Amazon EventBridge 规则来在我们的 Amazon IVS 直播流开始时调用该函数。您的函数可能会涉及一些额外的逻辑来根据当前正在广播的频道查找订阅者,您可以根据事件详细信息中resources
键中包含的 ARN 来执行此操作。要了解更多信息,请参阅文档。