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

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

                    properties.Add("json", responseTelemetryData.Json);
                    properties.Add("text", responseTelemetryData.ResponseText);
                    properties.Add("imageUrl", responseTelemetryData.ResponseImageUrl);
                    properties.Add("responseJson", responseTelemetryData.ResponseJson);
                    properties.Add("type", responseTelemetryData.ResponseType);

                    _telemetry.TrackEvent("Response", properties);
                    DoPostLogActions();
                });
            }
        }
 /// <summary>
 /// write response as an asynchronous operation.
 /// </summary>
 /// <param name="responseTelemetryData">The response telemetry data.</param>
 /// <returns>Task.</returns>
 public async Task WriteResponseAsync(IResponseTelemetryData responseTelemetryData)
 {
     await DoWriteTelemetry(responseTelemetryData, TelemetryTypes.Responses, OutputFormatter.FormatResponse);
 }
 /// <summary>
 /// Formats the response.
 /// </summary>
 /// <param name="responseTelemetryData">The response telemetry data.</param>
 /// <returns>System.String.</returns>
 public string FormatResponse(IResponseTelemetryData responseTelemetryData)
 {
     return($"{GetDateTimeString()}\t{GetTelemetryContextProperties()}\tResponse: [ image URL: {responseTelemetryData.ResponseImageUrl} / JSON: {responseTelemetryData.ResponseJson} / type: {responseTelemetryData.ResponseType}] - [{responseTelemetryData.ResponseText}] ");
 }
 /// <summary>
 /// Writes the response.
 /// </summary>
 /// <param name="responseTelemetryData">The response telemetry data.</param>
 /// <returns>Task.</returns>
 public Task WriteResponseAsync(IResponseTelemetryData responseTelemetryData)
 {
     DoWriteTelemetry(responseTelemetryData, TelemetryTypes.Responses, OutputFormatter.FormatResponse);
     return(Task.Delay(0));
 }
 /// <summary>
 /// Formats the response.
 /// </summary>
 /// <param name="responseTelemetryData">The response telemetry data.</param>
 /// <returns>System.String.</returns>
 public string FormatResponse(IResponseTelemetryData responseTelemetryData)
 {
     responseTelemetryData.RecordType = "response";
     return(responseTelemetryData.AsStringWith(_context));
 }