createSession method

  1. @override
Future<KletsoSessionBootstrap> createSession({
  1. required String agentId,
  2. required KletsoDevice device,
  3. String? userToken,
  4. String? visitorId,
  5. JsonMap context = const <String, Object?>{},
})
override

POST /v1/sessions.

Implementation

@override
Future<KletsoSessionBootstrap> createSession({
  required String agentId,
  required KletsoDevice device,
  String? userToken,
  String? visitorId,
  JsonMap context = const <String, Object?>{},
}) async {
  await _latency();
  if (_closed) throw const KletsoStateException('backend closed');
  final endUserId = userToken != null
      ? 'eu_${userToken.hashCode.toRadixString(36)}'
      : 'eu_${(visitorId ?? 'anon').hashCode.toRadixString(36)}';
  final session = _Session(
    id: _id('ses'),
    token: 'kst_${_id('tok')}',
    endUserId: endUserId,
    anonymous: userToken == null,
    context: Map<String, Object?>.of(context),
  );
  _sessions[session.token] = session;
  return _bootstrap(session);
}