// Track which app/user is sending the summary (summary can be sent by another process (CrashReportClient) or another instance in case of crash/abnormal terminaison.
AnalyticsAttributes.Emplace(TEXT("SummarySenderEngineVersion"),FEngineVersion::Current().ToString(EVersionComponent::Changelist));// Same as in EditorSessionSummaryWriter.cpp
AnalyticsAttributes.Emplace(TEXT("SummarySenderSessionId"),AnalyticsProvider.GetSessionID());// Not stripping the {} around the GUID like EditorSessionSummaryWriter does with SessionId.
// Sending the summary event of the current process analytic session?
if(AnalyticsProvider.GetSessionID().Contains(SessionId))// The string (GUID) returned by GetSessionID() is surrounded with braces like "{3FEA3232-...}" while Session.SessionId is not -> "3FEA3232-..."
else// The summary was created by another process/instance in a different session. (Ex: Editor sending a summary of a previoulsy crashed instance or CrashReportClient sending it on behalf of the Editor)
{
// The provider sending a 'summary event' created by another instance/process must parametrize its post request 'as if' it was sent from the instance/session that created it (backend expectation).
// Create a new provider to avoid interfering with the current session events. (ex. if another thread sends telemetry at the same time, don't accidently tag it with the wrong SessionID, AppID, etc.).
// Reconfigure the analytics provider to sent the summary event 'as if' it was sent by the process that created it. This is required by the analytics backend.