我正在创建一种Alexa技能,从本质上讲它是一份问卷。在亚马逊网站上的开发人员模拟器中,它可以正常工作而不会超时。经过研究,我开始意识到大约有强制性的8秒超时。我还看到在aws lambda函数的设置中,可以将超时从默认的3秒更改为5分钟,这是我作为故障排除的一部分完成的。但是,此更改似乎没有效果。
我的问题如下:
在alexa应用程序或echoism.io上进行测试时(我没有Alexa设备,但可以想象它们的行为与之类似),Alexa提出的问题只有在被打断的情况下才能回答。换句话说,假设问题已被提出。然后,会发出蜂鸣声,表明用户应该做出响应。在这种情况下,即使用户输入合理,也不会发生任何事情,并且该技能也会退出。但是,如果在提示过程中的任何时间,用户按下语音按钮并回答问题,中断提示,则答案将按照开发者控制台模拟中的预期结果正确记录。
关于什么可能导致这种情况的任何想法?
请求
{
'version':'1.0',
'session':{
'new':False,
'sessionId':'amzn1.echo-api.session.f55b0102-a3cb-4c1a-9b0c-6ef73f579c69',
'application':{
'applicationId':'amzn1.ask.skill.20852205-3919-4d6a-8a62-cb6f8c6214ef'
},
'user':{
'userId':'amzn1.ask.account.AHVXIGHORW6PSATGYB6KWTZFBJ64Q2XXGRX3KFWWTRV7KLUAYSSR657SD74Z6E5PHXF35R75SZ7GJITERAT3XZ73LRXLR4KH2552NLMAL6WMAK2NQUZQ3EXB6DGOU2BZOTXFTT4UBBQSNNXB4J74U44UNWH6QJCWYBBATIIPE6YLV7W3TP4EYWQBTNTJ3LBVXF2EGFRDYRPTUCA'
}
},
'context':{
'System':{
'application':{
'applicationId':'amzn1.ask.skill.20852205-3919-4d6a-8a62-cb6f8c6214ef'
},
'user':{
'userId':'amzn1.ask.account.AHVXIGHORW6PSATGYB6KWTZFBJ64Q2XXGRX3KFWWTRV7KLUAYSSR657SD74Z6E5PHXF35R75SZ7GJITERAT3XZ73LRXLR4KH2552NLMAL6WMAK2NQUZQ3EXB6DGOU2BZOTXFTT4UBBQSNNXB4J74U44UNWH6QJCWYBBATIIPE6YLV7W3TP4EYWQBTNTJ3LBVXF2EGFRDYRPTUCA'
},
'device':{
'deviceId':'amzn1.ask.device.AHO5K5QILDUNW7BKDBJMLWENV7INXNFAHIAUB6ELHJ66MVMKQUPFT77GEEILVUDLABIN2JNUUQGPCOW2K6FX2EFTVKAZHGYFEFHZOLSZK5SHAQHLUK624DFPDS2FBBR6X4AZTKFLIJNLOCAWVQSLW5K2YJ5PGMGT2JBYXSNJE7GZWFIZC7WYK',
'supportedInterfaces':{
}
},
'apiEndpoint':'https://api.amazonalexa.com',
'apiAccessToken':'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJhdWQiOiJodHRwczovL2FwaS5hbWF6b25hbGV4YS5jb20iLCJpc3MiOiJBbGV4YVNraWxsS2l0Iiwic3ViIjoiYW16bjEuYXNrLnNraWxsLjIwODUyMjA1LTM5MTktNGQ2YS04YTYyLWNiNmY4YzYyMTRlZiIsImV4cCI6MTUzMjk2OTc3NSwiaWF0IjoxNTMyOTY2MTc1LCJuYmYiOjE1MzI5NjYxNzUsInByaXZhdGVDbGFpbXMiOnsiY29uc2VudFRva2VuIjpudWxsLCJkZXZpY2VJZCI6ImFtem4xLmFzay5kZXZpY2UuQUhPNUs1UUlMRFVOVzdCS0RCSk1MV0VOVjdJTlhORkFISUFVQjZFTEhKNjZNVk1LUVVQRlQ3N0dFRUlMVlVETEFCSU4ySk5VVVFHUENPVzJLNkZYMkVGVFZLQVpIR1lGRUZIWk9MU1pLNVNIQVFITFVLNjI0REZQRFMyRkJCUjZYNEFaVEtGTElKTkxPQ0FXVlFTTFc1SzJZSjVQR01HVDJKQllYU05KRTdHWldGSVpDN1dZSyIsInVzZXJJZCI6ImFtem4xLmFzay5hY2NvdW50LkFIVlhJR0hPUlc2UFNBVEdZQjZLV1RaRkJKNjRRMlhYR1JYM0tGV1dUUlY3S0xVQVlTU1I2NTdTRDc0WjZFNVBIWEYzNVI3NVNaN0dKSVRFUkFUM1haNzNMUlhMUjRLSDI1NTJOTE1BTDZXTUFLMk5RVVpRM0VYQjZER09VMkJaT1RYRlRUNFVCQlFTTk5YQjRKNzRVNDRVTldINlFKQ1dZQkJBVElJUEU2WUxWN1czVFA0RVlXUUJUTlRKM0xCVlhGMkVHRlJEWVJQVFVDQSJ9fQ.CPFDpKzKMBq9Dyhlw7S_fIHTkxN2YODIg-T85YMRWMqHQbalCFd2nC1rqOXoIAX-T6TTkKiXpOSsvEBgnERKivzPgXTRFou3dxsXijSyr4-ip2Ouu5rk-9lQ0IfVtnD424Kbezq7UzlSeEqyvblaOw4Yd7JwbTD0EuPUtCaj_pwLZny3i5-NunFdy1ytmGPN3KTsIIBjkpal61Ao_xNGgEYq_t5lOIwtEfx8uzPIO3VXn78IVC37FOEgylX3sWljGoxDyG_dQ36sprXWIdHBU0SvFnYJYntNwFH4i59KB2G3XseIcjtKDT2oN2VGF-eBdeolQ9_V_qWxqgOooYhNHw'
}
},
'request':{
'type':'IntentRequest',
'requestId':'amzn1.echo-api.request.848c8eed-7f47-4e32-a214-e034f03caf54',
'timestamp':'2018-07-30T15:56:15Z',
'locale':'en-US',
'intent':{
'name':'ScheduleCall',
'confirmationStatus':'NONE',
'slots':{
'OMProductName':{
'name':'OMProductName',
'confirmationStatus':'NONE'
},
'DidSymtomsReAppear':{
'name':'DidSymtomsReAppear',
'confirmationStatus':'NONE'
},
'ProvideHCPContactInfo':{
'name':'ProvideHCPContactInfo',
'confirmationStatus':'NONE'
},
'PatientFirstName':{
'name':'PatientFirstName',
'confirmationStatus':'NONE'
},
'AskWhenEventBegun':{
'name':'AskWhenEventBegun',
'confirmationStatus':'NONE'
},
'DidHCPRecommendAnyTreatment':{
'name':'DidHCPRecommendAnyTreatment',
'confirmationStatus':'NONE'
},
'PNursing':{
'name':'PNursing',
'confirmationStatus':'NONE'
},
'PDueDate':{
'name':'PDueDate',
'confirmationStatus':'NONE'
},
'PlanToContinue':{
'name':'PlanToContinue',
'confirmationStatus':'NONE'
},
'HowOftenUseProduct':{
'name':'HowOftenUseProduct',
'confirmationStatus':'NONE'
},
'OMPDose':{
'name':'OMPDose',
'confirmationStatus':'NONE'
},
'DateOfMiscarriage':{
'name':'DateOfMiscarriage',
'confirmationStatus':'NONE'
},
'WhatDateWasPAdmitted':{
'name':'WhatDateWasPAdmitted',
'confirmationStatus':'NONE'
},
'AskIfFirstTime':{
'name':'AskIfFirstTime',
'confirmationStatus':'NONE'
},
'WhenStartUsingProduct':{
'name':'WhenStartUsingProduct',
'confirmationStatus':'NONE'
},
'PAnyMedicalConditions':{
'name':'PAnyMedicalConditions',
'confirmationStatus':'NONE'
},
'DrugNameSQ':{
'name':'DrugNameSQ',
'confirmationStatus':'NONE'
},
'DidPatientReUseProduct':{
'name':'DidPatientReUseProduct',
'confirmationStatus':'NONE'
},
'OtherMedications':{
'name':'OtherMedications',
'confirmationStatus':'NONE'
},
'AskPermission':{
'name':'AskPermission',
'confirmationStatus':'NONE'
},
'ReportedCauseOfDeath':{
'name':'ReportedCauseOfDeath',
'confirmationStatus':'NONE'
},
'OMPFreq':{
'name':'OMPFreq',
'confirmationStatus':'NONE'
},
'PatientInitials':{
'name':'PatientInitials',
'confirmationStatus':'NONE'
},
'PPregnant':{
'name':'PPregnant',
'confirmationStatus':'NONE'
},
'WasPAdmittedToHospital':{
'name':'WasPAdmittedToHospital',
'confirmationStatus':'NONE'
},
'AEMiscarriage':{
'name':'AEMiscarriage',
'confirmationStatus':'NONE'
},
'DidTreatSymptoms':{
'name':'DidTreatSymptoms',
'confirmationStatus':'NONE'
},
'DidPContactHCPAbtSymptoms':{
'name':'DidPContactHCPAbtSymptoms',
'confirmationStatus':'NONE'
},
'PatientsHeight':{
'name':'PatientsHeight',
'confirmationStatus':'NONE'
},
'PChildAE':{
'name':'PChildAE',
'confirmationStatus':'NONE'
},
'AEBirthDefect':{
'name':'AEBirthDefect',
'confirmationStatus':'NONE'
},
'OMPStartTaking':{
'name':'OMPStartTaking',
'confirmationStatus':'NONE'
},
'OMIsItTopical':{
'name':'OMIsItTopical',
'confirmationStatus':'NONE'
},
'IsPatientStillExperiencingSymptoms':{
'name':'IsPatientStillExperiencingSymptoms',
'confirmationStatus':'NONE'
},
'DrugReaction':{
'name':'DrugReaction',
'confirmationStatus':'NONE'
},
'AskLastTimeUsed':{
'name':'AskLastTimeUsed',
'confirmationStatus':'NONE'
},
'PAnyAllergies':{
'name':'PAnyAllergies',
'confirmationStatus':'NONE'
},
'DateOfDeath':{
'name':'DateOfDeath',
'confirmationStatus':'NONE'
},
'ReportedCauseBirthDefect':{
'name':'ReportedCauseBirthDefect',
'confirmationStatus':'NONE'
},
'DescPreviousPtSimilarExperience':{
'name':'DescPreviousPtSimilarExperience',
'confirmationStatus':'NONE'
},
'OMPReason':{
'name':'OMPReason',
'confirmationStatus':'NONE'
},
'AskPatientDrugQtyUse':{
'name':'AskPatientDrugQtyUse',
'confirmationStatus':'NONE'
},
'WhenDidSymptomsEnd':{
'name':'WhenDidSymptomsEnd',
'confirmationStatus':'NONE'
},
'DidYouGoToER':{
'name':'DidYouGoToER',
'confirmationStatus':'NONE'
},
'PatientWeight':{
'name':'PatientWeight',
'confirmationStatus':'NONE'
},
'ReportedCauseMisCarriage':{
'name':'ReportedCauseMisCarriage',
'confirmationStatus':'NONE'
},
'AgeOfPatient':{
'name':'AgeOfPatient',
'confirmationStatus':'NONE'
},
'WhyPUseProduct':{
'name':'WhyPUseProduct',
'confirmationStatus':'NONE'
},
'PhoneNumber':{
'name':'PhoneNumber',
'confirmationStatus':'NONE'
},
'OMPLastTimeUsed':{
'name':'OMPLastTimeUsed',
'confirmationStatus':'NONE'
},
'WhatDidERDoForP':{
'name':'WhatDidERDoForP',
'confirmationStatus':'NONE'
},
'NameOfHospital':{
'name':'NameOfHospital',
'confirmationStatus':'NONE'
},
'DidSymtomsImproveAfterStop':{
'name':'DidSymtomsImproveAfterStop',
'confirmationStatus':'NONE'
},
'AskAnyLabTest':{
'name':'AskAnyLabTest',
'confirmationStatus':'NONE'
},
'AECausedDeath':{
'name':'AECausedDeath',
'confirmationStatus':'NONE'
}
}
},
'dialogState':'STARTED'
}
}
回复
{
'version':'1.0',
'sessionAttributes':{
},
'response':{
'outputSpeech':{
'type':'PlainText',
'text':'Thank you for using the Jane skill. See you next time!'
},
'card':{
'type':'Simple',
'title':'Jane - Thanks',
'content':'Thank you for using the Jane skill. See you next time!'
},
'reprompt':{
'outputSpeech':{
'type':'PlainText',
'text':None
}
},
'shouldEndSession':True
}
}
答案 0 :(得分:2)
Alexa的默认超时为8秒,并且不可配置。您可以使用reprompt
通知用户回答。在最初的8秒钟后,将触发reprompt
,使用户再有8秒钟可以响应。
但是,您可以尝试一些技巧,例如在后台播放静音音频来扩展此功能。但是您将不得不在两者之间使用唤醒词“ Alexa”来给出命令或答案。
Lambda超时不同,它是Lambda函数每个请求的最大执行持续时间。
在亚马逊网站上的开发人员模拟器中,它可以合理运行 很好,没有超时。
Alexa Simulator选项卡中的技能课程不会使设备超时,从而使您有更多时间在测试时输入您的回答。如果您的技能使会话保持打开状态,则可以通过“停止”关闭会话。
应该结束会话
如果您希望Alexa开始等待用户响应,则必须将响应JSON中的此参数设置为false
。实际要结束会话时,应将其设置为true
。
"shouldEndSession": true
有关响应对象here
的更多信息