Ich habe eine Lambda-Funktion, die erfolgreich mit einer Absicht namens GetEvent
ausgeführt wird, die eine bestimmte Zeichenfolge zurückgibt. Ich habe eine Äußerung für diese Absicht zu Testzwecken erstellt (eine, die einfach ist und keine der optionalen Slots zum Aufrufen der Fähigkeit benötigt), aber bei Verwendung des Dienstsimulators zum Testen der Lambda-Funktion mit dieser Äußerung für GetEvent
I bin mit einer Lambda-Antwort, die "The response is invalid"
sagt getroffen. Hier ist, was das Interaktionsmodell wie folgt aussieht:Äußerungen zum Testen der Lambda-Funktion funktioniert nicht (aber Lambda-Funktion selbst ausgeführt)
#Intent Schema
{
"intents": [
{
"intent": "GetVessel",
"slots": [
{
"name": "boat",
"type": "LIST_OF_VESSELS"
},
{
"name": "location",
"type": "LIST_OF_LOCATIONS"
},
{
"name": "date",
"type": "AMAZON.DATE"
},
{
"name": "event",
"type": "LIST_OF_EVENTS"
}
]
},
{
"intent": "GetLocation",
"slots": [
{
"name": "event",
"type": "LIST_OF_EVENTS"
},
{
"name": "date",
"type": "AMAZON.DATE"
},
{
"name": "boat",
"type": "LIST_OF_VESSELS"
},
{
"name": "location",
"type": "LIST_OF_LOCATIONS"
}
]
},
{
"intent": "GetEvent",
"slots": [
{
"name": "event",
"type": "LIST_OF_EVENTS"
},
{
"name": "location",
"type": "LIST_OF_LOCATIONS"
}
]
}
]
}
Mit der entsprechenden benutzerdefinierten Fertigkeitsart Syntax und
#First test Utterances
GetVessel what are the properties of {boat}
GetLocation where did {event} occur
GetEvent get me my query
Wenn Alexa gibt die Äußerung get me my query
die Lambda-Antwort ausgeben sollte die Zeichenfolge, wie es in der tat Ausführung. Ich bin nicht sicher, warum das nicht der Fall ist; Das ist mein erstes Projekt mit dem Alexa Skills Kit, also bin ich ziemlich neu. Gibt es etwas, das ich nicht verstehe, wie die Lambda-Funktion, das Intent-Schema und die Äußerungen zusammengesetzt sind?
UPDATE: Dank etwas Hilfe von AWSSupport, ich habe das Problem eingrenzen zu dem Bereich, in dem json Anfrage, wo neue Sitzung als true
gekennzeichnet ist. Damit die Äußerung funktioniert, muss dies auf false
eingestellt werden (dies funktioniert bei der manuellen Eingabe der json-Anfrage, und dies ist auch während der Lambda-Ausführung der Fall). Warum ist das der Fall? Ist es Alexa wirklich wichtig, ob es während des Aufrufs eine neue Sitzung ist oder nicht? I've cross-posted this to the Amazon Developer Forums vor ein paar Tagen, aber noch keine Antwort von jemandem bekommen.
Erstens, eine Frage. Hast du "ask um mir meine Anfrage zu bekommen" in den Servicesimulator eingegeben? Es ist nicht gut dokumentiert, aber Sie können nicht einfach die Äußerung eingeben. Sie müssen es wie mit dem Echo aufrufen. (Minus das "Alexa" -Bit.) –
@JosephJaquinta wusste das nicht (überhaupt nicht intuitiv! Aber ich habe festgestellt, dass AWS ihre Dokumentation verbessern konnte), aber ich habe gerade versucht, Kirby, hol mir meine Anfrage '& ' Bitten Sie Kirby, mir meine Frage zu stellen, und es ergab sich immer noch die gleiche Antwort. –
Ich fragte, weil ich mit Ihren Daten offensichtlich nichts falsch sehe. So ... 1) versuchen Sie "Kirby öffnen" und sehen, ob das eine Startanfrage ausstellt. Wenn dies der Fall ist und Sie ohne Fehler verfahren, versuchen Sie es in derselben Sitzung mit "get my query". 2) Reduzieren Sie Ihr Interaktionsmodell auf nur die GetEvent-Absicht ohne Slots und nur die eine Äußerung. Sehen Sie, ob das funktioniert für "fragen Sie Kirby, um meine Frage zu bekommen". Wenn dies der Fall ist, fügen Sie das Zeug schrittweise zurück, bis es zerbricht. –