/// <summary>
        /// report service result as an asynchronous operation.
        /// </summary>
        /// <param name="serviceResultTelemetryData">The service result telemetry data.</param>
        /// <returns>Task.</returns>
        /// <exception cref="Proteus.Bot.Builder.Extensions.Telemetry.TelemetryException">Failed to write to TelemetryWriters.</exception>
        public async Task ReportServiceResultAsync(IServiceResultTelemetryData serviceResultTelemetryData)
        {
            try
            {
                var tasks = new List <Task>();
                TelemetryWriters.ForEach(tw => { tasks.Add(tw.WriteServiceResultAsync(serviceResultTelemetryData)); });

                await Task.WhenAll(tasks);
            }
            catch (Exception e)
            {
                if (!Configuration.FailSilently)
                {
                    throw new TelemetryException("Failed to write to TelemetryWriters.", e);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// write service result as an asynchronous operation.
        /// </summary>
        /// <param name="serviceResultTelemetryData">The service result telemetry data.</param>
        /// <returns>Task.</returns>
        public async Task WriteServiceResultAsync(IServiceResultTelemetryData serviceResultTelemetryData)
        {
            if (_configuration.Handles(TelemetryTypes.ServiceResults))
            {
                await Task.Run(() =>
                {
                    var properties = GetBotContextProperties();

                    properties.Add("json", serviceResultTelemetryData.Json);
                    properties.Add("name", serviceResultTelemetryData.ServiceResultName);
                    properties.Add("success", serviceResultTelemetryData.ServiceResultSuccess.ToString());
                    properties.Add("response", serviceResultTelemetryData.ServiceResultResponse);

                    var metrics = new Dictionary <string, double>
                    {
                        { "milliseconds", serviceResultTelemetryData.ServiceResultMilliseconds }
                    };

                    _telemetry.TrackEvent("ServiceResult", properties, metrics);
                    DoPostLogActions();
                });
            }
        }
 /// <summary>
 /// write service result as an asynchronous operation.
 /// </summary>
 /// <param name="serviceResultTelemetryData">The service result telemetry data.</param>
 /// <returns>Task.</returns>
 public async Task WriteServiceResultAsync(IServiceResultTelemetryData serviceResultTelemetryData)
 {
     await DoWriteTelemetry(serviceResultTelemetryData, TelemetryTypes.ServiceResults, OutputFormatter.FormatServiceResult);
 }
 /// <summary>
 /// Formats the service result.
 /// </summary>
 /// <param name="serviceResultTelemetryData">The service result telemetry data.</param>
 /// <returns>System.String.</returns>
 public string FormatServiceResult(IServiceResultTelemetryData serviceResultTelemetryData)
 {
     return($"{GetDateTimeString()}\t{GetTelemetryContextProperties()}\tServiceResult: [{serviceResultTelemetryData.ServiceResultName}] - result: [{serviceResultTelemetryData.ServiceResultResponse}] - duration(ms): [{serviceResultTelemetryData.ServiceResultEndDateTime.Subtract(serviceResultTelemetryData.ServiceResultStartDateTime).TotalMilliseconds}] - success: [{serviceResultTelemetryData.ServiceResultSuccess}]");
 }
 /// <summary>
 /// Writes the service result.
 /// </summary>
 /// <param name="serviceResultTelemetryData">The service result telemetry data.</param>
 /// <returns>Task.</returns>
 public Task WriteServiceResultAsync(IServiceResultTelemetryData serviceResultTelemetryData)
 {
     DoWriteTelemetry(serviceResultTelemetryData, TelemetryTypes.ServiceResults, OutputFormatter.FormatServiceResult);
     return(Task.Delay(0));
 }
 /// <summary>
 /// Formats the service result.
 /// </summary>
 /// <param name="serviceResultTelemetryData">The service result telemetry data.</param>
 /// <returns>System.String.</returns>
 public string FormatServiceResult(IServiceResultTelemetryData serviceResultTelemetryData)
 {
     serviceResultTelemetryData.RecordType = "serviceResult";
     return(serviceResultTelemetryData.AsStringWith(_context));
 }