createChatToken method
Creates an encrypted token that is used by a chat participant to establish an individual WebSocket chat connection to a room. When the token is used to connect to chat, the connection is valid for the session duration specified in the request. The token becomes invalid at the token-expiration timestamp included in the response.
Use the capabilities field to permit an end user to send
messages or moderate a room.
The attributes field securely attaches structured data to the
chat session; the data is included within each message sent by the end
user and received by other participants in the room. Common use cases for
attributes include passing end-user profile data like an icon, display
name, colors, badges, and other display features.
Encryption keys are owned by Amazon IVS Chat and never used directly by your application.
May throw AccessDeniedException.
May throw PendingVerification.
May throw ResourceNotFoundException.
May throw ValidationException.
Parameter roomIdentifier :
Identifier of the room that the client is trying to access. Currently this
must be an ARN.
Parameter userId :
Application-provided ID that uniquely identifies the user associated with
this token. This can be any UTF-8 encoded text.
Parameter attributes :
Application-provided attributes to encode into the token and attach to a
chat session. Map keys and values can contain UTF-8 encoded text. The
maximum length of this field is 1 KB total.
Parameter capabilities :
Set of capabilities that the user is allowed to perform in the room.
Default: None (the capability to view messages is implicitly included in
all requests).
Parameter sessionDurationInMinutes :
Session duration (in minutes), after which the session expires. Default:
60 (1 hour).
Implementation
Future<CreateChatTokenResponse> createChatToken({
required String roomIdentifier,
required String userId,
Map<String, String>? attributes,
List<ChatTokenCapability>? capabilities,
int? sessionDurationInMinutes,
}) async {
_s.validateNumRange(
'sessionDurationInMinutes',
sessionDurationInMinutes,
1,
180,
);
final $payload = <String, dynamic>{
'roomIdentifier': roomIdentifier,
'userId': userId,
if (attributes != null) 'attributes': attributes,
if (capabilities != null)
'capabilities': capabilities.map((e) => e.value).toList(),
if (sessionDurationInMinutes != null)
'sessionDurationInMinutes': sessionDurationInMinutes,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/CreateChatToken',
exceptionFnMap: _exceptionFns,
);
return CreateChatTokenResponse.fromJson(response);
}