Как уведомить подписчиков, когда поток Amazon IVS находится в сети
23 февраля 2023 г.Создатели — основа любой платформы пользовательского контента (UGC). Одна из проблем создания приложения для прямой трансляции пользовательского контента заключается в том, чтобы предоставить создателям контента инструменты, необходимые им для расширения своей аудитории. Без зрителей создатели не будут заинтересованы в создании контента (а без мотивированных создателей у нас не будет платформы). Как только зрители найдут создателя, с которым им нравится взаимодействовать, они подпишутся на этот канал и с нетерпением ждут, когда этот создатель будет в сети. Здесь все становится сложнее, потому что большинство зрителей не будут оставаться в нашем приложении, работающем круглосуточно и без выходных, чтобы проверить, находится ли их любимый создатель в сети. Чтобы побудить их вернуться на нашу платформу, нам нужно создать систему уведомлений, чтобы предупреждать зрителей, когда их любимые потоки находятся в сети. К счастью, это довольно легко создать с помощью Amazon Interactive Video Service (Amazon IVS). В этом посте мы рассмотрим, как уведомлять зрителей, когда поток Amazon IVS находится в сети.
EventBridge через проблемные потоки
Для создания этой функции мы воспользуемся тем фактом, что Amazon IVS отправляет события об изменении состояния наших потоков в Amazon EventBridge. Эту интеграцию можно использовать для самых разных целей, поскольку для каждого потока публикуется множество событий. Вот лишь некоторые из опубликованных мероприятий:
* Создание/завершение сеанса * Стрим Старт/Конец/Ошибка * Начало/конец записи
<цитата>Полный список событий см. в документации.
Как вы могли догадаться, мы воспользуемся событием Начало трансляции. Давайте создадим правило, которое будет срабатывать при каждом запуске нашего потока.
Создание функции обработчика лямбда AWS
Прежде чем мы создадим правило EventBridge, нам нужно создать лямбда-функцию AWS, которая будет вызываться из правила (она должна существовать до создания правила). Мы будем использовать недавно доступный Node 18.x для нашей функции.
Эта функция будет использоваться для отправки уведомлений подписчикам, когда трансляция будет запущена. В вашем приложении вы можете использовать любой метод, который лучше всего подходит для отправки уведомления. Если у вас есть мобильное приложение или PWA, вы можете отправить push-уведомление. Может быть, ваши подписчики предпочитают уведомления по электронной почте? Или, может быть, вы хотите опубликовать сообщение в ленте социальных сетей или на канале Discord/Slack. Возможно, вы хотите использовать Amazon SNS для отправки SMS-сообщений подписчикам? Здесь масса разных вариантов и нет никаких ограничений. В моем случае я использую Pushover для отправки push-уведомления на мобильное устройство. У Pushover есть удобный API на основе REST, который прост в использовании.
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 (документы). ), любой из AWS SDK или Консоль AWS. В этом посте мы сосредоточимся на консоли. Войдите в консоль Amazon EventBridge, выберите Правило EventBridge и нажмите Создать правило.
На следующей странице дайте правилу Имя, необязательное Описание, выберите Шину событий, выберите Правило с шаблон события и нажмите Далее.
Выберите события AWS или партнерские мероприятия EventBridge.
Если вы хотите создать образец события для целей тестирования, выберите Введите мой собственный и вставьте следующий шаблон.
{
"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.
Можно оставить Шаблон события без изменений или ограничить это правило только событием Начало трансляции, нажав Редактировать шаблон и изменив его, чтобы он выглядел следующим образом:
{
"source": ["aws.ivs"],
"detail-type": ["IVS Stream State Change"],
"detail": {
"event_name": ["Stream Start"]
}
}
Нажмите Проверить шаблон, чтобы убедиться, что Шаблон события соответствует приведенному выше образцу события, а затем нажмите Далее.
На следующем шаге в разделе Цель 1 выберите Сервис AWS. В разделе Выбрать цель выберите Лямбда-функция, затем найдите и выберите созданную ранее лямбда-функцию.
Нажмите Далее, введите нужные теги, затем просмотрите и создайте правило.
Выход в эфир
Мы готовы проверить наше правило. Для этого нам просто нужно начать трансляцию на канал Amazon IVS. Как только мы это сделаем, сработает наше правило и будет вызвана наша лямбда-функция. В моем случае это приводит к приятному push-уведомлению на моем мобильном устройстве.
Обзор
В этом посте мы создали функцию AWS Lambda для отправки push-уведомлений и создали правило Amazon EventBridge для вызова этой функции, когда начинается наша прямая трансляция Amazon IVS. Ваша функция, вероятно, будет включать некоторую дополнительную логику для поиска подписчиков на основе канала, который в настоящее время вещает, что вы можете сделать на основе ARN, содержащегося в ключе resources
в сведениях о событии. Чтобы узнать больше, обратитесь к документации.
Оригинал