The latest addition to my demo portfolio is a page to host monetized video calls using the Jitsi Meet API.
Jitsi is an open source community that has built an end-to-end encrypted videoconferencing tool called Jitsi Meet which is compatible with WebRTC. You can use Jitsi's hosted instance or you can decide to host your own. Jitsi Meet also exposes an API that allows you to embed calls into a webpage. This is precisely what I used for this demo.
A video call host specifies a call name and a payment pointer that will receive the streamed mircopayments from the call participants. The host then shares the link to the video call, which is generated for him/her, with the participants, who can only join the call if they have Web Monetization enabled. If Web Monetization is not enabled, participants will see an error message. If participants switch to another tab and Web Monetization is stopped, they are automatically removed from the call. A more detailed walk through including a video can be found in my blog post. Here is the demo:
I would say that this demo is the furthest from being a product and here is why: First, by using the Jitsi API, the actual call is hosted on meet.jit.si, so any participant who receives the URL to the video call can just copy the room name and attend the meeting on meet.jit.si without streaming payments.
Second, even if we hosted our own instance of Jitsi and made the UI inaccessible or added a payment pointer form to the UI, participants could still swap that payment pointer in the meta tag. The demo only checks that payments are streamed, not to whom. This can only be fixed by integrating with the new STREAM receipts verifier.
Finally, the amounts that are being streamed are usually too low for the use cases is was thinking of, like online tutoring or counseling. For that, we would have to introduce adjustable streaming rates or at least tipping functionality. If the price to attend a video call becomes very high, however, it may make sense to use the Open Payments standard instead of Web Monetization. I can imagine a flow where the host creates a mandate against the participants wallet that allows him to charge every minute the participant is on the call.
Do you have other ideas about how to elevate this idea from a demo to a useful solution? Please share them with us in the comments below!