Alexa 스킬 개발에서 '스킬의 응답에 문제가 있습니다.' 발생 시 문제 해결

Alexa 스킬 개발 중이십니까?
자신이 구현한 대로 Alexa님이 말해 주는 것은 매우 즐겁습니다만, 웹이나 모바일 앱과는 또 다른 인터페이스인 일도 있어, 개발 환경에는 약간 번거로움을 느끼는 오늘 요즈음입니다.

"스킬의 응답에 문제가 있습니다."



스킬을 Lambda에 배포 한 후 동작 확인을 위해 alexa developer console에서 "테스트"를 실행하고 있다고 생각합니다.
웨이크 워드를 발화하고 현재 구현 한 인텐트 요청을 시작하면,

"스킬의 응답에 문제가 있습니다."



무자비한 이 문언이 돌아옵니다.
여러분은 이런 때 어떻습니까? 오히려 가르쳐 주었으면 할 정도입니다만, 나름대로의 조사 방법을 실어 둡니다.

1. Cloud9에서 디버깅



이것이 가장 좋습니다.
이용료가 다소 걸립니다만, 사소한 것입니다.

AWS Cloud9 요금

(덧붙여서 AWS Cloud9는 도쿄 리전에서는 사용할 수 없습니다. 그래서 Lambda가 도쿄 리전에 배포된 경우에는 이 방법을 사용할 수 없습니다. 여기는 다국어 대응을 예상하고 버지니아 북부 리전당에 배포하는 것은 어떻습니까? )

오른쪽 창의 AWS Resources의 Remote Functions 트리에 cloud9와 동일한 리전에 배포된 Lambda 함수 목록이 표시되므로 오른쪽 클릭 =>Import를 선택합니다.
그러면 왼쪽 창의 Environment 트리에 Lambda 함수가 표시됩니다.





우선 여기에서도 에러가 재현하는지 해봅시다.
위의 Run 버튼을 클릭하면 화면이 분할되어 디버깅을 위한 창이 표시됩니다.

"payload"라고 표시된 영역에 alexa developer console에 출력된, 여기가 발화했을 때 Alexa가 읽고 Lambda에 던진 JSON을 복사하고 "Run"버튼을 누릅니다.
그러면 "Response"영역에 Lambda의 실행 결과가 출력됩니다.



여기서 몇 모의 에러가 출력되고 있으면 나머지는 브레이크 포인트를 치고 디버그하면 됩니다.
cloud9에서 디버깅 기능을 사용하는 방법은 여기에서 다루지 않습니다.

2. Lambda Management Console에서 디버깅



드물게 alexa developper console에서는 오류가 발생하지만 cloud9는 정상적인 응답을 반환합니다.
대부분의 경우에는 권한입니다만, 우선은 조사해 봅시다.

AWS Management Console 에서 배포한 Lambda 편집 페이지를 엽니다.
오른쪽 상단의 선택 상자에서 테스트 이벤트 설정을 선택합니다.



대화 상자가 열리므로 여기에 이전과 같은 JSON을 복사하고 적절한 이름을 붙여 저장합니다.
그 후에는 "테스트"버튼을 누르면됩니다.
cloud9에서는 재현하지 않았던 에러가 여기에서는 재현할지도 모릅니다.
에러 로그까지 출력되므로 원인 규명까지 일순간이군요.



AskSdk.DynamoDbPersistenceAdapter Error



내 경우에는 DynamoDB에 대한 액세스 권한이 없었기 때문이었습니다.
cloud9는 AWS의 각종 서비스에 대한 액세스 권한을 가진 사용자로 실행하고 있었기 때문에 DynamoDB를 참조했을 때에도 오류가 발생하지 않았다고 생각합니다.
위 2에서는 Lambda에 부여된 역할로 실행되므로 액세스 권한 오류가 재현되는 것입니다.

2019.6.1 추가



2019년 4월에 Cloud9가 도쿄 리전에 대응했다는 뉴스가 있었습니다.
AWS Cloud9가 도쿄 리전을 지원했습니다.

좋은 웹페이지 즐겨찾기