AWS has added a messaging service to its Chime SDK, used by developers to build real-time conferencing features into applications.
The Chime SDK is related to the Amazon Chime videoconferencing service, but there is no access from one to the other, and developers can only use the SDK for dedicated online meetings.
There are several options for adding conferencing to an application, presuming developers prefer not to go down the route of implementing their own video-streaming APIs. Examples include Twilio, which has a programmable video service, Microsoft's Azure Communication Services, or an open-source solution aimed mainly at education called BigBlueButton, though organisations going the open-source route will need their own server as well as a TURN (Traversal Using Relays around NAT) to enable successful connections behind firewalls.
The AWS version has a significant attraction, which is its pricing. Twilio is $0.004 per participant/minute. Azure Communication Services is $0.004 per user/minute for voice and video, while Chime SDK is $0.0017 per attendee/minute for video – less than half the cost, though recently increased from $0.0015 per attendee/minute.
The AWS Chime SDK is longer established than Microsoft's solution, which only recently went into preview, but the Azure offer had something the Chime SDK lacked, which was a chat service at $0.0008/user message.
Until now, that is. AWS has just introduced a chat API at $0.0007 per sent message and $0.00001 per delivered message. It is perhaps surprising that the Chime SDK did not already do chat, as it is technically easier than video.
There are a few extras in the new feature. Developers can create channels with up to 100,000 members. You can also integrate with AWS Cognito, a user directory service, for authentication and with S3 (Simple Storage Service) for attachments. These last are optional: developers can also use any identity provider or any storage service, since it is all under programmatic control.
There is one odd thing, which is that the messaging API does not seem well integrated with the videoconferencing API. A videoconference is, in Chime SDK terms, a meeting, and users are added to a meeting using the CreateAttendee API. The messaging API is documented separately and requires the developer to create an "app instance" and then to attach an IAM (Identity and Access Management) policy to the user that allows access to send and receive messages from the channels which are defined for the app instance. The two approaches seem to be entirely different, whereas you might have thought that by joining a user to a video meeting, they could automatically have access to messaging. The developer can wrap the two together, though so this is hidden from actual users.