Как перехватить разговор между ботом и пользователем с каждой деталью, такой как textfrom, textto, текст в платформе бота v4 с помощью шаблона «Core-Bot» (v 4.4)? - PullRequest
0 голосов
/ 14 июня 2019

Я пытался использовать следующий код:

В файле Startup.cs

public class Startup {
    public void ConfigureServices(IServiceCollection services) {
        services.AddSingleton < IMiddleware, MyTelemetryMiddleware > ();
        services.AddSingleton < IBotTelemetryClient, MyBotTelemetryClient > ();
    }
}

ниже класса, который я создал:

public class MyTelemetryMiddleware: TelemetryLoggerMiddleware {
 public IBotTelemetryClient _telemetryClient;
 public bool _logPersonalInformation {
  get;
 }

 public MyTelemetryMiddleware(IBotTelemetryClient botTelemetryClient, bool value = true): base(botTelemetryClient, true) {
  _telemetryClient = botTelemetryClient;
  _logPersonalInformation = true;
 }

 protected override async Task OnReceiveActivityAsync(
  Activity activity,
  CancellationToken cancellation) {
  // Fill in the "standard" properties for BotMessageReceived
  // and add our own property.
  var properties = FillReceiveEventProperties(activity,
   new Dictionary < string, string > {
    {
     "MyImportantProperty",
     "myImportantValue"
    }
   });

  // Use TelemetryClient to log event
  TelemetryClient.TrackEvent(
   TelemetryLoggerConstants.BotMsgReceiveEvent,
   properties);


 }
 private Dictionary < string, string > FillReceiveEventProperties(Activity activity, Dictionary < string, string > value) {
  var properties = new Dictionary < string,
   string > () {
    {
     TelemetryConstants.FromIdProperty, activity.From.Id
    }, {
     TelemetryConstants.ConversationNameProperty,
     activity.Conversation.Name
    }, {
     TelemetryConstants.LocaleProperty,
     activity.Locale
    }, {
     TelemetryConstants.RecipientIdProperty,
     activity.Recipient.Id
    }, {
     TelemetryConstants.RecipientNameProperty,
     activity.Recipient.Name
    },
   };

  // Use the LogPersonalInformation flag to toggle logging PII data, text and user name are common examples
  if (_logPersonalInformation) {
   if (!string.IsNullOrWhiteSpace(activity.From.Name)) {
    properties.Add(TelemetryConstants.FromNameProperty, activity.From.Name);
   }

   if (!string.IsNullOrWhiteSpace(activity.Text)) {
    properties.Add(TelemetryConstants.TextProperty, activity.Text);
   }

   if (!string.IsNullOrWhiteSpace(activity.Speak)) {
    properties.Add(TelemetryConstants.SpeakProperty, activity.Speak);
   }
  }

  return properties;
 }
}

Во время выполнения кодаВ соответствии с документацией, представленной на сайте Microsoft, вышеупомянутый класс телеметрии должен получить удар.Я пробовал много раз другим способом, но этот класс не получил удар, и поток идет прямо к самому классу бота.Хотя я внедрил этот класс журнала телеметрии промежуточного программного обеспечения в файле Startup.cs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...