아마존 에코의 Alexa Skills Kit 시도

11386 단어 AmazonEchoAWSlambda
나는 아마존 에코를 얻었다.2015년 7월까지는 일본어 대응이 없어 영어Amazon.com로만 구입할 수 있었다.

기본적으로 음성으로 제어한다.예:
Alexa, play some Prime Music, Alexa, what's the weather in Tokyo, 아마존 에코에게 말을 걸면 답을 얻을 수 있다.
다른 설비도 제어할 수 있지만 제어할 수 있는 설비는 이미 결정된 것 같다여기.
설비를 더 자유롭게 연결할 수 있다면 좋겠다.
아마존 에코의 흥미로운 점은 알렉사 스킬 키트(ASK)를 사용하면 아마존 에코에게 새로운 기술을 가르칠 수 있다는 것이다.그리고 AWS Lambda와 연합!즉, 스스로 프로그래밍할 수 있다는 것이다.
기대된다.
일단 설치부터 할게요.
그래도 쉽지만...

모바일 애플리케이션 다운로드 및 설치


아이폰이나 안드로이드 단말기로 이것사이트을 연결하면 그 앱을 다운로드할 수 있다.2015년 7월까지는 미국에 사는 사람만 다운로드할 수 있기 때문에 아이디를 미국으로 설정해 다운로드해야 한다.
이후 아마존 에코(Wifi 설정)를 마법사 형식으로 설정하면 사용할 수 있다.
간단하네!

Alexa Skills Kit 샘플 시도


그럼 여기서부터 본 공연입니다.
Alexa Skills KitDeveloping an Alexa Skill as a Lambda Function에 따라 작동합니다.
2015년 7월까지 Alexa Skills Kit는 US East(N. Virginia) region만 지원했으며, 이후의 AWS Lambda 설정은 US East(N. Virginia)에서 진행될 예정이다.
1. Lambda Function 설정
관리 콘솔에 로그인하여 US East를 선택하고 AWS Lambda를 선택합니다.

랩 기능 만들기 버튼을 클릭합니다.

blueprint를 선택하기 위해alexa-skills-kit-color-expert를 선택하십시오.
샘플을 미리 준비했으니 정말 가볍다.
계속 마법사 (이벤트 소스 기본 설정 유지).

함수 이름을 임의로 설정합니다. Role은 Basic Execution Role이고 시간 초과는 60초입니다.
화면을 확인하면 생성 함수에 람다 함수를 생성합니다.
생성된 후 Lambda Function의 ARN을 복사합니다.

로그인Amazon Developer Portal Skill을 아마존 에코에 설정합니다.
처음 오신 분은 계좌번호를 등록하셔야 할 것 같습니다.
적용 및 서비스 탭과 Alexa 탭을 선택합니다.

[새 하늘 추가] 버튼을 클릭합니다.
이름, Invocation Name 및 Endpoint 를 입력합니다.
Endpoint는 방금 복사한 Lambda Function의 ARN을 붙여넣습니다.
Name은 임의의 이름일 수 있지만, Invocation Name은 아마존 에코에게 물어볼 때의 이름이기 때문에 신중하게 선택해야 합니다.Invocation Name 이름을 지정하는 방법은 여기 문서를 참조하십시오.
요컨대, "Alexa, ask {Invocation name}to"형식으로 실행됩니다.
게시 후 변경할 수 없습니다.
그런 다음 Intent Schema 및 Sample Utterances를 설정합니다.
여기는 상당히 중요하다.
먼저 Intent Schema를 JSON 형식으로 설정합니다.
Intent Schema는 아마존 에코에서 음성으로 입력한 데이터를 Lambda Function에 입력할 때의 입력 유형을 정의합니다.
예제의 Lambda Function에는 각 입력 유형을 정의하는 데 사용되는 세 가지 Intent가 있습니다.문서의 JSON을 복사합니다.
Sample Utterances는 Amazon Echo의 각 Intent가 어떤 문구로 시작되는지 알려줍니다.
이러한 Intent Schema와 Sample Utterances의 생각은 앞으로 Alexa Skill Kit를 능숙하게 사용하는 데 매우 중요한 것 같다.반드시 여기 문서를 읽어 주십시오.
입력이 끝나면 Echo를 사용하여 테스트합니다.

상기 화면의 상태에서 아마존 에코에게 알렉사, ask {Invocation Name}what's my favorite color라고 말하면 먼저 좋아하는 색깔이라고 대답하고 이에 대해 my favorite color is blue라고 대답하고 what's my favorite color, my favorite color is blue가 아마존 에코에서 돌아온다.
이 경우 관리 콘솔의'람다 기능 감시'기능을 보면 람다 기능이 호출된 것을 발견할 수 있습니다.

느낌이 좋다.
Get Started로서 샘플과 문서가 모두 갖추어져 있어 이해하기 쉽습니다.
소스의 일부분을 대충 살펴보자.
Node.js
exports.handler = function (event, context) {
    try {
        console.log("event.session.application.applicationId=" + event.session.application.applicationId);

        /**
         * Uncomment this if statement and populate with your skill's application ID to
         * prevent someone else from configuring a skill that sends requests to this function.
         */
        /*
        if (event.session.application.applicationId !== "amzn1.echo-sdk-ams.app.[unique-value-here]") {
             context.fail("Invalid Application ID");
         }
        */

        if (event.session.new) {
            onSessionStarted({requestId: event.request.requestId}, event.session);
        }

        if (event.request.type === "LaunchRequest") {
            onLaunch(event.request,
                     event.session,
                     function callback(sessionAttributes, speechletResponse) {
                        context.succeed(buildResponse(sessionAttributes, speechletResponse));
                     });
        }  else if (event.request.type === "IntentRequest") {
            onIntent(event.request,
                     event.session,
                     function callback(sessionAttributes, speechletResponse) {
                         context.succeed(buildResponse(sessionAttributes, speechletResponse));
                     });
        } else if (event.request.type === "SessionEndedRequest") {
            onSessionEnded(event.request, event.session);
            context.succeed();
        }
    } catch (e) {
        context.fail("Exception: " + e);
    }
};
Launch Request, Intent Request, Session Ended Request는 아마존 에코에서 온 것 같습니다.
이를 통해 세션의 처리와 기본적인 Alexa Skill Kit의 절차를 이해할 수 있으니 참고할 수 있습니다.
같은 세션에서 행장 시간에 들어갈 수 있는 대화가 재미있다.
하지만 Lambda의 세션 데이터를 사용하는 것이 어떤지 궁금합니다.
같은 컨테이너로 가는 전제인가요?
이 근처에 좀 더 파세요.

면책


개인적인 의견이며 소속된 기업이나 단체와는 관계가 없다.

좋은 웹페이지 즐겨찾기