Alexa Skill에서 사용하는 Lambda 함수 (Node.js)를 빠지지 않고 "하나부터 작성"하는 방법
Node.js가 개발 환경에 설치되어 있다고 가정합니다.
Node.js 프로젝트 만들기
개발 환경에 적합한 디렉토리를 만듭니다.
$ mkdir SKILLDIR
$ cd SKILLDIR
다음 명령을 사용하여
package.json
를 만듭니다.$ npm init
(案内に従って各種プロパティを設定)
index.js
를 작성해, Alexa SDK의 README에서 소개되었습니다. 최소한의 코드와, 필수 요청 유형 를 받는 핸들러의 빈 구현을 넣습니다.index.js
'use strict';
const Alexa = require('alexa-sdk');
exports.handler = function(event, context, callback) {
const alexa = Alexa.handler(event, context, callback);
alexa.appId = APP_ID // EDIT HERE
alexa.registerHandlers(handlers);
alexa.execute();
};
const handlers = {
'LaunchRequest': function () {
// EDIT HERE
},
'XXIntent' : function() {
// EDIT HERE
},
'SessionEndedRequest': function () {
// EDIT HERE
},
};
다음 명령을 사용하여 최신 Alexa SDK을
node_modules/
로 다운로드하고 package.json
에 참조를 추가합니다.$ npm install --save alexa-sdk
(선택 사항) 앞으로 사용할 계획 라이브러리를 마찬가지로 추가합니다. (이하 axios의 예)
$ npm install --save axios
AWS SDK 삭제
이 시점에서 ZIP화하여 Lambda 콘솔에 업로드하면
Lambda 関数 「xxxx」 のデプロイパッケージが大きすぎて、インラインコード編集を有効にできません。
라는 메시지가 표시되어 인라인 편집을 할 수 없게 됩니다.이것은, Alexa SDK를 다운로드할 때에, 의존 라이브러리로서 AWS SDK 까지
node_modules/
에 다운로드되어 ZIP의 사이즈가 커져 버리기 (위해)때문입니다.이를 방지하려면 AWS SDK를 삭제합니다. Lambda 서버에는 이미 AWS SDK가 포함되어 있으므로 인라인 편집하는 경우 AWS SDK를 ZIP에 포함하지 않아도 됩니다.
$ npm uninstall aws-sdk
ZIP 만들기 및 Lambda에 업로드
ZIP로 압축합니다. 다음은 예입니다.
$ zip -r ../alexa-test.zip *
AWS의 Lambda 콘솔에서 함수를 "하나부터 생성"합니다.
함수 코드에서
コードエントリタイプ
를 .ZIPファイルをアップロード
로 변경하여 만든 ZIP 파일을 업로드합니다.화면 오른쪽 상단의
保存
버튼을 누릅니다. 잘하면 인라인 편집기가 열립니다.이 에디터로
APP_ID
의 부분을 편집하거나 각 핸들러를 정식으로 구현해 갑시다.도서관 교체가 필요한 경우
アクション
-> 関数のエクスポート
로 내보냅니다. npm uninstall
에서 AWS SDK를 삭제합니다.npm 명령을 실행하면 삭제한 AWS SDK가 다시 활성화되므로 반드시 ZIP화 직전에 AWS SDK를 삭제해야 합니다.
Reference
이 문제에 관하여(Alexa Skill에서 사용하는 Lambda 함수 (Node.js)를 빠지지 않고 "하나부터 작성"하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/makopo/items/b738e32081f8cae75fe7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)