2016-09-22 1 views
2

간단한 고객 서비스 BOT을 구축하고 LUIS 모델을 설계했으며 주문 번호가 없을 때 큰 효과를 발휘합니다. 첫 번째 단계 자체에서 제공됩니다. 예를 들면. 내 주문 ABC0898787의 상태가 뭐죠? 인 텐트가 올바르게 감지되고 ABC0898787이 엔티티로 식별됩니다.두 번째 단계에서 엔티티에게 물어 보려는 BOT

사용자 : 순서를 더

사용자를 제공하지 않습니다하십시오 : 내 주문

봇의 상태가 뭐죠 (그것은이다

그러나, 다음과 같은 대화를하기 위해 로봇을 적용 할 필요가 ABC0986767) 또는 (ABC0986767)

봇은 숫자를 엔티티에 매핑하고 요청을 처리 할 수 ​​있어야합니다.

인 텐트 메소드의 코드는 하나의 단어를 엔터티로 사용하도록 LUIS 모델을 설정하지 않고 두 번째 단계를 통합하는 가장 좋은 방법은 무엇입니까?

[LuisIntent("OrderStatus")] 
     public async Task OrderStatus(IDialogContext context, LuisResult result) 
     { 
      var returnMsg = "You wanted to check the order status"; 
      var orderStatus = "Dispatched"; 
      var deliveryDate = DateTime.Now.AddDays(3); 

      var entities = new List<EntityRecommendation>(result.Entities); 
      if(entities.Any((entity)=> entity.Type == "Order")) 
      { 
       var orderEntity = entities.Where((entity) => entity.Type == "Order").FirstOrDefault(); 
       var resolutionStr = orderEntity.Entity; 
       if(!string.IsNullOrEmpty(resolutionStr)) 
       { 
        returnMsg = "Your order " + resolutionStr + " is " + orderStatus + " and expected to arrive " + deliveryDate.Humanize(); 
       } 
      } 

      await context.PostAsync(returnMsg); 
      context.Wait(MessageReceived); 
     } 

답변

1

MessageReceived를 사용자 입력을 취할 메소드 이름으로 바꿉니다. 그 전에 엔티티가 있는지 확인하십시오. 존재하는 경우는 MessageReceived, 그렇지 않은 경우는이 메소드를 사용합니다.

의사 코드 :

if (entity.exists) 
    OutputResult() 
    Context.Wait(MessageReceived) 
else //entitiy doesn't exist 
    SendMessage("Please enter order number") 
    Context.Wait(MyMethod) 

MyMethod라는 불리는 방법은 다음과 같이 시작된다 : (I 마이크로 소프트가 MessageReceived이 방법의 단지 이름임을 충분히 명확하지 않았다고 생각

public async Task MyMethod(IDialogContext context, IAwaitable<IMessageActivity> argument) 
{ 
    var response = await argument; 
    string text = response.Text; 

을 당신이 보이지 않음), 다른 방법의 이름으로 바꿀 수 있습니다. 코드가 context.Wait()에 도달하지 않는 한 조건에 따라 메서드에 여러 개의 context.Wait이있을 수도 있습니다. 사용자가 새 메시지를 보내기 전에 두 번 누릅니다.

+0

시도해 보았지만 IAwaitable 인수를 사용하면 context.Wait에서 컴파일 오류가 발생합니다. 만약 내가 사용자 IAwaitable 그것은 잘 컴파일합니다. 그러나 마지막 행동은 정확하지 않습니다. – Vikram

+0

기본적으로 BOT는 사용자에게 주문 번호를 제공하라는 메시지를 표시해야합니다. – Vikram

+0

기본적으로 봇은 사용자에게 참조 번호 (내 LUIS 모델의 엔티티에 매핑 됨)를 물어보아야하며 이전에이 단일 단어 입력을 사용해야하며 LUIS는 엔티티를 동일하게 검색해야합니다. 그게 충분히 설명하는 경우 잘 모르겠어요 – Vikram