이 저장소는 업데이트되지 않습니다. 저장소는 읽기 전용 모드로 계속 사용 가능합니다.
이 코드 패턴에서는 Watson Assistant Slots 기능을 사용하여 피자 주문을 받는 챗봇을 구축하겠습니다. 이전 버전의 어시스턴트와 달리 크기, 종류, 성분 선택 등 필요한 정보를 모두 하나의 어시스턴트 노드에 입력할 수 있습니다.
독자가 이 코드 패턴을 완료하면 다음 방법을 이해하게 됩니다.
참고 : 이 코드 패턴은 IBM Cloud Pak for Data에서 실행되는 Watson Assistant에 액세스하기 위한 지침을 포함하도록 업데이트되었습니다. 이러한 업데이트는 앱을 로컬로 배치하거나 OpenShift on IBM Cloud에 앱을 배치하기 위한 특정 지시사항에서 찾을 수 있습니다. 필요한 주요 변경 사항은 Watson Assistant 서비스를 호스팅하는 IBM Cloud Pak for Data 클러스터에 액세스하려면 애플리케이션에 추가 자격 증명이 필요하다는 것입니다.
IBM Cloud Pak for Data에 대한 자세한 내용을 보려면 여기를 클릭하십시오.
참고 : 이 코드 패턴은 Watson Assistant 경험을 사용합니다. 2021년 10월 8일 이후 모든 인스턴스(비표준)는 Watson Assistant 화면의 오른쪽 상단으로 이동하고 관리 아이콘을 클릭하여 클래식 및 새 Watson Assistant 환경 간에 전환할 수 있습니다. 어시스턴트 화면의 오른쪽 상단에 있습니다. 둘 사이를 전환하려면 클래식 환경으로 전환을 클릭하거나 새 환경으로 전환을 클릭하세요.
IBM Cloud에서 Cloud Foundry 사용 | IBM Cloud의 Kubernetes 서비스 사용 |
---|---|
앱 배포에 대한 지침을 보려면 아래 옵션 중 하나를 클릭하세요.
슬롯의 장점은 Watson Assistant 대화 상자에서 로직을 구현하는 데 필요한 노드 수를 줄이는 방법에 있습니다. 다음은 이전 방법을 사용한 부분 대화 대화 상자입니다.
다음은 Pizza ordering
노드에 모든 로직을 배치하는 슬롯을 사용하는 보다 완전한 대화 상자입니다.
대화 상자를 열면 다음을 살펴보겠습니다.
각 슬롯은 챗봇에 채워질 필드( pizza_size
, pizza_type
및 pizza_topings
를 나타냅니다. 존재하지 않는 경우 관련 변수( $pizza_size
, $pizza_type
등)를 통해 모두 채워질 때까지 맨 위에서 시작하여 사용자에게 메시지가 표시됩니다.
구성을 클릭하세요.더 많은 기능을 추가하려면:
여기서는 이 슬롯이 채워졌을 때(Found) 응답을 추가할 수 있습니다. 하나의 성분에 대해 논리를 사용할 수 있습니다.
또는 두 가지 이상의 성분이 추가된 경우:
"추가 토핑이 있습니까?"라는 질문에 대한 예 또는 아니요 답변을 처리하는 논리를 추가했습니다.
3개의 원을 클릭하세요. Open JSON editor
선택하여 json을 직접 편집합니다.
여기서는 컨텍스트: {"pizza_topings"} 필드에 빈 값을 설정했으므로 이 슬롯을 채워 루프를 종료할 수 있습니다.
마지막으로 슬롯이 모두 채워지면 응답을 추가합니다.
배열의 크기가 0보다 큰 것을 감지하여 "pizza_toppings"가 있는 경우부터 시작합니다. 여기서는 선택적 "pizza_place" 슬롯이 채워지는 경우를 먼저 처리하고, 그렇지 않은 경우를 처리합니다.
마지막으로 프롬프트에 대한 사용자의 답변을 찾을 수 없는 경우를 위한 핸들러를 추가합니다. "help" 인텐트에 대한 핸들러를 추가했습니다.
모든 필드를 null
로 재설정하는 #reset
인텐트를 처리하는 대화 노드가 있습니다.
대화 예시와 관련 json을 살펴보겠습니다. Watson Pizzeria가 실행 중인 상태에서 대화 상자를 시작하고 피자 봇에게 큰 피자를 원한다고 말하는 것부터 시작하세요.
'사용자 입력'에는 "input"{"text"} 필드와 Assistant가 내부 상태를 추적하는 데 주로 사용되는 "컨텍스트"가 표시됩니다. Watson이 intents
Watson Understands
하고 살펴보기까지 아래로 스크롤합니다.
"주문"에 대한 의도가 감지됩니다. 이제 "pizza_size" 엔터티는 채워지는 슬롯입니다. 여전히 "pizza_type"과 "pizza_toppings"라는 2개의 필수 슬롯이 있습니다. 다음 항목이 채워질 때까지 사용자에게 메시지가 표시됩니다.
이제 필수 슬롯이 모두 채워졌음을 확인할 수 있습니다.
Watson Pizzeria에게 우리가 레스토랑에서 피자를 먹고 싶다고 말하고 싶다면 어떻게 해야 할까요? 너무 늦었어요! "pizza_place"에 대한 슬롯은 선택 사항이므로 사용자에게 이를 묻는 메시지가 표시되지 않습니다. 필요한 슬롯이 채워지면 "Pizza Ordering" 대화 상자 노드를 종료합니다. 사용자는 먼저 선택적 슬롯을 채워야 합니다. 다시 시작하려면 재설정을 입력하고 "to eat there..."라는 문구를 추가하여 이를 테스트하세요.
cf push
사용하여 배포하면 다음이 제공됩니다. FAILED Could not find service <Watson_service> to bind to <IBM_Cloud_application>
서비스 이름을 wcsi-conversation-service
로 지정하면 작동합니다. cf push
사용하면 manifest.yml
에 나열된 서비스에 바인딩하려고 합니다.
따라서 이 작업을 수행할 수 있는 두 가지 방법이 있습니다.
참고:
Deploy to IBM Cloud
버튼은 서비스를 즉석에서(올바른 이름으로) 생성하여 이 문제를 해결합니다.
이 코드 패턴은 Apache 소프트웨어 라이센스 버전 2에 따라 라이센스가 부여됩니다. 이 코드 패턴 내에서 호출되는 별도의 제3자 코드 개체는 해당 공급자가 자체 라이센스에 따라 라이센스를 부여합니다. 기여에는 DCO(개발자 인증서 버전 1.1) 및 Apache 소프트웨어 라이센스 버전 2가 적용됩니다.
Apache 소프트웨어 라이센스(ASL) FAQ