티스토리 뷰

반응형

대화한 내용을 찾아보기 위해서 Log나 History 기능을 검색했고, 아래와 같은 결론을 내렸습니다. 참고하세용


음..이미지는 Log 이미지입니다. 흐흐흐;;;




1. How can i get all the chat history of bot and the user ?

https://github.com/Microsoft/BotBuilder/issues/2073#issuecomment-273982401


이슈 트래킹에 따르면, 대화 내용은 private하기 때문에 대부분의 봇들이 히스토리 기능을 기본 제공을 하지 않는다고 합니다. 히스토리가 필요하면 직접 구현해야한다고..



2. 간단하게 구현하는 방법은 내부에 IList<string> 이나 IDictionary<string,string>을 이용해서 간단하게 저장했다가 사용하는 방법이 있습니다.


    public sealed class WillActivityLogger : IActivityLogger
    {
        async Task IActivityLogger.LogAsync(IActivity activity)
        {
            //log here
            var message = activity.AsMessageActivity();
            var id = string.IsNullOrEmpty(message.Id) ? "BotToUser" : message.Id;
            Debug.WriteLine($"Id : {id}, Text : {message.Text}");
        }
    }


    [BotAuthentication]
    public class MessagesController : ApiController
    {
        static MessagesController()
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<WillActivityLogger>().AsImplementedInterfaces().InstancePerDependency();
            builder.Update(Conversation.Container);
        }

        ...

    }


기본 MessageController를 약간 수정한 것 입니다. 로그를 남기는 sealed class를 하나 생성하고, 기능을 구현한 후, MessagesController가 생성되는 시점에 로그를 남길 수 있도록 쑤셔 넣는 것입니다.



Id : 63ddlg3dk2cnmk847c, Text : 좋아하는 음식은 뭐에요?
Id : BotToUser, Text : 할로~ 카키봇입니다.


위와 같은 로그를 Output 창에서 볼 수 있습니다.



3. 이슈 트래킹 아래로 계속 내려가면 Azure table storage에 로그를 남기는 방법에 대해서도 간단하게 나옵니다. 봇 프레임웍이 내부적으로 남기는 로그는 1mb이내이기 때문에 그 이상의 데이터를 남겨야 하는 경우에 사용하기를 바란다는 내용이 있네요..



4. 이슈 트래킹 더~ 하단에는  LogPostToBot and LogBotUser. 것을 이용하세요라고 안내를 하기도 합니다. 아마 이 부분에 대한 요구가 많았던 것 같습니다. 이렇게 만들어 줄거면;;; 그냥 첨부터 기능 넣어주지..



그래서 최종적으로 로그를 남기고 싶다면 별도록 구현해야하며, 1mb이상은 별도 서비스를 이용하여야 한다.. 정도가 될 것 같습니다.



추가로 아래 내용도 있습니다. 뭐 비슷한 내용입니다만..

http://stackoverflow.com/questions/41309532/how-to-log-a-chat-conversation-with-bot-framework-c-sharp-bot-builder

반응형
댓글