Người sáng tạo là huyết mạch của bất kỳ nền tảng nội dung do người dùng tạo (UGC) nào. Một trong những thách thức khi xây dựng ứng dụng UGC phát trực tiếp là cung cấp cho người tạo nội dung những công cụ họ cần để tăng lượng người xem. Không có người xem, người sáng tạo sẽ không có động lực để tạo nội dung (và không có người sáng tạo có động lực, chúng tôi sẽ không có nền tảng). Sau khi người xem tìm thấy người sáng tạo mà họ thích tương tác, họ sẽ đăng ký kênh đó và mong muốn được theo dõi bất cứ khi nào người sáng tạo đó trực tuyến. Đây là lúc mọi thứ trở nên phức tạp - bởi vì hầu hết người xem sẽ không đăng nhập vào ứng dụng của chúng tôi mở 24/7 để kiểm tra xem người sáng tạo yêu thích của họ có trực tuyến hay không. Để khuyến khích họ quay lại nền tảng của chúng tôi, chúng tôi cần xây dựng một hệ thống thông báo để thông báo cho người xem khi các luồng yêu thích của họ đang trực tuyến. Rất may, đây là thứ khá dễ xây dựng với Amazon Interactive Video Service (Amazon IVS). Trong bài đăng này, chúng ta sẽ xem xét cách thông báo cho người xem khi luồng Amazon IVS trực tuyến.
Để xây dựng tính năng này, chúng tôi sẽ tận dụng lợi thế của việc Amazon IVS gửi các sự kiện thay đổi về trạng thái luồng của chúng tôi tới Amazon EventBridge. Tích hợp này có thể được sử dụng cho nhiều mục đích khác nhau, vì có rất nhiều sự kiện được xuất bản cho mỗi luồng. Dưới đây là danh sách chỉ một vài sự kiện được xuất bản:
Tạo / Kết thúc phiên
Bắt đầu / Kết thúc luồng / Không thành công
Bắt đầu / Kết thúc ghi âm
Để biết danh sách đầy đủ các sự kiện, hãy xem tài liệu .
Như bạn có thể đoán, sự kiện mà chúng ta sẽ tận dụng là sự kiện Bắt đầu phát trực tiếp . Hãy tạo một quy tắc sẽ được kích hoạt mỗi khi luồng của chúng ta bắt đầu.
Trước khi tạo Quy tắc EventBridge, chúng ta cần tạo Hàm AWS Lambda sẽ được gọi từ quy tắc (hàm này phải tồn tại trước khi có thể tạo quy tắc). Chúng tôi sẽ sử dụng Nút 18.x mới có sẵn cho chức năng của mình.
Chức năng này sẽ là cách chúng tôi gửi thông báo cho người đăng ký khi luồng phát trực tiếp. Trong ứng dụng của bạn, bạn có thể sử dụng bất kỳ phương pháp nào hoạt động tốt nhất để gửi thông báo. Nếu bạn có ứng dụng dành cho thiết bị di động hoặc PWA, bạn có thể muốn gửi thông báo đẩy. Có thể người đăng ký của bạn thích thông báo qua email hơn? Hoặc có thể bạn muốn đăng một tin nhắn lên nguồn cấp dữ liệu mạng xã hội hoặc kênh Discord/Slack. Có lẽ bạn muốn sử dụng Amazon SNS để gửi tin nhắn SMS cho người đăng ký? Có rất nhiều lựa chọn khác nhau ở đây và không có giới hạn. Trong trường hợp của tôi, tôi đang sử dụng Pushover để gửi thông báo đẩy tới thiết bị di động của mình. Pushover có API dựa trên REST dễ sử dụng.
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 }); };
Quy tắc này có thể được tạo bằng AWS CLI ( docs ), bất kỳ SDK AWS nào hoặc Bảng điều khiển AWS. Đối với bài đăng này, chúng tôi sẽ tập trung vào giao diện điều khiển. Đăng nhập vào bảng điều khiển Amazon EventBridge, chọn Quy tắc EventBridge và nhấp vào Tạo quy tắc .
Trên trang tiếp theo, đặt cho quy tắc một Tên , một Mô tả tùy chọn , chọn Xe buýt sự kiện , chọn Quy tắc có mẫu sự kiện và nhấp vào Tiếp theo .
Chọn sự kiện AWS hoặc sự kiện đối tác EventBridge .
Nếu bạn muốn tạo một sự kiện mẫu cho mục đích thử nghiệm, hãy chọn Enter my own và dán vào mẫu sau.
{ "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" } }
Trong Phương thức tạo , chọn Sử dụng biểu mẫu mẫu , sau đó chọn Nguồn sự kiện của dịch vụ AWS . Đối với dịch vụ AWS , hãy chọn Dịch vụ video tương tác (IVS) . Cuối cùng, bên dưới Loại sự kiện , chọn IVS Stream Stage Change .
Chúng tôi có thể giữ nguyên mẫu Sự kiện hoặc chúng tôi có thể giới hạn quy tắc này chỉ cho sự kiện Bắt đầu phát trực tiếp bằng cách nhấp vào Chỉnh sửa mẫu và sửa đổi nó thành như sau:
{ "source": ["aws.ivs"], "detail-type": ["IVS Stream State Change"], "detail": { "event_name": ["Stream Start"] } }
Nhấp vào Mẫu thử nghiệm để đảm bảo rằng mẫu Sự kiện khớp với sự kiện mẫu ở trên, sau đó nhấp vào Tiếp theo .
Trong bước tiếp theo, bên dưới Mục tiêu 1 , hãy chọn dịch vụ AWS . Trong phần Selet a target , chọn Lambda function , sau đó tìm và chọn Lambda function mà chúng ta đã tạo trước đó.
Nhấp vào Tiếp theo , nhập bất kỳ thẻ mong muốn nào, sau đó xem lại và tạo quy tắc.
Tất cả chúng ta đã sẵn sàng để kiểm tra quy tắc của mình. Để làm như vậy, chúng tôi chỉ cần bắt đầu phát tới kênh Amazon IVS. Khi chúng tôi thực hiện, quy tắc của chúng tôi sẽ kích hoạt và hàm Lambda của chúng tôi sẽ được gọi. Trong trường hợp của tôi, điều đó dẫn đến một thông báo đẩy đẹp mắt trên thiết bị di động của tôi.
Trong bài đăng này, chúng tôi đã tạo hàm AWS Lambda để gửi thông báo đẩy và tạo quy tắc Amazon EventBridge để gọi hàm đó khi luồng trực tiếp Amazon IVS của chúng tôi bắt đầu. Chức năng của bạn có thể sẽ liên quan đến một số logic bổ sung để tra cứu người đăng ký dựa trên kênh hiện đang phát sóng, bạn có thể thực hiện việc này dựa trên ARN có trong resources
trong chi tiết sự kiện. Để tìm hiểu thêm, hãy tham khảo tài liệu .