Session and Client Identification

Client identification

The external ID allows an application to establish a unique identifier for each participant when applying for a client access token. This ID can be a free-form string with a limit of 1,024 bytes. This flexible scheme allows adding supplementary metadata information to the local participant's identity in the application. If you do not provide an external ID, you can still initiate a session but cannot verify the participant's identity in a conference.

The identification information provided via the client access token request becomes a part of ParticipantInfo (Web, iOS, Android, C++, .NET, Flutter, React Native) and is available to all remote participants.

Opening a session

A session is responsible for a connection between a client application and the Dolby.io Communications APIs Platform. A client application can connect to the platform only after providing the local participant's identification information and opening a session. An optional external name and an external avatar URL can be provided by an application via the open method (Web, iOS, Android, C++, .NET, Flutter, React Native) to help uniquely identify an application user.

await VoxeetSDK.session.open({
  name: externalName,
  avatarUrl: url
});
let participantInfo = VTParticipantInfo()
participantInfo.name = "participant name"
participantInfo.avatarURL = "participant avatar URL"
VoxeetSDK.shared.session.open(info: participantInfo) { error in
    // check the error
}
ParticipantInfo participantInfo = new ParticipantInfo(userName, avatarUrl);

Promise<Boolean> promise = VoxeetSDK.session().open(participantInfo);
// in a coroutine scope
val participantInfo = ParticipantInfo(userName, avatarUrl)

val opened = VoxeetSDK.session().open(participantInfo).await()
dolbyio::comms::services::session::user_info user;
    user.name = "User";
    user.avatarUrl = "...";
    sdk->session()
        .open(std::move(user))
        .then([](auto&& new_user_info) {
          std::cerr << "user ID = " << new_user_info.participant_id.value() << std::endl;
        })
        .on_error([](auto&& err) { std::cerr << "Cannot log in!" << std::endl; });
DolbyIOSDK sdk = new DolbyIOSDK();

UserInfo user = new UserInfo();
user.Name = "My Name";
user.AvatarURL = "https://link.to/avatar-url.png";

await sdk.Session.OpenAsync(user);
var participantInfo = ParticipantInfo(
    "name": name, 
    "avatarUrl": avatarUrl
);
    
await _dolbyioCommsSdkFlutterPlugin.session.open(participantInfo);
var participantInfo: ParticipantInfo = {
  "name": name, 
  "avatarUrl": avatarUrl
};

await CommsAPI.session.open(participantInfo);

Privacy considerations

After a conference, the supplied external name, external ID, and avatar URL are stored in the Dolby.io Communications API Platform and are available to customers through the Monitor API for troubleshooting and data analysis purposes. If end-user privacy is critical for you to ensure HIPAA compliance and you do not wish to share Personal Identifiable Data (PID) with Dolby.io, then use only an anonymized ID as the external ID and an anonymized name as the external name. Doing so guarantees that Dolby.io will never know who the end user is. This also means that your application needs to be responsible for managing the mapping of the end user's human-readable identity, such as the user name to the participant ID.