Dialogflow 웹앱 시리즈입니다.
- Dialogflow - 1. Intent
- Dialogflow - 2. Context
- Dialogflow - 3. Fulfillment
- Dialogflow - 4. 외부 사이트 연동
- Dialogflow - 5. Webhook
- Dialogflow - 6. 클라이언트
- Dialogflow - 7. 챗봇 클라이언트
- Dialogflow - 8. Node.js 클라이언트
- Dialogflow - 9. React 클라이언트
지난 편에서 우리는 Dialogflow 에이전트를 만들고 날씨 인텐트를 만들어 보면서 개념을 이해했습니다.
오늘은 컨텍스트(Context)에 대해 이해해 봅시다.
날씨 대화 같은 경우에는 "오늘 날씨 어때?" / "응, 좋아." 1회성으로 끝나지만, 보통 대화의 경우에는 몇 번씩 주고 받는 이른바 티키타카인 경우가 많죠. 컨텍스트는 그런 대화의 맥락을 잡기 위한 장치인데요, 예약 대화를 실습해 보면서, 컨텍스트를 이해해 보도록 하겠습니다.
예약 인텐트
먼저 실습에 사용할 회의실 예약 인텐트를 만들어 봅시다.

이제 어떤 경우가 있을까요? 당신이 비서라면, "회의실 좀 잡아줘."만 들었을 때 뭐라고 할까요? 그렇죠, "몇 시 회의인데요?" 물어보겠죠. 이 과정은 단순히 Action and parameters에 REQUIRED 체크박스를 체크하면 됩니다.

이 설정은 시간을 알기 전까지 PROMPTS 항목의 질문을 다시 던지게 됩니다. Try it now에서 확인해 보세요.

위와 같이 시간을 말하지 않으면 몇 시인지 물어봅니다. 자, 이제 시간까지 알게 됐어요. 그런데 아주 중요한 회의라면, 혹은 회의실 사용에 비용이 든다면, 아무래도 예약 시간이 맞는지 확인이 필요하겠죠?

이렇게 응답을 작성한다면 날씨 인텐트처럼 1회성 대화에서는 질문만 던지고 대화가 종료되겠죠. 바로 이런 때, 컨텍스트가 사용됩니다.
후속 조치 인텐트
후속 조치 인텐트(follow-up intents)를 사용해 보면 컨텍스트를 쉽게 이해할 수 있습니다.

인텐트 화면에서 방금 만든 conf-room-reservation 위에 마우스를 갖다 대면 add follow-up intents 메뉴가 뜨고 그것을 클릭하면 몇 가지 후속 조치 인텐트를 고를 수 있습니다.

마지막 대화가 컨펌("OO시 회의 맞나요?")이었으니 yes or no로 답해야겠죠. 우선 Yes를 만들어 봅시다.

conf-room-reservation - yes 인텐트가 생겼습니다. 클릭해서 들어가봅시다.

친절하게도 긍정의 대답 인텐트를 알아서 만들어주네요. 여기서 눈여겨 볼 것은 Contexts에 conf-room-reservation-followup 이라는 항목이 생겼다는 사실이에요. 의미인즉, 현재 대화의 컨텍스트(문맥)가 conf-room-reservation-followup (아 이름을 너무 길게 지었네요...) 에 해당할 경우에만 이 인텐트가 불린다는 거에요. 그럼 이 컨텍스트는 누가 설정하는 것일까요?
원래 인텐트(conf-room-reservation)을 열어 보면,

전에는 없었던 Contexts가 여기도 생겼네요! 다만 여기에는 앞에 숫자 2가 붙어있는데, 이는 이 컨텍스트를 유지할 생명 길이(life-span)입니다. 즉, 대화가 2번 왔다갔다 할때까지만 유지하겠다는 의미죠. 결국 회의실 예약 컨텍스트에 들어와야만, 그리고 컨펌에 대해서 yes or no를 했을 때 이 follow-up 인텐트로 들어오게 됩니다. 이게 다 context 덕분이죠.
테스트해 봅시다. Try it now에 '그래'라고 쳐 보면, Default Fallback Intent로 빠집니다. Try it now에 '회의실 2시 예약' 입력 후 컨펌에 대해 '그래'라고 치면 아래와 같이 conf-room-reservation-followup 인텐트로 들어갑니다.

대충 컨텍스트가 뭔지 알 것 같죠? 내친 김에 folloup - no 인텐트도 만들어 봅시다.
- "내일 2시 회의 맞나요?"
- "아니."
- "아니군요. 끝."
이렇게 끝낼 수 있나요? 아니죠. 다시 물어봐야겠죠. 이럴 때 사용하는 것이 이벤트(event)인데, 이 이벤트를 실행하기 위해서는 fulfillment가 필요합니다. Fulfillment란 바로~~~~~! 다음 편에서 이어집니다.
'IT > AI' 카테고리의 다른 글
Dialogflow - 5. Webhook (0) | 2021.04.19 |
---|---|
Dialogflow - 4. 외부 사이트 연동 (0) | 2021.04.16 |
Dialogflow - 3. Fulfillment (2) | 2021.04.16 |
Google Cloud Platform & Firebase (0) | 2021.04.15 |
Dialogflow - 1. Intent (0) | 2021.04.14 |