- Bixby Capsule 개발의 전체단계
무언가를 창조하는 것은 떨리고 기대되는 작업니다. Bixby Capsule 개발 작업도 여러분에게 기분좋은 경험을 선사하기를 기대합니다. 이 장에서는 여러분이 Bixby Capsule 개발을 처음 시작할 때, 어떤 작업을 수행하고, 어떤 정보를 활용하면 될지에 대한 전체적인 가이드를 제공해드리고자 합니다.
Step1. Capsule 개발 기본설정
설명은, 퀘스트1에서 사용된 playground.burgershop 캡슐을 이용하여 진행하겠습니다. 여러분은 정연이라는 친구를 위해, playground.burgershop 캡슐을 만들어 볼 예정입니다.
빅스비 Capsule을 개발하기 위해서는, 먼저 Bixby Developer Studio를 다운로드 받아야 합니다. Developer Studio는 https://bixbydevelopers.com 에서 다운로드 할 수 있습니다.
Bixby Developer Studio설치를 완료하셨다면, 새로운 Capsule을 만들 수 있습니다. 한번 만들어 볼까요? Bixby Developer Studio를 열고, File -> New Capsule 을 클릭하시거나, Bixby Developer Studio 좌측의 Create New Capsule 버튼을 클릭하세요.
Bixby Developer Studio에서 Capsule ID는 [namesapce].[capsule name]의 형태로 추가하시면 됩니다. namespace는 Team ID라고 생각하시면 됩니다. Team ID는 https://bixbydevelopers.com 의 Teams & Capsules에서 생성하신 후 사용하시거나, playground라는 Team ID를 사용하시면 됩니다. playground라는 Team ID를 사용하실 경우에는, Capsule Submission은 진행할 수 없습니다. 아래 이미지를 참고 하세요.
추가적인 정보는, 아래 링크를 참조하세요.

Bixby Capsule이 아래와 같이 생성되었다면, Capsule의 구조를 살펴보겠습니다. Bixby Developer Studio (앞으로는 Studio라고 표현하겠습니다.) code와 resources 폴더와 capsule.bxb 파일이 생성되었습니다. code폴더에는, 사용자 발화입력에 대한 실제적인 처리작업을 진행하는 javascript 파일들을 저장하시면 됩니다. resources에는 여러가지 정보들을 저장하게 됩니다. 주로, "model파일과 js code파일을 서로 연결하기 위 endpoint정보", "외부연동서버의 주소 정보", "자연어 트레이닝 데이터" 등을 저장하게 됩니다. 그럼, Capsule의 기본 설정파일인 capsule.bxb파일을 살펴보겠습니다. capsule.bxb파일에는, Capsule의 ID"와 "Version 정보", "Capsule이 동작할 device정보와 language 정보를 명시 target설정"을 저정합니다.
우리는, 정연이가 버거샵에서 음식주문을 할 수 있도록 도와주는 Capsule을 제작할 예정입니다. 그래서, 정연이의 발화 (Utterance) 에서, 주문한 FoodName(햄버거)와 NumberOfFood(1개)를 중요하게 고려할 예정입니다. FoodName Concept과 NumberOfFood컨셉은 아래와 같이 생성하면 됩니다. 아래 그림을 따라 Model 파일을 만들고 코드를 입력해 보세요.

만 한글과 영어을 사용하여, 삼성 Galaxy Note9에서 Bixby Capsule을 구동할 예정이라면, 래와 같은 코드를, capsule.bxb 파일에, target(bxby-mobile-en-US)코드 밑에 넣으시면 됩니. 이렇게 하면, Capsule에서 한글과 영어를 모두 지원할 수 있습니다. 만약 영어는 지원하지 않겠다면, target(bxby-mobile-en-US)는 삭제하시면 됩니다.

이제, Capsule은 영어와 한국어를 지원하게 되었습니다. 그럼 지금부터 Modeling을 시작해보겠습니다.Capsule의 개발은 두개의 파트로 나누어 진행하게 됩니다. 첫번째로, "Bixby가 정연이가 말한 내용을 통해, 정확히 무슨일을 처리하고 싶어하는지 인지할 수 있도록 하는" Modeling이 필요합니다. 두번째로, 정연이의 요청을 실제적으로 수행하도 개발하는 작업이 필요합니다. 이 작업은, 정연이의 발화에 대한 처리 및 그 결과를 리턴해 주기 위해서 진행합니다.
Step2. Modeling 하기
모델링은, 정연이가 말한 내용을 통해 정확히 무슨일을 처리하고 싶어하는지 인지할 수 있도록 하는 작업입니다. 이를 위해서 먼저, 정연이가 사용할 수 있는 "발화 시나리오"들을 정리하고, 발화에서 사용한 Input Concept과 Output Concept을 정리해 보겠습니다. 지금부터는, 정연이가 말한 내용은, "발화 (Utterance)"라고 표현하도록 하겠습니다
발화 시나리오
Input Concept
Output
햄버거 2개 주문해줘
햄버거 (name)
2 (integer)
주문리스트 출력 햄버거 2개가 주문되었습니다.
(text)
프렌치라이 1봉지 부탁해
프렌치후라이(name)
1 (integer)
주문리스트 출력 프렌치라이 1개가 주문되었습니다.
(text)
햄버거 1개랑 콜라 1개 주문해
햄버거 (name)
1 (integer)
콜라 (name)
1 (integer)
주문리스트 출력 햄버거 1개 콜라 1개 주문되었습니다.
(text)
모델링을 위한, 시나리오 작업이 완료되었다면, Concept과 Action을 저장할 models폴더를 만들고, 한국어 지원을 위한 target설정도 진행해 주세요. models폴더는, code와 resources폴더처럼, Capsule의 최상위 폴더에 만들어 주세요.
Concept 생성하기
생성한 Concept폴더에, Input Concept과 Output Concept을 생성하여 저장해보겠습니다. Concept은, 정연이의 발화 전체 내용 중에서, "발화 인식을 위해서, 중요하게 고려되어야 하는 값(Input Concept)"과 "발화의 결과를 리턴할 때 사용할 값(return Concept)"으로 생각하시면 됩니다. 정연이가 "햄버거 2개 주문해줘" 라고 말했을 때(발화), 우리는 햄버거 (FoodName)과 2(NumberOfFood)개를 중요한 명명으로 사용하고자 합니다. 그럼 이 두가지 Input Concept부터 먼저 만들 봅시다.


NumberOfFood Concept에 대한 파일 생성과 코드 작업이 완료되었습니다. FoodName Concept도 생성해보겠습니다.


그런데 어쪄면, 정연이는 여러개의 음식을 한번에 주문하고 싶을지도 모르겠네요. 예를 들어, "햄버거 1개랑 콜라 1개 주문해" 처럼요. Bixby 개발환경에서는 여러개의 음식을 한번에 주문해도, 처리할 수 있도록, 쉽게 설정할 수 있습니다. NumberOfFood와 FoodName에 여러개의 정보가 담겨도, Bixby Capsule은 쉽게 처리할 수 있습니다. 이를 위해서는, NumberOfFood와 FoodName Concept 설정시, 입력받을 Input의 갯 max(Many)로 설정해주시면 됩니다. 자세한 내용은, 코드를 참조하세요.
Input Concept에 대한 설정 끝났네요. 이제, 정연이의 주문결과를 다시한번 확인하여 알려주는 return Concept도 만들어 보겠습니다. 이 return concept은 앞으로 만들 Action의 Output으로 사용될 예정입니다. 정연이의 주문이 여러개라 하더라, 주문 결과를 하나하나 잘 알려주기 위해서, 모든 주문결과를 저장할 OrderResults Structure concept을 하나 넣고, 아래와 같이, code하겠습니다. Structure Data Type이란, 일종의 레코드형 Concept Type이라고 생각해주시면 됩니다. 레코드형 타의 가장 큰 특징은 다른 종류의 자료도 함께 저장할 수 있다는 것입니다. 쉬운 예로, C언어의 구조체를 생각하시면 될 것 같습니다.


Structure 스타일의 Concept을 선언하게 되면, 해당 Structure Concept이 내부에 저장할 정보들을 위한, 컨셉도 생성해주셔야 합니다. 주문결과에 포함될 각각의 주문내용을 저장할, OrderResult라는 return Concept도 이와 같이 추가하시면 됩니다. 나중에 시간이 되신다면, 여러분의 스타일로 변경해보셔도 좋을 것 같습니다.


Action 생성하기
이렇게 하여, Input Concept에 대한 준비는 모두 끝났네요. 자 그럼 아래와 같이, Bixby Concept을 사용하여 사용자 발화를 처리할 action을 설계해 보겠습니다. Action을 선언하는 작업은, "정연이가 한말이 어떤 목적을 가지고 어떤 명명들을 사용하여 어떤 작업을 하기를 원하는지를" Bixby가 잘 이해하도록 정의하는 작업이라고 생각하시면 됩니다. 우리는 정연이의 여러가지 음식주문을 받아서, 주문 결과를 알려주는 Action을 만들어 보겠습니다. 아래와 같이, Action을 선언해 보겠습니다.


이렇게 Concept과 Action을 생성 완료하여, Capsule Modeling이 완료 되었습니다. Modeling이 완료되었으므로, burgershop 캡슐이, "정연이가 어떤 목적으로 어떤 조건을 가진 발화를 진행했을때, 선언된 모델링에 일치하거나 유사한 말을 하게 되면, 그 말을 알아들을 수 있도록 하는" 처리가 완료되었습니다. 지금부터는 Javascript를 활용하여, "Bixby가 알아들은 말의 목적에 맞는, 실제 처리를 진행할 수 있도록 하는" 개 작업을 진행하도록 하겠습니다.
Step3. Javascript 개발하
아래와 같이, 코드 처리를 하게 되면, Bixby가 정연이가 말한 요청을 처리하는 작업에 대한, 구현이 완료됩니다.


Step4. endpoint 선언하기
자 그럼, capsule의 Modeling 부분 중 Action단과 Javascript 부분을 서로 연결하여 보겠습니다. 먼저 resource 폴더 밑에 endpoint 파일을 만들고, 아래와 같이 개발해보겠습니다.


Step5. Bixby Views 활용하기
코드 처리는 모두 끝났네요. 하지만, Bixby가 burgershop Capsule의 처리결과를 단말에 내려줄 때, 특정한 Layout을 입혀 전달하기 위해서 Bixby Views라는 기능을 사용해보겠습니다. Bixby Views에는 여러가지 View 들이 있지만, 우리는 이번이 List View를 활용해보겠습니다.


View Code의 코드를 살펴보겠습니다. OrderResults라는 output concept의 정보 보여줄텐데요. 이때 OrderResults의 갯수가 1개이면, Details 모드로 하나만 노출해주고, 2개 이상이면 list-of를 이용하여 List 형로 출력됩니다.
[참조 Link] https://bixbydevelopers.com/dev/docs/dev-guide/developers/building-views.views
Step6. 자연어 트레이닝 하기
이제 Bixby Capsule이 정연이의 말을 잘 알아듣고 처리할 코드 준비가 완료되었습니다. 이 Capsule이 잘 동작하도록 자연어 트레이닝(NL Training)을 진행하고, 시뮬레이터를 구동해보겠습니다. 테스트하고 싶은 발화를 입하고, 필요한 부분에 Tagging을 진행해 주세요. Tagging과 관련된 부분은 링크 참고해주세요.
Step7. 배포하기
Bixby 캡슐 개발단계가 모두 끝났습니다. 이제 여러분의 Capsule을 배포하고, 관리해보세요. 자세한 내용은 아래를 참조 부탁드립니다. 수고 많으셨습니다.
[참조 Link] https://bixbydevelopers.com/dev/docs/dev-guide/developers/deploying
Last updated
Was this helpful?