2016-09-24 1 views
2

나는 다음과 같다 구현하기 위해 노력하고있어 사용 사례에 대한 대화의 흐름에서 위치를 유지하는 방법 :왓슨 회화 : 추가 사용자 입력

  1. 사용자가 소리내어 읽을 수 있도록 웹 페이지의 일부를 요구, 예 : "읽기 지침", "배경 읽기", "노트 재생"등
  2. STT 요청이 대화에 전달되어 (응용 프로그램 서버를 통해) 해석됩니다. 응답이
  3. 응용 프로그램 서버가
  4. 사용 중지, 일시 정지 요청 요청 섹션의 오디오 (왓슨 TTS)을 재생하여 사용자에게 응답 (섹션 유형이 올바르지 경우 지금 프롬프트를 위해 밖으로 떠나) 섹션의 유형을 나타냅니다 계속 또는 선택한 섹션 (STT)을 재생하십시오.

문제가있는 것은 4 단계입니다. 요청이 일시 중지, 중지 또는 계속되면 해당 요청은 별도의 #intent에 의해 처리 될 수 있으며 앱 서버는 그에 따라 <audio> 컨트롤에 명령을 전달합니다. 그러나 요청이 재생되면 원래 요청 된 섹션 유형을 알아야합니다. 애플 리케이션 서버가이 작업을 수행하기 위해 컨텍스트를 설정해야한다는 느낌이 들지만 문서를 읽는 방법이 명확하지 않다. 모든 예제 또는 문서를 높이 평가.

답변

1

모든 JSON 응답은 대화의 로드맵입니다. 따라서 응답에서 관련 System + Context 객체를 가져온다면 이전 응답을 되 찾을 수 있습니다.

이렇게 접근하는 방법 중 하나입니다.

컨텍스트 변수에서 인 텐트/엔티티를 캡처하려면 출력 노드 (고급)에서 다음을 수행 할 수 있습니다.

{ 
    "output": {}, 
    "context": { 
    "lastIntent": "<? intents[0].intent ?>", 
    "lastConfidence": "<? intents[0].confidence ?>", 
    "lastEntity": "<? entities[0].value ?>" 
    } 
} 

현재로서는 텍스트 값으로 저장하면 작동합니다. 당신은 같은 것을 할 수있는 조건 노드에서

"confidence": <? intents[0].confidence ?>, 

: 그래서 다음을 수행 할 수 없습니다 내가 응용 프로그램 서버를 코딩에 도착 시몬의 제안을하려고합니다

intents[0].intent == context.lastIntent 
+0

감사합니다. Simon. 지금까지 나는 제한된 추가 코딩으로 대화 상자를 개발하기 위해 API 도구 만 사용하려고 시도했지만 서버 측을 개발하면서 사용자가 제안한 것과 같은 정보를 추가 할 것입니다. 내가 대처할 수 있었던 대안에 대한 나의 대답을 보라. 나는 이것이 최선의 흐름인지 궁극적으로 최종적인 흐름인지는 모르지만 지금은 효과가있다. – LWK69

1

을하지만, 지금은 API 도구를 사용하여 원하는대로 할 수있는 방법을 발견했습니다. 여기에 관련 대화 흐름의 이미지는 다음과 같습니다

enter image description here

사용자는 #play_element + @recipeElement 조건을 트리거 "재료를 읽기"를 말한다. 그런 다음 "일시 중지"라고 말하면 Watson은 @recipeElement 조건을 참조한다는 것을 알고 있습니다. "Continue"또는 "Replay"라고 말하면 여전히 같은 요소를 참조합니다. 그러나 "중지"는 루프를 종료합니다. 이제 멈춤을 말하고, 계속 말하고, 멈춘다 고 말한 후 다시 재생하는 방법을 알아 내야 만합니다. 현재는 기타 조건이 작동하지 않는 것 같아서 #play_element 조건으로 돌아갑니다.