Actions on Google

Actions on Google

Overview

Actions on Google은 Google assistant 기반의 대화형 앱(3rd party action)을 생성할 수 있도록 해주는 플랫폼이라고 볼 수 있음.

Gooole assistant가 지원하는 prebuilt service(날씨, 맵, 주문 등)들을 내부적으로 action으로 관리되고 있고, 개발자들의 외부 서비스들을 추가할 수 있도록 해주는 것이 Actions on Google이라고 보면 됨

Actions on Google은 개발자가 자신들의 서비스를 Google Assistant에 통합하기 위한 플랫폼이다.

외부 서비스를 Google assistant에 통합하는 과정은 다음과 같음

먼저, Conversation action은 양방향 대화를 통해 사용자의 request을 처리할 수 있도록 해주는데, Alexa의 custom skill과 유사하다고
보면 된다.

1. 사용자가 action을 request하면, Google assistant가 request을 처리해서 가장 적합한 action을 찾아서 호출한다.
2. 그러면, 해당 action이 이후의 동작들(사용자를 어떻게 맞이하고, 사용자의 요청을 어떻게 처리 한 뒤, 어떻게 대화를 끝낼 것인지까지)를 
관리한다. 

Example - Personal Chef Application

구글에서 Actions on Google을 설명하기 위해 사용한 action으로 사용자가 Google Home을 통해 ‘조리법을 찾기 서비스’ 와 상호작용 할 수 있도록 해준다.
사용자는 현재 어떤 기분인지, 어떤 재료를 가지고 있는지 명시함
그러면, Conversational App은 사용자의 기분을 해석하고, 어떤 재료가 이용가능한 지 이해함

Action에서 의미를 찾아내는 것은 상당히 어렵기 때문에, 그 동안 이러한 유형의 application을 만드는 것 자체가 쉽지 않았음

Mehdi Samadi, co-founder and CTO at Solvvy, explains

AI 기술 측면에서, “show me cheap Indian restaurants near me”와 같은 command나 instruction을 실행 가능한 명령어 셋으로 변환하는 것은 쉽지 않은 일이다. 사용자가 인도 요리가 있는 음식점을 보고 싶어한다는 것을 이해해야하며, “Cheap”으로 사용자가 무엇을 의도하는지 해석해서 개인화해야 합니다.

Conversation Action은 이러한 문맥 인식 문제(Contextually aware challenges)를 해결할 수 있는 대화형 앱을 개발하는데 도움이 되도록 구글이 개발함

Extract meaning

Conversation Actions

Conversation Actions의 세 가지 주요 컴포넌트

Major components of a Conversation Action

Conversation action을 호출하기 위한 세 가지 방법

Conversation API

Conversation API는 Google Assistant와 통신하기 위해 반드시 사용해야하는 request/response format. Action이 invoke되어 사용자와 상호작용 할 때도, Google Assistant는 action과 사용자 사이에서 브로커 역할을 하기 때문에 Conversation API를 사용해야 함

Conversation API

Actions SDK는 이러한 Conversation API request를 parsing하고, response를 생성하는 라이브러리를 제공함

API.AI

API.AI는 구글이 최근에 인수한 것으로, 개발자들이 대화형 인터페이스를 만들 수 있도록 해서 Conversation API에서 요구하는 많은 양의 텍스트 문자를 줄여줌

Piekarsk highlights

API.AI는 대화형 인터페이스를 생성하기 위한 직관적인 GUI를 제공하고, 대화 상태를 관리하고, slots과 forms을 채우는 측면에서 힘든 작업을 수행합니다.

MacDown logo

대화를 처리르 하기 위해서, 개발자들은 Develper console에서 intent들을 정의할 수 있음.
Personal Chef 예제의 문맥에서 보면, 사용자로부터 재료와 온도, 음식 종류, 그리고 조리 시간 등이 필요하다는 정보를 정의해야 함
다음으로, 개발자는 user says에 예제 문장을 제공해야 함. API.AI는 Machine Learning argorithm을 트레이닝 시키기 위해 이 에제 문장들을 이용함

API.AI Developer console

개발자들은 각각의 정보들을 위한 value를 설정할 수 있고, API.AI는 사용자 발화에서 의미를 추출하기 위해 이 정보들을 이용한다.
예를 들어 Personal Chef app이 recipe의 일부로 protein이 필요하다면, 개발자들은 beef, lamb, tofu, chicken 등과 같은 동의어 리스트 포함할 수 있다.

API.AI를 이용해 action을 만들어 배포할 때의 flow.

Webhook

Intent를 backend webhook과 연결시킬 수 있는데, 이 webhook은 3rd party platform과의 연결을 통한 확장을 허용함
앞에서 언급한 외부 서비스 로직 코드인 fulfillment가 webhook과 연결딘 3rd party platform에 구현되어 있다고 보면 됨

References