Фреймворк для ботов V4 IActivityLogger

#c# #.net #.net-core #botframework

#c# #.net #.net-ядро #фреймворк для ботов

Вопрос:

Есть ли у нас какой-либо интерфейс, подобный IActivityLogger (V3), в V4 для регистрации всех действий пользователя?

Я хотел регистрировать все запросы пользователей и ответы ботов в моей базе данных cosmos. Я смог сделать это в версии V3, используя интерфейс IActivityLogger.

Пожалуйста, предложите.

Ответ №1:

Интерфейс в V4 — это ITranscriptLogger

 using System.Threading.Tasks;
using Microsoft.Bot.Schema;

namespace Microsoft.Bot.Builder
{
    /// <summary>
    /// Transcript logger stores activities for conversations for recall.
    /// </summary>
    public interface ITranscriptLogger
    {
        /// <summary>
        /// Log an activity to the transcript.
        /// </summary>
        /// <param name="activity">The activity to transcribe.</param>
        /// <returns>A task that represents the work queued to execute.</returns>
        Task LogActivityAsync(IActivity activity);
    }
}
  

Если у вас есть реализация ITranscriptLogger, ее можно добавить в стек промежуточного программного обеспечения с помощью TranscriptLoggerMiddleware

 var transcriptStore = new MyCosmosTranscriptStore(config.TranscriptConnectionString, storageContainer);
var transcriptMiddleware = new TranscriptLoggerMiddleware(transcriptStore);
...
.AddSingleton(_ => transcriptStore);
  

Затем добавьте его в адаптер с помощью adapter.Use(transcriptStore);

Ответ №2:

Да, у нас есть интерфейс ILoggerFactory в версии 4, который используется для регистрации всех действий пользователя.

Например:

 private ILoggerFactory _loggerFactory;

// Create a logger for the application to use.
ILogger logger = _loggerFactory.CreateLogger<ConversationHistoryBot>();

// Catches any errors that occur during a conversation turn and logs them.
options.OnTurnError = async (context, exception) =>
{
    logger.LogError($"Exception caught : {exception}");
    await context.SendActivityAsync("Sorry, it looks like something went wrong.");
};

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    _loggerFactory = loggerFactory;
    
    app.UseDefaultFiles()
       .UseStaticFiles()
       .UseBotFramework();
}
  

Здесь прилагается репозиторий BotBuilder-Samples, в котором вы можете найти историю разговоров, использующую вышеупомянутый интерфейс.