Skip to Content
IntegrationsCompletion and analytics

Completion and analytics

SCL can report two outcomes beyond the feedback page: completion in a parent learning platform and lifecycle events in SCL Analytics. Both are optional and non-blocking.

Learning-platform completion

After AI Factory returns a valid evaluation, the backend checks:

  1. The role-play declares a target platform.
  2. The learner identity contains a user principal name (upn).
  3. The learner identity contains a course module identifier (cmid).

When all three are available, the backend queues a completion request. A background worker calls Learning Platform Integration with the target platform, role-play/activity identifier, course module, learner, and a completed result.

The learner does not wait for the callback. Missing configuration, missing claims, queue failure, retries, or a downstream LPI failure do not change an evaluation response already returned to SCL. Transient delivery failures are retried; messages exceeding the retry limit are isolated for operator attention.

Analytics session

Analytics starts only when the role-play has an analytics tenant and the backend can create a session. Since the analytics proxy hardening, the browser does not call SCL Analytics directly:

  1. When the voice call becomes active, the browser asks the Role Play Evaluation API to create a server-issued session_id.
  2. The backend resolves the environment and obtains the Analytics technical token through Integration Credentials.
  3. The backend creates the Analytics session and returns only the session identifier needed for correlation.
  4. The browser sends lifecycle events to the Evaluation API proxy; backend events are queued and delivered server-side.
  5. A restarted call creates a new Analytics session.

If token or session creation fails, the role-play continues without analytics. SCL does not fabricate a local session identifier.

Event lifecycle

EventEmitted byMeaning
scl.session_startedBrowser through Evaluation API proxySCAI call became active and an analytics session exists
scl.session_finished_by_userBrowser through Evaluation API proxyLearner confirmed Finish
scl.session_cancelled_by_userBrowser through Evaluation API proxyLearner confirmed Cancel
scl.session_ended_by_timeBrowser through Evaluation API proxyStrict or overtime limit ended practice
scl.session_ended_by_errorBrowser through Evaluation API proxyAn active attempt ended because of a connection error
scl.session_unloadedEvaluation backendBrowser hid or unloaded before another terminal event
scl.evaluatedEvaluation backendA valid evaluation was produced
scl.evaluation_failedEvaluation backendAI Factory or evaluation mapping failed

The browser prevents more than one terminal event for an attempt. Unload uses sendBeacon or a keepalive request because normal asynchronous requests may be cancelled as the page closes.

Data carried by analytics

Depending on the event, metadata can include role-play and SCAI identifiers, session mode, configured and elapsed duration, end reason, evaluation score, language, and target-platform reference. The actor can use the learner upn when it is available.

The implemented event paths do not intentionally attach the conversation transcript or voice audio. They do process identifiers and timing data that can still be personal or operationally sensitive and must follow the organization’s analytics governance.

The unload request carries the learner bearer token in its request body solely so the Evaluation API can acquire a technical analytics token. The queued analytics message contains the technical token, not the learner bearer token. The browser never receives or stores the Analytics technical token.

Interpret outcomes correctly

  • Feedback shown means evaluation succeeded.
  • It does not guarantee that learning-platform completion was delivered.
  • Missing analytics does not mean the learner failed or abandoned the role-play.
  • Analytics success does not provide durable transcript or evaluation history.
  • The planned sessions service for learner history and reporting is not implemented.