Actions on Google: Building Apps for Assistant

[음악 재생 중] 사칫 미슈라: 안녕하세요 저는 사칫 미슈라입니다 오늘 저는 APIAI를 이용해 Google 어시스턴트이 앱을 만드는 것이 얼마나 쉽고 빠른지 보여드리려고 합니다 이 앱들은 Google 홈이나 조건이 맞는 모바일 기기의 어시스턴트에 접속 가능한 사람이라면 누구나 사용할 수 있습니다 이 영상에서 저는 어시스턴트 앱을 만들 것입니다 GitHub에 있는 'Google에 대한 사실'에 관한 예시와 비슷하죠 'Google에 대한 사실' 예시는 사람들에게 Google의 역사에 관한 사실이나 본사에 관한 이야기 등 사용자가 관심있어 하는 이야기를 해줍니다 하지만 여기에서 끝나지 않고 사용자는 개발자 사이트에 가서 그 예시들을 더 개발할 수도 있고 사용자가 잘 아는 분야에 대한 사실을 추가할 수도 있습니다 고양이나 뜨개질 같은 것들을 말이죠 이제 API

AI 도구에 가서 이것을 어떻게 만드는지 처음부터 살펴보도록 하죠 먼저, 액션 콘솔에 로그인 하고 프로젝트 추가를 클릭합니다 이름을 설정하면 새로운 프로젝트가 만들어집니다 액션 콘솔은 시작점입니다 어떤 새로운 어시스턴트 앱을 만들든지요 여기에서 개발 도구를 설정하면 분석 도구와 테스트 도구들에 접속할 수 있습니다 그리고 앱에 대한 디렉터리 정보를 입력하는 양식도 제공합니다 여기에서 우리는 APIAI를 사용하거나 저희의 NLA와 함께 가공되지 않은 액션 SDK를 사용할 수 있고 또는 자연 언어를 이해 솔루션을 사용할 수 있습니다 APIAI를 선택해 볼게요 APIAI에 로그인 됐습니다 그리고 에이전트가 만들어졌습니다 APIAI 에이전트는 사용자의 상품 또는 서비스를 위한 NLU 모듈입니다 API

AI의 에이전트는 어시스턴트를 위한 앱을 지정해 줍니다 그러면 이 영상의 목적에 따라 그것들이 동일한 것을 지칭한다고 생각합시다 에이전트를 만들고 나면 인텐트 화면이 뜹니다 인텐트와 엔티티는 2개의 중요한 개념인데 APIAI에서 상호작용하는 시나리오를 만들 때 중요합니다 인텐트는 대화를 시작하는 지점이고 사용자들의 대화 경험이 어떻게 나타나야 하는지에 대해 방향을 잡아줍니다 사용자가 자신이 원하는 것에 대해 여러 방식으로 말할 수 있지만 결국 모두 하나의 인텐트를 통한 동일한 대답을 받아야 합니다 대화는 사용자들의 답변을 인텐트로 끊임없이 정리하는 과정이라고 할 수 있습니다 저희 앱이 이미 기본 대비책 인텐트를 갖고 있다는 점을 기억하세요 이것은 사용자들이 말하는 것을 앱이 인식하지 못할 때 사용됩니다 기본 환영인사 인텐트도 있습니다 이것은 사용자가 처음 왔을 때 사용된다는 점에서 대화의 시작점을 의미합니다 이미 만들어진 환영 인사를 지우고 여러분만의 인사를 설정해 봅시다 "Google에 관한 사실에 오신 것을 환영합니다 Google의 역사 Google 본사 중 어느 것을 듣고 싶으십니까" 같은 인사를 할 수 있습니다 이를 통해 사용자를 알 수 있고 저희의 어시스턴트 앱을 Google 어시스턴트와 분리해서 생각할 수 있습니다 또한 다음 대화로 사용자를 이끌 수도 있습니다 여기에서는 '양자택일' 질문을 사용해 보겠습니다 여러분의 명령어는 모두 앱의 성격을 결정한다는 것을 기억하십시오 이는 훌륭한 대화 경험을 만들기 위해서 아주 중요합니다 다음 인텐트로 넘어가기 전에 몇 가지 수동 설정 엔티티를 만들어야 합니다 엔티티는 사용자들이 그들의 자연 언어로 명령을 내릴 때 사용하는 다양한 표현들을 묶어놓은 것입니다 엔티티는 인텐트의 논리가 받아들일 수 있는 표현들의 한계를 설정합니다 APIAI에는 두 종류의 엔티티가 있습니다 첫번째는 미리 설정되어 있는 시스템 엔티티로 자주 쓰이는 표현들을 다룹니다 시간, 숫자, 주소, 자료 등을 말이죠 두번째는 개발자 엔티티입니다 우리는 이것을 여기에 사용할 것입니다 저는 APIAI 웹 콘솔을 사용해 개발자 엔티티를 만들 것입니다 하지만 여러분은 JSON 또는 CSV 형식 파일들을 업로드하거나 API 콜을 통해 사용할 수 있습니다 먼저 시작하기 위해서 'Google에 대한 사실'의 두 종류의 사실에 대해 알아야 합니다 '과거'라고 표현될 수도 있는 '역사'와 HQ라고도 하는 '본사'입니다 다 끝내고 나면 이렇게 될 것입니다 다음으로 사용 사례를 위한 인텐드를 만들 겁니다 저희의 어시스턴트 앱이 도움을 주고 사실을 이야기해줄 겁니다 'tell_fact'라는 인텐트를 만들고 사용자가 사실을 듣기 위해 물어볼 질문의 몇 가지 예시를 추가합니다 우리는 사용자가 시작화면에서 주어진 환영 인사 인텐트에 인사할 것을 예상할 수 있고 아니면 다른 사실에 대해 물어볼지도 모릅니다 이미 사실 하나를 들은 후에 말이죠 또 그들은 단순히 '역사'라고 말하거나 혹은 더 복잡하게 '구글의 역사에 대해 알아보고 싶어' 라고 할지도 모릅니다 새로운 예시들을 입력하면 그 예시들이 fact-category 엔티티로 주석이 자동으로 달리는 것을 볼 수 있습니다 이것은 사용자가 구문에 엔티티 값을 직접 제공해서 이 인텐트가 실행되도록 할 수 있다는 의미입니다 우리는 이런 주석, 파라미터의 이름 그리고 엔티티가 우리의 예시에 적용되도록 바꿀 수 있습니다 APIAI는 주석의 예시와 엔티티를 보고 배울 것입니다 더 다양한 요구들을 이해하기 위해 말이죠 예시를 좀 더 추가해 보죠 사용자가 이 인텐트에 어떻게 작용할지에 대해서요 "Google HQ에 대해 말해줘" "Google의 역사에 대해 알고 싶어" "Google 본사에 대해 말해줄 수 있어?" "Google에 대해 말해봐" 대개는 10~12개의 예시를 제공하고 싶을 겁니다 사용자가 뭐라고 말할지에 관해 다양하게 API

AI를 교육시키기 위해서 말이죠 마지막 문장은 fact-category 엔티티에 포함되지 않는다는 것을 기억하세요 트리거링 문장에서 카테고리는 항상 명시되지 않는 APIAI를 나타내줄 뿐이죠 여기 아래에 asfact라는 인텐트를 위해 액션을 입력해 보겠습니다 그리고 이건 제 비지니스 업무를 작동시킬 겁니다 관련된 답변을 얻기 위해서요 참고로 APIAI에서의 액션은 Google에서의 액션과 다르다는 것을 아셔야 합니다 그리고 우린 다시 fact-category 파라미터가 자동적으로 생성되는 걸 볼 수 있습니다 주석의 예시로부터 말이죠 이 인텐트는 단 하나의 파라미터를 가집니다 그치만 여러분은 이 하나가 전체의 묶음을 가질 수 있단 걸 상상해 볼 수 있습니다 레시피 찾기 인텐드같이요 재료 목록과 식사 종류가 필요할지도 모르는 것처럼 말이죠 'Google에 대한 사실'은 사용자가 원하는 카테고리를 모르면 사실을 이야기 할 수 없습니다 그렇기 때문에 저는 이 파라미터를 표시할 겁니다 그리고 명령을 추가해보겠습니다 'Google에 대한 사실'은 이 명령들을 사용할 겁니다 인텐트를 작용하게 하기 위한 구절이 바로 제공되지 않을 때 놓친 정보를 요청하기 위해서 말이죠 예를 들어 사용자가 구글에 대한 사실을 달라고 말할 때 같은 경우에 말입니다 여러분은 하나의 명령 이상을 추가할 수 있습니다 각각의 파라미터에 다양하게 추가할 수 있는 거죠 우리의 명령은 여러분이 무엇을 듣길 원하는지와 관련됩니다 구글의 역사나 그 본사에 대해서요 이제 간단한 사실을 하드코어해보죠 예를 들어 Google은 1998년에 설립됐다 같은 거요 우리는 이제 이 인텐트를 APIAI 시뮬레이터에 바로 시험해 볼 수 있습니다 우리가 만든 문장을 시험해 보죠 "Google에 대한 사실을 말해줘" 인텐트가 일치하는 걸 볼 수 있습니다 그리고 fact-category 파라미터를 위한 명령을 얻을 수 있습니다 트리거링 구절에서 제공되지 않았거든요 응답 후, 우리는 하드코드된 답변을 받게 됩니다 여기예요 하지만 우리의 실제 답변은 달라질 겁니다 사용자가 듣고자 하는 사실에 따라 말이죠 그래서 이를 단순히 하드코드를 할 수 없습니다 생생한 경험을 제공하기 위해 API

AI 에이전트에 웹 후크가 필요합니다 이건 웹 호스티드 엔드포인트가 될 겁니다 그리고 APIAI는 이를 주어진 인텐트를 위해 물을 수 있습니다 몇 가지 응답을 제공하기 위해 말이죠 여러분의 웹 후크는 https 엔드포인트 빌트여야 합니다 여러분이 선택한 어느 기계에서든지요 이는 새로운 APIAI 요청을 만들 때와 적절하게 형식화된 답변을 보낼 때 큰 역할을 할 겁니다 약간 복잡할 수 있는데요 그래서 저희는 Nodejs에 클라이언트 라이브러리를 만들었습니다 이를 사용해서 여러분의 비지니스 업무와 인터페이스가 가능합니다 그럼 이게 어떻게 Nodejs 웹 후크를 만드는데 사용되는지 한번 볼게요 이 앱을 위해서 말이죠 여기에 API

AI 앱 클래스을 초기화하는 클라우드 기능이 있습니다 클라이언트 라이브러리의 npm 패키지에서 보내진 것이죠 그리고 이를 한 쌍의 새로운 요청과 응답을 함께 초기화합니다 저희는 또한 맵을 알려줍니다 액션 맵이라고 하죠 그리고 이는 APIAI 콘솔에 입력된 액션 스트링이 기능 처리기에 맞추게 합니다 이런 경우, tellfact 액션을 매핑합니다 저희가 tellFact 기능 전에 콘솔에 적어둔 액션을 말이죠 그리고 이것은 APIAI 앱 오브젝트와 관련해 퍼지게 될 겁니다 액션 맵과 함께 apphandleRequest를 부르는 것은 응답을 API

AI에 보내는 업무를 작동하게 할 것입니다 tellFact 기능으로 몇 가지 흥미로운 것들을 할 수 있습니다 첫째, 팩트 스트링을 기본으로 초기화시켜 줍니다 그리곤 appget Argument 방법을 이용해서 fact-category 파라미터의 값을 도출해 냅니다 인텐트에서요 그 값에 기반해서 사용자에게 사실을 가져다 줍니다 그리고 사용자를 위한 답변을 형성하죠 사용된 답변은 사용자 기기의 서페이스 기능을 바탕으로 합니다 기기가 시각적 정보를 스크린에 휴대폰처럼 도출해낼 수 있다면 풍부한 응답들이 사용됩니다 그리고 이는 간단한 채팅 텍스트가 있는 카드와 이미지를 포함합니다 접근 가능성을 위한 대체 텍스트와 함께 말이죠 마지막으로 그 대답은 몇 가지 제안을 포함하고 있습니다 대화가 더 나아가기 위해서요 화면에 결과물을 도출할 수 없는 기기의 경우 음성 답변으로써 사용자에게 간단한 스트링이 사용됩니다 자 이제 우리의 웹 후크를 클라우드 기능으로서 지어봤습니다 그리고 Google 클라우드 기능처럼 호스팅 솔루션에 배치해 봤습니다 우린 이제 APIAI에 이것을 사용하게 하면 됩니다 그러기 위해서 Fullfillment로 가서 웹 아래에 있는 Enabled를 클릭하세요 후크 셋팅을 하고 웹 후크의 호스트 주소를 입력합니다 그리고 tellFact 인텐트로 다시 돌아갑니다 그리고 아래에 있는 Use Web Hook를 체크해 줍니다 이게 APIAI가 웹 후크로부터 제공된 답변을 사용할 수 있도록 합니다 여기에 입력된 것 대신에 말이죠 이 인텐트를 위해서요 다시 APIAI 시뮬레이터에서 인텐트를 시험해 볼 수 있습니다 근데 이번에는 User Says 섹션에서 주어진 문장을 사용하지 않을 겁니다 "Google의 과거에 대해 흥미로운 걸 말해봐" 라고 해보죠 그리고 즉시 이 간단한 답변을 얻게 됩니다 우리의 웹 후크에서 만들어진 것이죠 이 점이 API

AI의 가장 멋진 것들 중 하나이기도 하고요 기계 학습입니다, 저희가 제공한 문장에 따라 교육을 받는 거죠 또한 사용자들의 입력을 알아듣습니다 예시와 문자 그대로 일치하지 않더라도 말이죠 그리고 웹 후크를 부르고 답변을 제공합니다 꽤 깔끔하죠? 웹 후크에서 보낸 JSON 요청 또한 확인할 수 있습니다 여기요 이것을 분석하는 건 보통 꽤 어렵습니다 하지만 저희 클라이언트 라이브러리는 이를 쉽게 해주죠 우린 또한 APIAI 콘솔의 교육 섹션을 살펴볼 수 있습니다 입력이 우리의 인텐트와 일치하는지 확인하기 위해서 말이죠 심지어 실시간 정정도 가능합니다 인텐트와 엔티티가 잘 맞는지 말이죠 즉시 그 자리에서요 여기에서 작동이 잘 되는 게 있는데요 먼저 이 대화를 좀 더 보충하고 싶네요 예를 들어, 사용자는 혼란스러울지도 모릅니다 이 어시스턴트 앱으로 뭘 할 수 있는지에 대해서 말이죠 그렇기에 다음의 말을 받아들일 수 있는 도움 콘텐트를 만들어 보죠 "뭘 할 수 있니?" 아니면 "도움이 필요해" 같은 문장들이요 다시 한번 말씀드리지만 제가 여기에 제공하는 예시보다 더 많이 제공하는 걸 잊지 마세요 여기에 간단한 도움의 답변을 제공할 수 있습니다 사용자를 저희 tellFact 인텐트로 이끌기 위해서죠 "Google의 역사나 본사에 대해 다 이야기해 줄 수 있습니다 어떤 걸 알고 싶나요?" 이보다 더 좋은 옵션은 그냥 사용자에게 사실을 제공하는 겁니다 그들에게 대화의 기반을 마련해 주는 거죠 저는 여러분이 여러분 스스로 시도해 볼 것을 권장합니다 마지막으로 quit(마침)이라는 인텐트를 추가해 보겠습니다 그리고 이건 사용자가 대화에서 떠날 수 있도록 해줄 겁니다 이 인텐트를 작동하기 위해 사용자는 아마 이런 말을 해야할 겁니다 "이제 그만 됐어" 또는 "잘가" 그리고 여기에 친절한 답변을 제공할 수 있죠 "네, 다음에 만나요"와 같은 답변이요 또는 사용자가 다시 돌아오게 만들고 싶다면 이렇게 말하는 게 더 좋겠죠 "내일 또 만나요 새로운 정보로 기다리고 있을게요 다음에 봐요" 그리고 웹 후크가 매일 다른 사실을 제공하게 하는 거죠 이제 우린 아래에 있는 End Conversation을 살펴볼게요 APIAI가 대화를 여기에서 마칠 수 있도록요 이제 여기에 꽤 잘 작동되는 게 있는데요 Google 웹 시뮬레이터의 액션에서 이것을 시도해 보겠습니다 그리고 그 현상을 볼 겁니다 시각와 음성의 맥락에서 Google 어시스턴트와 어떻게 자동되는지 말이죠 먼저 통합 페이지로 가보겠습니다 그리고 Google 셋팅에 있는 액션을 클릭해 줍니다 그런 후 앱을 테스팅하기 위해 Test를 클릭해 줍니다 시험상 Google 콘솔의 액션으로 건너뛸 수도 있습니다 첫째로 "내 앱에 말해봐"라고 적용할 겁니다 그리고 간단한 문장을 시험해 볼 겁니다 "역사, 부탁해"처럼요 다음 인텐트를 작동하기 전에 시뮬레이티드된 기기에서 휴대폰으로 바꾸겠습니다 그런 후에 "Google 본사에 대해 알려줘"라고 말할 겁니다 작동하네요! 제대로된 시각적 응답을 받았네요 화면을 기반으로한 서페이스를 사용하고 있기 때문이죠 이게 작동할 수 없는 상황이라면 디버그 정보를 살펴볼 수 있습니다 오른쪽에 있고 데이터가 옮겨진 걸 볼 수 있습니다 어시스턴트 서버와 제 APIAI 에이전트 사이에서요 이제 이걸 제출하기 전에 좀 더 개발하고 싶은데요 더 나은 사용자 경험과 더 많은 콘텐트를 제공하기 위해서요 어떻게 하는지는 여러분이 다 찾을 수 있습니다 개발자 사이트의 Google에 대한 사실 샘플 fuller에 있죠 다하고 나서 APIAI로 돌아가 업데이트를 클릭합니다 그러면 액션 콘솔이 앱을 업데이트하도록 해줍니다 여기 제가 가지고 있는 거랑 같이 말이죠 저는 이제 몇 가지 정보를 제공할 수 있는데요 저희 앱과 콘솔에 관해서요 'Google에 대한 사실'이라고 이름을 표시할 겁니다 그러면 디렉터리에 이게 이름으로 나타나죠 여러분은 여러분의 앱에 독특한 호출 이름을 붙여야 한다는 걸 기억하세요 저희 문서에서 게재한 네이밍 정책에 걸맞은 이름으로요 마이크를 사용해서 Google에 대한 사실이라고 말함으로써 콘솔이 발음을 결정하는 데 도움을 줄 수 있습니다 여기에 앱에 대한 소개를 해보겠습니다 목소리를 선택하고 이 앱이 무엇을 하는지 확실한 설명을 제공해 볼게요 그러고나서 몇 가지 호출 샘플을 제공해 보겠습니다 저희 문서는 다양한 방법을 제시하고 있습니다 여기 보여지는 흔한 앱이 아닌 여러분의 앱을 적용시키기 위해서요 그치만 다른 호출이 없으니 기본으로 해보겠습니다 만약 다른 걸 추가할 때 꼭 테스트를 해보고 추가하세요 저희 검토자가 그것이 작동하는지에 대해 알려줄 겁니다 다음으로, 몇 장의 이미지를 제공할 겁니다 옵션 테스팅 지침서도 함께요 그리고 제 이메일과 링크를 제 프라이버시 정책에 제공할 겁니다 이 모든 게 채워지면 위로 올라가서 저장을 누릅니다 보통 저는 제 앱이 서페이스 기능을 요구하도록 합니다 그치만 여기에서 제 것은 모든 기기들과 작동될 겁니다 그래서 이렇게 기본으로 놔두면 이제 다 됐습니다 이제 제출하기 버튼을 누르면 됩니다 앱이 제출됐습니다, 이제 제출 상태를 여기에서 모니터링할 수 있습니다 이 때, 여러분의 앱은 리뷰 과정을 거치게 됩니다 그리고 이게 받아들여지면 어시스턴트 기기로 배치가 됩니다 어디서나요 승인이 되고 나면 그 앱은 누구에게나 사용 가능합니다 Google 홈에서 Google 어시스턴트를 사용하거나 다른 적합한 기기들에서 말이죠 승인 전에 항상 테스트 할 수 있다는 걸 기억하세요 여러분의 계발자 계정과 연결이 되있는 한 여러분의 기기와 함께 말이죠 그럼 이제 시험해보죠 좋아, Google 내 앱에 말해봐 Google 어시스턴트: 물론이죠 여기 나의 테스트 앱의 테스트 버전이 있습니다 Google에 대한 사실에 오신 걸 환영합니다 Google의 역사와 본사 중 어떤 것을 듣고 싶나요? 사칫 미슈라: 본사의 사실에 대해 말해줘 Google 어시스턴트: 여기 그 정보가 있습니다 Google은 본점에 15개의 구내 식당이 있습니다 다음으로 Google의 역사와 본사 중 어떤 것을 듣고 싶나요? 여기 그 정보가 있습니다 Google은 2008년 안드로이드 첫번째 버전을 출시했습니다 다음으로 Google의 역사와 본사 중 어떤 것을 듣고 싶나요? 사칫 미슈라: 이제 그만 됐어 Google 어시스턴트: 내일 새로운 정보로 기다리고 있을게요 다음에 봐요 사칫 미슈라: 이로써 아주 짧은 시범이었습니다 액션 콘솔과 API

AI 개발자 도구에서 가능한 몇 가지 엄청난 특징들에 대해서요 Google의 액션에 대해 더 궁금한 게 있다면 developersgooglecom/actions에서 콘솔을 확인하거나 자료들을 읽어보세요 그럼 더 완벽한 사실들을 찾을 수 있을 겁니다 Google 샘플과 자세한 설명에 대해서요 숫자 지니(geni) 샘플도 같이 말이죠 이는 디자인의 최상의 실행을 위한 훌륭한 참고 자료이기도 하죠 저희는 또한 Google G+ 커뮤니티의 액션을 가지고 있는데요 여러분은 여기에 질문을 하고 여러분의 생각을 모두와 공유할 수 있습니다 이상으로 사치 미슈라였습니다 이 영상을 봐주셔서 감사합니다 여러분이 무엇을 개발할지 정말 기대됩니다 [음악 재생중]