/// <summary>
        /// report intent as an asynchronous operation.
        /// </summary>
        /// <param name="intentTelemetryData">The intent telemetry data.</param>
        /// <returns>Task.</returns>
        /// <exception cref="Proteus.Bot.Builder.Extensions.Telemetry.TelemetryException">Failed to write to TelemetryWriters.</exception>
        public async Task ReportIntentAsync(IIntentTelemetryData intentTelemetryData)
        {
            try
            {
                var tasks = new List <Task>();
                TelemetryWriters.ForEach(tw => { tasks.Add(tw.WriteIntentAsync(intentTelemetryData)); });
                TelemetryWriters.ForEach(tw => { tasks.AddRange(ProcessEntities(intentTelemetryData.IntentEntities)); });

                await Task.WhenAll(tasks);
            }
            catch (Exception e)
            {
                if (!Configuration.FailSilently)
                {
                    throw new TelemetryException("Failed to write to TelemetryWriters.", e);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// write intent as an asynchronous operation.
        /// </summary>
        /// <param name="intentTelemetryData">The intent telemetry data.</param>
        /// <returns>Task.</returns>
        public async Task WriteIntentAsync(IIntentTelemetryData intentTelemetryData)
        {
            if (_configuration.Handles(TelemetryTypes.Intents))
            {
                await Task.Run(() =>
                {
                    var properties = GetBotContextProperties();

                    properties.Add("json", intentTelemetryData.Json);
                    properties.Add("name", intentTelemetryData.IntentName);
                    properties.Add("text", intentTelemetryData.IntentText);
                    properties.Add("hasAmbiguousEntities", intentTelemetryData.IntentHasAmbiguousEntities.ToString());

                    var metrics = new Dictionary <string, double>
                    {
                        { "score", intentTelemetryData.IntentConfidenceScore ?? 0d }
                    };

                    _telemetry.TrackEvent("Intent", properties, metrics);
                    DoPostLogActions();
                });
            }
        }
 /// <summary>
 /// write intent as an asynchronous operation.
 /// </summary>
 /// <param name="intentTelemetryData">The intent telemetry data.</param>
 /// <returns>Task.</returns>
 public async Task WriteIntentAsync(IIntentTelemetryData intentTelemetryData)
 {
     await DoWriteTelemetry(intentTelemetryData, TelemetryTypes.Intents, OutputFormatter.FormatIntent);
 }
 /// <summary>
 /// Formats the intent.
 /// </summary>
 /// <param name="intentTelemetryData">The intent telemetry data.</param>
 /// <returns>System.String.</returns>
 public string FormatIntent(IIntentTelemetryData intentTelemetryData)
 {
     return($"{GetDateTimeString()}\t{GetTelemetryContextProperties()}\tIntent: [{intentTelemetryData.IntentName} ({intentTelemetryData.IntentConfidenceScore}) / Ambiguous Entities: {intentTelemetryData.IntentHasAmbiguousEntities}] - [{intentTelemetryData.IntentText}]");
 }
 /// <summary>
 /// Writes the intent.
 /// </summary>
 /// <param name="intentTelemetryData">The intent telemetry data.</param>
 /// <returns>Task.</returns>
 public Task WriteIntentAsync(IIntentTelemetryData intentTelemetryData)
 {
     DoWriteTelemetry(intentTelemetryData, TelemetryTypes.Intents, OutputFormatter.FormatIntent);
     return(Task.Delay(0));
 }
 /// <summary>
 /// Formats the intent.
 /// </summary>
 /// <param name="intentTelemetryData">The intent telemetry data.</param>
 /// <returns>System.String.</returns>
 public string FormatIntent(IIntentTelemetryData intentTelemetryData)
 {
     intentTelemetryData.RecordType = "intent";
     return(intentTelemetryData.AsStringWith(_context));
 }