paint-brush
Amazon IVS ストリームがオンラインのときにサブスクライバーに通知する方法@amazonivs
194 測定値

Amazon IVS ストリームがオンラインのときにサブスクライバーに通知する方法

長すぎる; 読むには

Amazon Interactive Video Service (Amazon IVS) は、ライブ ストリーミング UGC プラットフォームです。視聴者が私たちのプラットフォームに戻るように促すには、お気に入りのストリームがオンラインになったときに視聴者に警告する通知システムを構築する必要があります。この投稿では、Amazon IVS ストリームがオンラインになったときに視聴者に通知する方法を見ていきます。関数には、新しく利用可能になった Node 18.x を使用します。
featured image - Amazon IVS ストリームがオンラインのときにサブスクライバーに通知する方法
Amazon Interactive Video Service (IVS)  HackerNoon profile picture
0-item

クリエイターは、あらゆるユーザー生成コンテンツ (UGC) プラットフォームの生命線です。ライブ ストリーミング UGC アプリケーションを構築する際の課題の 1 つは、視聴者を増やすために必要なツールをコンテンツ クリエーターに提供することです。視聴者がいなければ、クリエイターはコンテンツを作成する意欲がありません (また、意欲のあるクリエイターがいなければ、プラットフォームもありません)。視聴者は、交流するのが好きなクリエイターを見つけると、そのチャンネルに登録し、そのクリエイターがオンラインになるたびに視聴するのを楽しみにしています。ここで問題が発生します。ほとんどの視聴者は、お気に入りのクリエイターがオンラインかどうかを確認するために 24 時間年中無休でアプリケーションにログインしたままにしないためです。彼らが私たちのプラットフォームに戻るように促すには、お気に入りのストリームがオンラインになったときに視聴者に警告する通知システムを構築する必要があります.ありがたいことに、これは Amazon Interactive Video Service (Amazon IVS) で非常に簡単に構築できるものです。この投稿では、Amazon IVS ストリームがオンラインになったときに視聴者に通知する方法を見ていきます。

問題のあるストリーム上の EventBridge

この機能を構築するには、Amazon IVS がストリームのステータスに関する変更イベントを Amazon EventBridge に送信するという事実を利用します。この統合は、ストリームごとに公開される大量のイベントがあるため、さまざまな目的に使用できます。公開されるイベントのほんの一部を次に示します。


  • セッションの作成/終了

  • ストリームの開始 / 終了 / 失敗

  • 記録開始・終了


イベントの完全なリストについては、ドキュメントを参照してください。


ご想像のとおり、利用するイベントはStream Startイベントです。ストリームが開始するたびにトリガーされるルールを作成しましょう。

AWS Lambda ハンドラ関数の作成

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 }); };

EventBridge ルールの作成

このルールは、AWS CLI ( docs )、任意の AWS SDK、または AWS コンソールで作成できます。この投稿では、コンソールに焦点を当てます。 Amazon EventBridge コンソールにログインし、 [EventBridge ルール]を選択して、 [ルールの作成]をクリックします。


次のページで、ルールに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" } }


[作成方法][パターン フォームを使用]を選択し、次に [ AWS サービスイベント ソース] を選択します。 AWS サービスの場合は、 Interactive Video Service (IVS)を選択します。最後に、 [イベント タイプ]で、 [IVS Stream Stage Change]を選択します。


イベント パターンをそのままにしておくことも、 [パターンの編集]をクリックして次のように変更することで、このルールをStream Startイベントのみに限定することもできます。


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


[テスト パターン]をクリックして、イベント パターンが上記のサンプル イベントと一致することを確認し、 [次へ]をクリックします。


次のステップでは、 [ターゲット 1][AWS サービス]を選択します。 [ターゲットの選択][Lambda 関数]を選択し、前に作成した Lambda 関数を見つけて選択します。


[次へ]をクリックし、必要なタグを入力してから、ルールを確認して作成します。

ライブに行く

ルールをテストする準備が整いました。そのためには、Amazon IVS チャネルへのブロードキャストを開始するだけです。完了すると、ルールがトリガーされ、Lambda 関数が呼び出されます。私の場合は、モバイル デバイスに適切なプッシュ通知が表示されます。


まとめ

この投稿では、プッシュ通知を送信する AWS Lambda 関数を作成し、Amazon IVS ライブ ストリームの開始時にその関数を呼び出す Amazon EventBridge ルールを作成しました。関数には、現在ブロードキャストしているチャネルに基づいてサブスクライバーを検索する追加のロジックが含まれる可能性があります。これは、イベントの詳細のresourcesキーに含まれる ARN に基づいて実行できます。詳細については、ドキュメントを参照してください。