SlideShare a Scribd company logo
1 of 25
Download to read offline
배민@클로바 개발기
우아한형제들
데이터서비스팀
한동훈
클로바익스텐션이 뭘까요?
• 클로바플랫폼이 주는 Intent 를 처리하여 결과를 클로바플랫폼에 돌려주는 web api 서버
• STT, NLP/NLU, Intent, Slot, …
• 처음보는 용어들, 개념들 …
• 크고 두꺼운 클로바 연동매뉴얼 … 쫄지마! (사실 전 쫄았어요..)
클로바익스텐션이 뭘까요?
• Intent 에 의해 상태변화가 일어나는 State Machine
Clova Extension State Diagram
시작 대기 종료
요청
확인
대기
Launch Intent
“배민 실행시켜줘”
Category Order Intent
“치킨 주문해줘”
카테고리
정보
대기
Order Intent
"주문해줘”
Yes intent
“주문해줘 or 취소해줘”
No intent
“주문 안할래 or 취소 할래”
Category Order Intent
“치킨 주문해줘”
Category Cancel Intent
“치킨 주문취소 해줘”
Category Cancel Intent
“치킨 취소해줘”
Cancel Intent
”취소해줘”
클로바익스텐션이 뭘까요?
• 서비스흐름도 vs State Diagram
클로바익스텐션이 뭘까요?
• 시나리오 기반 챗봇 엔진과 개념상 큰 차이 없을 것 같다.
• + STT + NLP/NLU (speech to intent)
• - 제한된 인터페이스 (순수 음성 기반 interaction 은 시간이 오래걸림)
• 시나리오의 단순화 필요
• 뺄 것은 과감히 뺀다.
• 단순한 기능을 단순하게.
네이버 Clova 배달의 민족
Clova Extension Structure
배민에서
치킨 시켜줘
인증
주문
단골주문
배민
FRONT
Clova
익스텐션스피커
Clova
DB
DB
DB
업소/메뉴 DB
힘들었던 부분들 – 너흰 아직 준비가…
• 클로바/배민 모두 준비가 덜된 상태에서 개발 및 연동을 시작.
• Multi-turn 대화
• 테스트 플랫폼
• 문서
• 법적 준비
• …
• 이제 준비가 다 되었으니 여러분은 (좋겠다)
힘들었던 부분들 – 많은 시스템과 연동
• 관련된 시스템은 많으나…
• 외부 연동용 api 작성
• 업소, 메뉴, 회원, 주문, 인증, …
• 여러 팀들과의 협업
• 핵심 멤버들을 프로젝트룸으로 모아서 빠른 커뮤니케이션을 확보
힘들었던 부분들 - 많은 인간지능 투입
• 음성주문에 예상되는 대화의 수집
• 우아한형제들 임직원들이 대거 참여
• 문장들의 분류, 선택, 시나리오로 정리, 인텐트 추출
• Slot 의 정의, Slot 에 들어갈 수 있는 단어들 결정
힘들었던 부분들 - 끊어읽기
• TTS 테스트를 많이 하면서 적절하게 끊어읽도록 text 를 구성해줘야 함.
• 클로바 목소리가 지겨워지면 잠시 꺼두셔도 좋습니다.
힘들었던 부분들 - 메뉴가… !@#$!@
57 1. 버거(3, 4, 5, 6)중 택1+까르보나라 스파게티+프렌치 프라이+(콜라, 스프ㅡ라이트)중 2잔
56 핫양념치킨+양념치킨 or 간장치킨 or 마늘치킨 or 달콤허니 or 골든치요 or 핫양념치킨 중 택1
53 후라이드치킨+후라이드치킨 / 마늘치킨(+1,000원) / 간장치킨(+1,000원)+콜라500ml
53 후라이드+양념 / 핫양념 / 마늘 / 매콤간장 / 순한간장 / 달콤허니 / 골든치요 / 레드커리
52 Raspberry Nutella Dessert Calzone (라즈베리 누텔라 디저트 깔조네)
52 Chipotle chicken caesar salad (치폴리 치킨 시저 샐러드) (체크해제)
52 후라이드 / 마늘치킨 / 간장치킨 / 양념치킨 / 골든치요 / 달콤허니 중 택2+콜라500ml
52 2. YOGURT MARINATED CHICKEN STEAK KEBAB 요구르트양념 치킨 케밥
힘들었던 부분들 – 메뉴가… !@#$!@
• 배달 음식 메뉴를 음성으로 지정하는 기능을 삭제
• 미리 카테고리별로 배달 음식을 지정해놓도록 함.
• 메뉴명을 제대로 못 읽어줄 때가 많다.
• 발음이 사람이 읽는것과 비슷하게 나오도록 표현.
• Regular expression 을 활용
• 특수문자 제거
• 단위 변환
• 그 외 불필요한 부분들 제거
힘들었던 부분들 – 메뉴가… !@#$!@#
• 개선중
• 음성안내용 메뉴명을 따로 관리
• 메뉴에서 명사추출 & dictionary 유지보수하여 자동화
• 세트메뉴중 옵션이 많은 경우가 문제
• 음성 주문불가능하도록 해야 함. ( option 을 읽어주는데 시간이… )
힘들었던 부분들 - OAuth2
• 우아한형제들에는 이미 OAuth2 서버가 구현되어있었다.
• 배민 / 배민라이더스 / 배민프레쉬 / 배민쿡 등의 통합인증
• 클로바에 필요한 부분만 추가 하여 사용하였음. (서비스 구분자 등)
• 배민 OAuth2 서버는 토큰을 어떻게 저장/관리하나요?
• AccessToken 은 redis 에 관리 (redis crash의 경우 db 에 임시 저장하도록 되어있음.)
• RefreshToken 은 RDBMS 에 관리하며, timeout 삭제용 agent 존재함.
힘들었던 부분들 - OAuth2
• Clova 연동시발생한 문제들
• 설정한 auth type 이 refresh 시에 적용되지 않아 계정 연동이 풀림
• Clova 는 session 중 access token 만료에 대응하지 않음.
• Oauth spec 상, session 중 access token 이 만료되면 인증을 다시하고 서비스 url 로 돌아가는
mechanism 이 있으나, 이를 적용할 수 없음.
• 대응 - Access token 을 다소 짧게 줄 수 밖에 없음. (24시간 vs 2시간)
효율적인 개발을 위한 팁
• 여러 팀들의 업무를 잘 파악하고 있는 PL 이 필요
• 여러가지의 서비스 시스템들과 연동하게 되어 communication cost 가 높다.
효율적인 개발을 위한 팁
• 음성에 사용하기 좋은 문자열들을 미리 준비/검수
• 모두 clova 를 통해 음성으로 들어보지 않으면 적절하게 발음되는지 알 수 없다.
• 특히 일반적인 문장이 아닌 특이한 단어를 사용하는 경우, 발음해야 하는 대로 따로 적어야 할 가
능성이 큼.
• 많이사용하는 구어체 표현 학습
• 음성 인식이 잘 안되는 경우 비슷한 발음들을 학습
• 돈까스 vs 돈가스
효율적인 개발을 위한 팁
• Intent에 Slot 으로 들어오는 데이터는 문자열
• 문자열 기준으로 작동할 수 있는 api 들이 필요함.
효율적인 개발을 위한 팁
• 테스트환경을 빠르게 구축하여 지속적으로 사용해본다.
• 사용자입장에서 사용해보지 않으면 어색함을 뒤늦게 알게된다.
• 자동화된 테스트도 중요하지만 사람 귀로하는 테스트가 더 중요하다.
OAuth2
• Clova <-> oauth2 troubleshooting
• 설정값 적용이 안되어 token refresh 가 되지 않았음.
• QA 테스트시 access token 의 유효성을 테스트할 것.
• Ex) 계정 최초 연동 후 2시간 후에 계정 연동 유지되는지 테스트.
• Scope 문의 포맷 문제
• ” “ delimited vs “,” delimited
총평
• 인공지능은 인간의 노동력/삽질을 먹고 자란다.
보너스
Clova Extension Application Structure
Launch
Service
Custom Intent
Service
Session Ended
Service
Message
Service
WebHook
Controller
Intent
Service
Speech
Service
UI
Service
Speech
Service
UI
Service
Speech
Service
UI
Service
Service LayerController Layer
Order
Service
Extension
Service
Auth
Service
Service Layer
Custom Intent
Service
보너스
Clova Extension Service Layer
Launch
Service
Message
Service
Intent
Service
Speech
Service
UI
Service
Speech
Service
UI
Service
Intent
Service
Speech
Service
UI
Service
Message
Service
Session Ended
Service
Message
Service
Speech
Service
UI
Service
Message
Service
Data
Service
Data
Service
Data
Service
Sub moduleMain module
Custom Intent
Service
보너스
Clova Extension Application Flow
Launch
Service
Message
Service
Speech
Service
UI
ServiceIntent
Service
Session Ended
Service
Data
Service
Controller

More Related Content

More from Clova Platform

Clova ai-business-day-session-3
Clova ai-business-day-session-3Clova ai-business-day-session-3
Clova ai-business-day-session-3Clova Platform
 
Clova ai-business-day-session-4
Clova ai-business-day-session-4Clova ai-business-day-session-4
Clova ai-business-day-session-4Clova Platform
 
Clova ai-business-day-session-2
Clova ai-business-day-session-2Clova ai-business-day-session-2
Clova ai-business-day-session-2Clova Platform
 
Clova ai-business-day-session-1
Clova ai-business-day-session-1Clova ai-business-day-session-1
Clova ai-business-day-session-1Clova Platform
 
Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현Clova Platform
 
Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계 Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계 Clova Platform
 
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Platform
 
Clova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 BasicClova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 BasicClova Platform
 
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Platform
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2Clova Platform
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1Clova Platform
 
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우Clova Platform
 
Clova extension A to Z
Clova extension A to ZClova extension A to Z
Clova extension A to ZClova Platform
 
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Platform
 
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Platform
 
Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기
Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기
Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기Clova Platform
 

More from Clova Platform (16)

Clova ai-business-day-session-3
Clova ai-business-day-session-3Clova ai-business-day-session-3
Clova ai-business-day-session-3
 
Clova ai-business-day-session-4
Clova ai-business-day-session-4Clova ai-business-day-session-4
Clova ai-business-day-session-4
 
Clova ai-business-day-session-2
Clova ai-business-day-session-2Clova ai-business-day-session-2
Clova ai-business-day-session-2
 
Clova ai-business-day-session-1
Clova ai-business-day-session-1Clova ai-business-day-session-1
Clova ai-business-day-session-1
 
Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현Clova Skill 에서 AudioPlayer 구현
Clova Skill 에서 AudioPlayer 구현
 
Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계 Clova 확장서비스 디자인 및 설계
Clova 확장서비스 디자인 및 설계
 
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
 
Clova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 BasicClova Extension 기획, 설계 & 서버 개발 Basic
Clova Extension 기획, 설계 & 서버 개발 Basic
 
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 2
 
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
Clova Tech Summit 2: Serverless로 만드는 쉽고 효율적인 Clova Extension 1
 
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
Clova Tech Summit 2: Interaction Model의 이해 및 설계/제작 노하우
 
Clova extension A to Z
Clova extension A to ZClova extension A to Z
Clova extension A to Z
 
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
 
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
 
Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기
Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기
Clova Tech Summit 세션2 : 띵스플로우 라마마 Clova Extension 개발기
 

Clova Tech Summit 세션4 : 우아한형제들 배달의민족 Clova Extension 개발기

  • 2. 클로바익스텐션이 뭘까요? • 클로바플랫폼이 주는 Intent 를 처리하여 결과를 클로바플랫폼에 돌려주는 web api 서버 • STT, NLP/NLU, Intent, Slot, … • 처음보는 용어들, 개념들 … • 크고 두꺼운 클로바 연동매뉴얼 … 쫄지마! (사실 전 쫄았어요..)
  • 3. 클로바익스텐션이 뭘까요? • Intent 에 의해 상태변화가 일어나는 State Machine
  • 4. Clova Extension State Diagram 시작 대기 종료 요청 확인 대기 Launch Intent “배민 실행시켜줘” Category Order Intent “치킨 주문해줘” 카테고리 정보 대기 Order Intent "주문해줘” Yes intent “주문해줘 or 취소해줘” No intent “주문 안할래 or 취소 할래” Category Order Intent “치킨 주문해줘” Category Cancel Intent “치킨 주문취소 해줘” Category Cancel Intent “치킨 취소해줘” Cancel Intent ”취소해줘”
  • 6. 클로바익스텐션이 뭘까요? • 시나리오 기반 챗봇 엔진과 개념상 큰 차이 없을 것 같다. • + STT + NLP/NLU (speech to intent) • - 제한된 인터페이스 (순수 음성 기반 interaction 은 시간이 오래걸림) • 시나리오의 단순화 필요 • 뺄 것은 과감히 뺀다. • 단순한 기능을 단순하게.
  • 7. 네이버 Clova 배달의 민족 Clova Extension Structure 배민에서 치킨 시켜줘 인증 주문 단골주문 배민 FRONT Clova 익스텐션스피커 Clova DB DB DB 업소/메뉴 DB
  • 8. 힘들었던 부분들 – 너흰 아직 준비가… • 클로바/배민 모두 준비가 덜된 상태에서 개발 및 연동을 시작. • Multi-turn 대화 • 테스트 플랫폼 • 문서 • 법적 준비 • … • 이제 준비가 다 되었으니 여러분은 (좋겠다)
  • 9. 힘들었던 부분들 – 많은 시스템과 연동 • 관련된 시스템은 많으나… • 외부 연동용 api 작성 • 업소, 메뉴, 회원, 주문, 인증, … • 여러 팀들과의 협업 • 핵심 멤버들을 프로젝트룸으로 모아서 빠른 커뮤니케이션을 확보
  • 10. 힘들었던 부분들 - 많은 인간지능 투입 • 음성주문에 예상되는 대화의 수집 • 우아한형제들 임직원들이 대거 참여 • 문장들의 분류, 선택, 시나리오로 정리, 인텐트 추출 • Slot 의 정의, Slot 에 들어갈 수 있는 단어들 결정
  • 11. 힘들었던 부분들 - 끊어읽기 • TTS 테스트를 많이 하면서 적절하게 끊어읽도록 text 를 구성해줘야 함. • 클로바 목소리가 지겨워지면 잠시 꺼두셔도 좋습니다.
  • 12. 힘들었던 부분들 - 메뉴가… !@#$!@ 57 1. 버거(3, 4, 5, 6)중 택1+까르보나라 스파게티+프렌치 프라이+(콜라, 스프ㅡ라이트)중 2잔 56 핫양념치킨+양념치킨 or 간장치킨 or 마늘치킨 or 달콤허니 or 골든치요 or 핫양념치킨 중 택1 53 후라이드치킨+후라이드치킨 / 마늘치킨(+1,000원) / 간장치킨(+1,000원)+콜라500ml 53 후라이드+양념 / 핫양념 / 마늘 / 매콤간장 / 순한간장 / 달콤허니 / 골든치요 / 레드커리 52 Raspberry Nutella Dessert Calzone (라즈베리 누텔라 디저트 깔조네) 52 Chipotle chicken caesar salad (치폴리 치킨 시저 샐러드) (체크해제) 52 후라이드 / 마늘치킨 / 간장치킨 / 양념치킨 / 골든치요 / 달콤허니 중 택2+콜라500ml 52 2. YOGURT MARINATED CHICKEN STEAK KEBAB 요구르트양념 치킨 케밥
  • 13. 힘들었던 부분들 – 메뉴가… !@#$!@ • 배달 음식 메뉴를 음성으로 지정하는 기능을 삭제 • 미리 카테고리별로 배달 음식을 지정해놓도록 함. • 메뉴명을 제대로 못 읽어줄 때가 많다. • 발음이 사람이 읽는것과 비슷하게 나오도록 표현. • Regular expression 을 활용 • 특수문자 제거 • 단위 변환 • 그 외 불필요한 부분들 제거
  • 14. 힘들었던 부분들 – 메뉴가… !@#$!@# • 개선중 • 음성안내용 메뉴명을 따로 관리 • 메뉴에서 명사추출 & dictionary 유지보수하여 자동화 • 세트메뉴중 옵션이 많은 경우가 문제 • 음성 주문불가능하도록 해야 함. ( option 을 읽어주는데 시간이… )
  • 15. 힘들었던 부분들 - OAuth2 • 우아한형제들에는 이미 OAuth2 서버가 구현되어있었다. • 배민 / 배민라이더스 / 배민프레쉬 / 배민쿡 등의 통합인증 • 클로바에 필요한 부분만 추가 하여 사용하였음. (서비스 구분자 등) • 배민 OAuth2 서버는 토큰을 어떻게 저장/관리하나요? • AccessToken 은 redis 에 관리 (redis crash의 경우 db 에 임시 저장하도록 되어있음.) • RefreshToken 은 RDBMS 에 관리하며, timeout 삭제용 agent 존재함.
  • 16. 힘들었던 부분들 - OAuth2 • Clova 연동시발생한 문제들 • 설정한 auth type 이 refresh 시에 적용되지 않아 계정 연동이 풀림 • Clova 는 session 중 access token 만료에 대응하지 않음. • Oauth spec 상, session 중 access token 이 만료되면 인증을 다시하고 서비스 url 로 돌아가는 mechanism 이 있으나, 이를 적용할 수 없음. • 대응 - Access token 을 다소 짧게 줄 수 밖에 없음. (24시간 vs 2시간)
  • 17. 효율적인 개발을 위한 팁 • 여러 팀들의 업무를 잘 파악하고 있는 PL 이 필요 • 여러가지의 서비스 시스템들과 연동하게 되어 communication cost 가 높다.
  • 18. 효율적인 개발을 위한 팁 • 음성에 사용하기 좋은 문자열들을 미리 준비/검수 • 모두 clova 를 통해 음성으로 들어보지 않으면 적절하게 발음되는지 알 수 없다. • 특히 일반적인 문장이 아닌 특이한 단어를 사용하는 경우, 발음해야 하는 대로 따로 적어야 할 가 능성이 큼. • 많이사용하는 구어체 표현 학습 • 음성 인식이 잘 안되는 경우 비슷한 발음들을 학습 • 돈까스 vs 돈가스
  • 19. 효율적인 개발을 위한 팁 • Intent에 Slot 으로 들어오는 데이터는 문자열 • 문자열 기준으로 작동할 수 있는 api 들이 필요함.
  • 20. 효율적인 개발을 위한 팁 • 테스트환경을 빠르게 구축하여 지속적으로 사용해본다. • 사용자입장에서 사용해보지 않으면 어색함을 뒤늦게 알게된다. • 자동화된 테스트도 중요하지만 사람 귀로하는 테스트가 더 중요하다.
  • 21. OAuth2 • Clova <-> oauth2 troubleshooting • 설정값 적용이 안되어 token refresh 가 되지 않았음. • QA 테스트시 access token 의 유효성을 테스트할 것. • Ex) 계정 최초 연동 후 2시간 후에 계정 연동 유지되는지 테스트. • Scope 문의 포맷 문제 • ” “ delimited vs “,” delimited
  • 22. 총평 • 인공지능은 인간의 노동력/삽질을 먹고 자란다.
  • 23. 보너스 Clova Extension Application Structure Launch Service Custom Intent Service Session Ended Service Message Service WebHook Controller Intent Service Speech Service UI Service Speech Service UI Service Speech Service UI Service Service LayerController Layer Order Service Extension Service Auth Service
  • 24. Service Layer Custom Intent Service 보너스 Clova Extension Service Layer Launch Service Message Service Intent Service Speech Service UI Service Speech Service UI Service Intent Service Speech Service UI Service Message Service Session Ended Service Message Service Speech Service UI Service Message Service Data Service Data Service Data Service
  • 25. Sub moduleMain module Custom Intent Service 보너스 Clova Extension Application Flow Launch Service Message Service Speech Service UI ServiceIntent Service Session Ended Service Data Service Controller