[英]alexa sending SessionEndedRequest on skill invocation
我正在開發一種 alexa 技能,並在亞馬遜提供的 alexa 模擬器上對其進行測試,它將根據用戶根據要求提供的關鍵字帶來一些新聞。
我將關鍵字設置為“ bbc news ”作為調用。
過去 2 天一切正常,現在突然間 alexa 模擬器自己發送了兩個請求。
在調用調用“ bbc news ”時,模擬器將LaunchRequest發送到我的服務器,然后在 1 秒內它自動將“ SessionEndedRequest ”發送到我的服務器。 我不知道發生了什么,我調試了我的 php 代碼,但它工作正常。
我剛剛遇到了類似的問題,經過幾個小時的更改后,它仍然無法正常工作。 在 AWS Lambda 上,所有測試都成功運行。 這聽起來很愚蠢,但在測試頁面(alexa 模擬器)上,它說在頂部啟用了技能測試: ,您有兩個選項: Development / Off 。
嘗試切換關閉狀態,然后再次選擇開發。 我 100% 確定它以某種方式重置了 Alexa 的模擬器當前狀態並使其再次為我正常工作。
嗨,我在 ALexa Echo 節目中遇到了同樣的問題。 一旦我從 echo show 調用我的技能,它首先發送帶有原因的 SessionEndedRequest:USER_INITIATED,然后幾秒鍾后自動發送另一個帶有調用詞和正確 IntentRequest 的請求。
第一反應:
{
type: 'SessionEndedRequest',
requestId: 'amzn1.echo-api.request.056129ac-6696-4928-98a7-b193cdf3301b',
timestamp: '2020-10-20T04:21:12Z',
locale: 'en-US',
reason: 'USER_INITIATED'
}
並且 IntentRequest 請求在此之后自動出現
{
type: 'IntentRequest',
requestId: 'amzn1.echo-api.request.4a731091-72c8-430d-91e9-e7db1a5c4d16',
locale: 'en-US',
timestamp: '2020-10-20T04:21:12Z',
intent: {
name: 'EveryThingIntent',
confirmationStatus: 'NONE',
slots: { EveryThingSlot: [Object] }
}
這只會發生在 alexa echo show 中。 從開發人員測試儀表板和手機上的 Alexa 應用程序中,我只得到了 IntentRequest
我遇到了同樣的問題,基礎是如果你之前的請求(會話)沒有正確結束,也許你在對話中退出了技能,或者在你的代碼響應結束時有.reprompt(),它還在等待回復。 所以當你再次調用技能時,它首先通過發送'SessionEndedRequest'終止之前的session,然后發送'LaunchRequest'來調用技能。
要解決此問題,請檢查是否在您的對話流結束時,是否有 a.reprompt() 在您的最終響應中。 去掉它。 自己就這樣修好了。
const FnHandler = { canHandle(handlerInput) { return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest' && Alexa.getIntentName(handlerInput.requestEnvelope) === 'FnIntent'; }, handle(handlerInput) { // const { attributesManager } = handlerInput; // const sessionAttributes = attributesManager.getSessionAttributes(); // sessionAttributes.state = 'ENDED'; return handlerInput.responseBuilder.speak(`Welcome, start by saying the name.`).reprompt(`Please say a name to start;`)// Remove this,getResponse(); }, };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.