컨텍스트
사람과 사람이 대화를 나눌 때를 생각해보면 언제나 특정 문맥적인 상황을 기반으로 이야기하듯이 (예를 들어, ‘날씨’ 등 한 가지 주제로 대화할 때처럼), 사람과 봇 사이에서도 대화를 나눌 때 이와 유사하게 문맥적 상황 공유를 할수 있습니다.
챗봇 관리자센터 안에서는 바로 컨텍스트(Context) 라는 기능을 통해서 봇 작업자가, 블록 안에서 직접 해당 컨텍스트를 정의하고, 블록간 연결 및 관리를 수행할 수 있습니다. 컨텍스트가 잘 정의되어 있다면, 봇은 사용자에게 보다 똑똑하고 매끄러운 대화를 경험할 수 있게 해줍니다.
컨텍스트를 언제 쓰나요?
컨텍스트는 서로 다른 블록 간 ‘연결고리’를 만들고 싶을 때 씁니다. 이 연결고리가 곧 컨텍스트입니다. 서로 다른 의도를 나타내는 블록들이 하나의 컨텍스트로 묶여서 연결될 수 있습니다.
챗봇 관리자센터에서의 컨텍스트 구조에 대한 도식
Information.
상기 도식처럼, 서로 다른 블록이 연결되기 위해서는 A라는 블록에서 컨텍스트를 내보내기 위한 '아웃풋(Output)' 컨텍스트가 설정되고, B라는 블록에서 컨텍스트를 받기 위한 '인풋(Input)' 컨텍스트가 반드시 설정되어야 합니다.
그럼, 컨텍스트를 활용한 아주 간단한 예시를 다음과 같이 들어보겠습니다.
음료 주문 상황(Context)에서 주문 확정과 취소를 실행하는 블록 구성 예시
본 예시에서는 구조적으로 2개의 서로 다른 블록이 존재합니다.
1번 블록 음료 주문을 확정하는 기본 블록(블록명 : Order_confirm)
Example.
- 패턴 발화 : 아메리카노 1잔
- 음료를 주문하는 대화 상황을 '주문상황(Ordering)'이라는 컨텍스트로 정의하고 내보냄(Output Context)
2번 블록 음료를 취소하는 기본 블록 (블록명 : Order_cancel)
Example.
- 패턴 발화 : 취소해줘
- 이전 대화의 '주문상황(Ordering)'을 컨텍스트로 받아서 활용(Input Context)
이러한 2개의 다른 블록은 ‘Ordering’이라는 컨텍스트, 즉 ‘문맥’을 서로 공유하는 형태로 챗봇 관리자센터 안에 연결되어 있습니다.
1번 블록에 해당하는 사용자 발화가 시작되면, 기 작성된 2개의 블록은 곧바로 ‘Ordering’이라는 컨텍스트를 공유하게 됩니다. (1번 블록이 컨텍스트를 내보내는 경우)
컨텍스트가 일정 유효 시간(또는 일정 유효 횟수) 동안 유지되면서 대화 중간에 사용자가 봇에게 2번 블록에 해당하는 패턴발화를 말하면, 봇은 주문상황(Ordering) 문맥하에 앞서 실행된 대화안에서의 문맥 정보나 특정 파라미터값을 받아서 2번 블록에서 의도되었던 사용자 응답 메세지를 출력합니다.
본 주문상황(Ordering) 문맥하에 아래처럼 추가적인 3번 블록을 만들어서 수량을 변경하는 액션을 추가할 수도 있습니다.
음료 주문 상황(Context)에서 주문 확정과 수량변경을 실행하는 블록 구성 예시
위 예시들의 2번 블록을 이용한 취소, 3번 블록을 이용한 변경에 따른 결과값(response)은 문맥 정보(Ordering)가 있기에 출력이 가능합니다. 만약, 문맥 정보가 내보내지지 않거나 2번, 3번 블록에서 문맥 정보를 받아두지 않았다면 봇은 문맥을 이해하지 못했기 때문에 폴백블록이 출력됩니다.
컨텍스트, 이것만 기억해요!
- 봇 작업자는 블록 정보를 주고받을 수 있습니다. 이때, 하나의 블록에서 다른 블록으로 전달 가능한 정보와 불가한 정보는 아래와 같습니다.
스킬 서버에 대한 자세한 내용은 스킬 개발 가이드 > 스킬 서버 이해하기를 참조하시길 바랍니다
- 정보를 받는 블록은 연결이 유효할 때만 실행될 수 있습니다. (조건부임)
기본적으로 챗봇 관리자센터를 통해 만든 블록은, 사용자의 발화 또는 이벤트 정보가 블록안의 내용과 매칭되면 실행됩니다. 여기에 컨텍스트 조건을 부여하고 싶다면, 아래와 같이 블록 설정 버튼을 클릭한 후, ‘컨텍스트 설정’ 메뉴로 진입하여 간단하게 필요 구성값을 입력해주시기만 하면 됩니다.
컨텍스트 설정 메뉴 위치
컨텍스트 메뉴의 3가지 필요 구성값
- 인풋(Input) 컨텍스트
- 아웃풋(Output) 컨텍스트
- 대화 문맥이 살아있는 '컨텍스트 수명(Lifespan)'과 '유효시간(TTL)'
컨텍스트 설정 메뉴내 상세 컨텍스트 조건 설정 화면입니다. – Input 컨텍스트 / Output 컨텍스트 / 컨텍스트 수명 및 유효시간이 나타나 있습니다.
상세한 설정 방법은 튜토리얼 > 컨텍스트 사용하기를 참조하시길 바랍니다.