question

田中翔平 avatar image
田中翔平 asked

コードエラーについて

const HasBirthdayLaunchRequestHandler = {
canHandle(handlerInput) {
const deviceId = handlerInput.requestEnvelope.context.System.device.deviceId;
const attributesManager = handlerInput.attributesManager;
const sessionAttributes = attributesManager.getSessionAttributes() || {};

const year = sessionAttributes.hasOwnProperty('year') ? sessionAttributes.year : 0;
const month = sessionAttributes.hasOwnProperty('month') ? sessionAttributes.month : 0;
const day = sessionAttributes.hasOwnProperty('day') ? sessionAttributes.day : 0;
let userTimeZone;
try {
const upsServiceClient = serviceClientFactory.getUpsServiceClient();
userTimeZone = await upsServiceClient.getSystemTimeZone(deviceId);
} catch (error) {
if (error.name !== 'ServiceError') {
   return handlerInput.responseBuilder.speak("サービスへの接続がうまく行きませんでした。").getResponse();
}
console.log('error', error.message);
}

return handlerInput.requestEnvelope.request.type === 'LaunchRequest' && year && month && day;

},

12行目がエラーになります。

どこが違っているのでしょうか。

alexa skills
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

寳島 瑞矢 avatar image
寳島 瑞矢 answered

12行目だけで言えば、handlerInputを追加すれば解消すると思います。

const upsServiceClient = handlerInput.serviceClientFactory.getUpsServiceClient();

その次はawaitでエラーが出ると思うので、asyncをつけてください。

また、canHandleではgetResponse() を返却できないのでここでもエラーが出ると思います。


処理は下記のサンプルのようにhandleに書きます。

canHandleは、ハンドラーの処理を実行する条件で、条件が満たされた場合handleにに書かれた処理が実行されます。

サンプル

const HelpIntentHandler = {

canHandle(handlerInput) {

return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'

&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.HelpIntent';

},

handle(handlerInput) {

const speakOutput = 'You can say hello to me! How can I help?';


return handlerInput.responseBuilder

.speak(speakOutput)

.reprompt(speakOutput)

.getResponse();

}

};

10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.