Alexa 기술 개발 중 Warning: Application ID is not set

4561 단어 알렉사AWS

alexa.APP_ID를 alexa.appId로 수정하면 해결



결론부터 말하면 사양이 바뀐 것 같고, 문자열을 조금 수정하면 Warning이 사라졌습니다.
이하 경위와 해설입니다.

기술 디버깅 중 Warning 발견



Amazon Echo의 Alexa 스킬 처리를 AWS Lambda 에 쓰면서 디버그하고 있었는데, AWS ClowdWatch Management Console 에 어느새 다음 오류가 나오고 궁금해서 조사했습니다.
2018-01-28T03:58:29.297Z    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    Warning: Application ID is not set

응용 프로그램 ID가 설정되지 않았습니다.
이번 AWS Lambda의 함수 작성시에 선택할 수 있는 설계도인 alexa-skill-kit-sdk-factskill 를 선택해 개발을 시작했습니다만, 아무래도 사양에 변경이 있었던 것 같아 이대로라면 Warning이 되는 것 같습니다. (스킬은 일단 제대로 움직이기 때문에 눈치채기 어렵다!)

어디가 Warning의 원인이었는지


alexa-skill-kit-sdk-factskill 를 선택하여 생성된 코드는 다음과 같습니다.

index.js
// 一部不要なコメント等を省略しています
// 以下10行目〜15行目付近
'use strict';
const Alexa = require('alexa-sdk');
// 以下の行にスキルの`アプリケーション ID`を指定する必要があります(最初はundefinedですね)
const APP_ID = undefined;  // TODO replace with your app ID (OPTIONAL).

// 〜
// (中略)
// 〜

// 以下140目付近〜
exports.handler = function (event, context) {
    const alexa = Alexa.handler(event, context);
    // 以下の行に上の方で設定したアプリケーションIDが入るようですね
    alexa.APP_ID = APP_ID;
    // To enable string internationalization (i18n) features, set a resources object.
    alexa.resources = languageStrings;
    alexa.registerHandlers(handlers);
    alexa.execute();
};
alexa.APP_ID 하지만 현재는 사용되고 있지 않는 것 같습니다.
다음과 같이 alexa.appId로 변경하면 Warning이 사라집니다.
- alexa.APP_ID = APP_ID; // こちらは現在Warningとなる
+ alexa.appId = APP_ID; // 正しくはこちら

이상으로 ClowdWatch에서 Warning이 사라지는 것을 확인했습니다.

보충: 어플리케이션 ID를 환경 변수로 지정



파일내에 스킬의 어플리케이션 ID를 직접 쓰는 것도 있으므로 AWS Lambda 로 환경 변수를 지정해 기술하는 편이 좋을까 생각합니다.

기술 アプリケーションID는 개발자 콘솔의 Alexa 기술을 관리하는 페이지에서 확인할 수 있습니다.


AWS Lambda 의 환경 변수 부분에 다음과 같이 기술했습니다.
환경 변수 이름을 ALEXA_APP_ID , 값에 이전 응용 프로그램 ID를 지정합니다.



(TZ는 시간대 설정입니다)

Alexa Skill의 index.js의 APP_ID 부분에 환경 변수로 지정합니다.

index.js
const APP_ID = process.env.ALEXA_APP_ID;

이제 애플리케이션 ID를 직접 작성하지 않아도 됩니다.

좋은 웹페이지 즐겨찾기