当Amazon IVS流在线时通知订户
#aws #javascript #amazonivs #eventbridge

创建者是任何用户生成内容(UGC)平台的生命之血。建立实时流媒体UGC应用程序的挑战之一是为内容创建者提供他们增加受众所需的工具。没有观众,创作者将不会动机创建内容(如果没有动机的创作者,我们将没有平台)。一旦观众找到了他们喜欢与之互动的创作者,他们将订阅该频道,并期待每当创作者在线时进行调整。这是事情变得棘手的地方 - 因为大多数观众不会登录到我们的应用程序24/7打开以查看他们最喜欢的创作者是否在线。为了鼓励他们返回我们的平台,我们需要构建一个通知系统,以在观众最喜欢的流在线时提醒观众。值得庆幸的是,这是使用Amazon Interactive Video Service(Amazon IVS)构建的东西。在这篇文章中,我们将查看如何在Amazon IVS流在线时通知观众。

eventbridge在陷入困境的流

为了构建此功能,我们将利用Amazon IVS将有关流的状态的变更事件发送到Amazon Eventbridge的事实。该集成可以用于许多不同的目的,因为有很多事件针对每个流都发布。这是发布的一些事件的列表:

  • 会话创建 /结束< / li>
  • 流开始 /结束 /失败< / li>
  • 录制开始 /结束< / li>

有关事件的完整列表,请参见documentation

您可能会猜到,我们将利用的事件是流启动事件。让我们创建一个规则,每次开始时都会触发。

创建AWS Lambda处理程序功能

在创建事件桥规则之前,我们需要创建一个将从规则调用的AWS lambda函数(必须在创建规则之前就存在)。我们将对我们的功能使用新的节点18.x。

Image description

此功能将是我们在流实时时向订户发送通知的方式。在您的应用程序中,您可以利用最好的方法来发送通知。如果您有移动应用程序或PWA,则可能需要发送推送通知。也许您的订户更喜欢电子邮件通知?或者,也许您想向社交媒体提要或Discord/Slack频道发布消息。也许您想使用Amazon SNS向订户发送SMS消息?这里有很多不同的选项,没有限制。就我而言,我正在使用Pushover将推送通知发送到我的移动设备。 Pushover具有易于使用的基于休息的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
    });

};

创建EventBridge规则

可以使用AWS CLI(docs),任何AWS SDK或AWS控制台创建此规则。对于这篇文章,我们将重点关注控制台。登录到Amazon EventBridge控制台,选择 EventBridge Rule ,然后单击创建规则

Image description

在下一页上,给出规则名称,可选描述,选择事件总线,选择使用规则事件模式,然后单击下一个

Image description

选择 AWS事件或EventBridge合作伙伴活动

Image description

如果要创建用于测试目的的示例事件,请选择输入我自己的,然后以以下模式粘贴。

{
  "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"
  }
}

创建方法下,选择使用模式表格,然后是 AWS服务的事件源。对于 AWS服务,选择交互式视频服务(IVS)。最后,在事件类型下,选择 ivs流阶段变化

Image description

我们可以按原样留下事件模式,或者我们可以通过单击 编辑模式和将其修改为如下:

{
  "source": ["aws.ivs"],
  "detail-type": ["IVS Stream State Change"],
  "detail": {
    "event_name": ["Stream Start"]
  }
}

单击测试模式以确保事件模式从上方匹配样本事件,然后单击下一步

Image description

在下一步中,在目标1 下,选择 aws服务。在 selet a目标下,选择 lambda函数,然后找到并选择我们之前创建的lambda函数。

Image description

单击下一个,输入任何所需的标签,然后查看并创建规则。

上线

我们都准备测试我们的规则。为此,我们只需要开始广播到Amazon IVS频道即可。一旦我们这样做,我们的规则就会触发,我们的lambda功能将被调用。就我而言,这会在我的移动设备上发出不错的推动通知。

Image description

概括

在这篇文章中,我们创建了一个AWS lambda函数来发送推送通知并创建了一个Amazon EventBridge规则,以调用我们的Amazon IVS Live Stream开始时调用该功能。您的功能可能涉及一些其他逻辑,以根据当前广播的频道查找订户,您可以根据事件详细信息中的resources密钥中包含的ARN进行操作。要了解更多信息,请参阅documentation