2017-10-04 2 views

답변

0

아키텍처가 실제로 작동하는 데 어떤 문제가 있는지, 제한 사항이 있는지는 분명하지 않지만 C# 웹 응용 프로그램에서 해당 언어로 C#을 사용하고 있다고 가정합니다.

이 자료는 Bot conversation history with Azure Cosmos DB으로 사용할 수 있습니다.

이것은 UserData를 저장하는 방법뿐만 아니라 Cosmos DB에 상태를 저장하는 방법을 보여줍니다 (Cosmos DB의 성능 이점을 얻고 실제로 Bot Framework State의 32KB 한계를 초과하므로 실제로 더 좋습니다) . 그 기사를 다음

, 당신은 코스모스 DB에 저장됩니다

  • 사용자 데이터 저장 : 사용자에게 특정 데이터를 저장합니다.

  • 대화 저장소 : 대화 관련 데이터를 저장합니다.

  • 사적인 대화 스토어 : 당신이 채팅 라인을 저장할 경우는 봇 프레임 워크에서 기본적으로 수행 아니에요, 대화

에서 사용자에게 특정 데이터를 저장합니다. IActivityLogger을 구현하는 클래스를 만들고 채팅을 저장한다는 사실을 사용자에게 알려줘야합니다.

public class CosmosDBActivityLogger : IActivityLogger 
{ 
    private readonly DocumentClient _client; 
    private readonly string _collectionUri; 

    public ServiceBusActivityLogger(DocumentClient client, string databaseName, string collectionName) 
    { 
     this._client = DocumentClient; 

     // This is the collection where you want to store the chat 
     this._collectionUri = UriFactory.CreateDocumentCollectionUri(databaseName, collectionName); 
    } 

    public async Task LogAsync(IActivity activity) 
    { 
     var message = activity.AsMessageActivity(); 
     // At this point you might want to handle your own Activity schema or leave the default 

     // Not handling errors for simplicity's sake, but you should 

     this._client.CreateDocumentAsync(this._collectionUri, message); 
    } 
} 

그런 다음 당신은 당신이 당신의 봇 컨테이너를 선언하는 곳 Global.asax, 예를 들어, 로거를 추가해야합니다 : 미들웨어 here를 등록하는 방법에 대한

protected void Application_Start() 
    { 
     var builder = new ContainerBuilder(); 
     builder.RegisterType<CosmosDBActivityLogger>().AsImplementedInterfaces().InstancePerDependency(); 
     builder.Update(Conversation.Container);  

     GlobalConfiguration.Configure(WebApiConfig.Register); 
    } 

더 많은 정보를.

+0

나는 코스모스 데이터베이스를 저장소 봇 변환 히스토리에 사용했다. 이제 코스모 db를 사용하여 내 인터뷰 봇에 대한 질문과 답변을 저장하고 싶지만 그 방법을 모른다. – user3807114

+0

데이터 스키마에 대해 자세히 설명 할 수 있습니까? Bot의 질문과 답변은 실제로 대화 기록의 일부이며 문서에 설명 된대로 'PrivateConversationData'에 저장할 수 있습니다. –

+1

의견에서 q & a 토론을 시작하지 않는 것이 가장 좋습니다 (특히 답변 아래). 나는 당신이 더 토론하고 싶다면 이것을 [chat] (chat.stackoverflow.com)에 가져갈 것을 제안한다. –