it-swarm.com.de

Amazon Alexa: Speichern Sie die Wörter des Benutzers

Ich bin neu im Schreiben von Alexa-Fähigkeiten und möchte eine Fähigkeit schreiben, um die Worte des Sprechers zu speichern.
Wenn ich zum Beispiel "Alexa, außer {was auch immer ich sage}" sage, sollten die Wörter in einer Zeichenfolge gespeichert werden.
Nun, was ich verstehe, sollte das Absichtsschema etwas sein

{
   intents:[
       "intent" : "SaveIntent"
   ]
}

und Äußerungen mögen

SaveIntent save
SaveIntent store

Wie speichere ich in diesem Fall "{was auch immer ich sage"?

20
Kuldeep Ghate

Für die Erfassung von Freiform-Spracheingaben (anstelle einer definierten Liste möglicher Werte) müssen Sie den Slot Amazon.LITERAL verwenden. In der Amazon-Dokumentation für den Literal-Slot-Typ wird ein Anwendungsfall beschrieben, der Ihrem ähnelt, bei dem eine Fertigkeit erstellt wird, um einen beliebigen Satz auf eine Social Media-Site zu stellen. Dazu erstellen Sie eine StatusUpdate-Absicht:

{
  "intents": [
    {
      "intent": "StatusUpdate",
      "slots": [
        {
          "name": "UpdateText",
          "type": "Amazon.LITERAL"
        }
      ]
    }
  ]
}

Da es den Slot-Typ Amazon.LITERAL verwendet, kann diese Absicht beliebige Phrasen erfassen. Um jedoch sicherzustellen, dass das Sprachmodul anständige Phrasen aus der realen Welt erfassen kann, müssen Sie verschiedene Beispieläußerungen angeben, die den Dingen ähneln, die der Benutzer von Ihnen erwartet. 

Da Sie in Ihrem beschriebenen Szenario dynamische Phrasen very erfassen möchten, enthält die Dokumentation einige Dinge, die Sie besonders berücksichtigen sollten:

Wenn Sie den Amazon.LITERAL-Typ verwenden, um Freiformtext zu sammeln mit großen Abweichungen in der Anzahl der Wörter, die sich möglicherweise im Slot befinden, beachten Sie das Folgende:

  • Um diesen gesamten Bereich (Minimum, Maximum und alles dazwischen) abzudecken, wird erfordern eine sehr große Anzahl von Proben. Versuchen Sie, mehrere Hundert anzugeben Samples oder mehr, um alle Variationen in Slotwertwörtern als .__ anzugehen. oben angemerkt. 
  • Halten Sie die Phrasen in den Slots so kurz, dass Benutzer Sprechen Sie die gesamte Phrase aus, ohne Pause zu machen.

Eine lange gesprochene Eingabe kann zu einer geringeren Genauigkeit führen. Vermeiden Sie daher __. Entwerfen einer Schnittstelle für die gesprochene Sprache, für die mehr als einige wenige erforderlich sind Wörter für einen Slotwert. Eine Phrase, die ein Benutzer nicht ohne .__ sprechen kann. Pause ist zu lang für einen Slotwert.

Das heißt, hier ist das Beispiel-Beispiel-Äußerungen aus der Dokumentation: 

StatusUpdate poste das Update {angekommen | UpdateText} 

StatusUpdate Nach dem Update posten {dinner time | UpdateText} 

StatusUpdate poste das Update {out at lunch | UpdateText} 

... (weitere Beispiele mit Phrasen mit 4-10 Wörtern)

StatusUpdate post the update {geht heute Abend beim Supermarkt vorbei | UpdateText}

Wenn Sie genügend Beispiele für unterschiedliche Längen angeben, um ein genaues Bild des Bereichs erwarteter Benutzeräußerungen zu erhalten, können Sie in realen Anwendungsfällen dynamische Phrasen genau erfassen, auf die Sie im UpdateText-Slot zugreifen können. Auf dieser Grundlage sollten Sie in der Lage sein, eine auf Ihre Bedürfnisse zugeschnittene Absicht zu implementieren.

15
Sam Hanley

Wichtig: Amazon.LITERAL ist seit dem 22. Oktober 2018 veraltet. Ältere Fähigkeiten, die mit Amazon.LITERAL erstellt wurden, funktionieren weiterhin, aber Sie müssen von Amazon.LITERAL weggehen, wenn Sie diese älteren Fähigkeiten aktualisieren, und für alle neuen Fähigkeiten.

Anstelle von Amazon.LITERAL können Sie einen benutzerdefinierten Slot verwenden, um Alexa dazu zu bringen, den Text für den freien Fluss an das Backend zu übergeben.

Sie können diese Konfiguration dazu verwenden:

{
    "interactionModel": {
        "languageModel": {
            "invocationName": "siri",
            "intents": [
                {
                    "name": "SaveIntent",
                    "slots": [
                        {
                            "name": "text",
                            "type": "catchAll"
                        }
                    ],
                    "samples": [
                        "{text}"
                    ]
                }
            ],
            "types": [
                {
                    "name": "catchAll",
                    "values": [
                        {
                            "name": {
                                "value": "allonymous isoelectrically salubrity apositia phantomize Sangraal externomedian phylloidal"
                            }
                        },
                        {
                            "name": {
                                "value": "imbreviate Bertie arithmetical undramatically braccianite eightling imagerially leadoff"
                            }
                        },
                        {
                            "name": {
                                "value": "mistakenness preinspire tourbillion caraguata chloremia unsupportedness squatarole licitation"
                            }
                        },
                        {
                            "name": {
                                "value": "Cimbric sigillarid deconsecrate acceptableness balsamine anostosis disjunctively chafflike"
                            }
                        },
                        {
                            "name": {
                                "value": "earsplitting mesoblastema outglow predeclare theriomorphism prereligious unarousing"
                            }
                        },
                        {
                            "name": {
                                "value": "ravinement pentameter proboscidate unexigent ringbone unnormal Entomophila perfectibilism"
                            }
                        },
                        {
                            "name": {
                                "value": "defyingly amoralist toadship psoatic boyology unpartizan merlin nonskid"
                            }
                        },
                        {
                            "name": {
                                "value": "broadax lifeboat progenitive betel ashkoko cleronomy unpresaging pneumonectomy"
                            }
                        },
                        {
                            "name": {
                                "value": "overharshness filtrability visual predonate colisepsis unoccurring turbanlike flyboy"
                            }
                        },
                        {
                            "name": {
                                "value": "kilp Callicarpa unforsaken undergarment maxim cosenator archmugwump fitted"
                            }
                        },
                        {
                            "name": {
                                "value": "ungutted pontificially Oudenodon fossiled chess Unitarian bicone justice"
                            }
                        },
                        {
                            "name": {
                                "value": "compartmentalize prenotice achromat suitability molt stethograph Ricciaceae ultrafidianism"
                            }
                        },
                        {
                            "name": {
                                "value": "slotter archae contrastimulant sopper Serranus remarry pterygial atactic"
                            }
                        },
                        {
                            "name": {
                                "value": "superstrata shucking Umbrian hepatophlebotomy undreaded introspect doxographer tractility"
                            }
                        },
                        {
                            "name": {
                                "value": "obstructionist undethroned unlockable Lincolniana haggaday vindicatively tithebook"
                            }
                        },
                        {
                            "name": {
                                "value": "unsole relatively Atrebates Paramecium vestryish stockfish subpreceptor"
                            }
                        },
                        {
                            "name": {
                                "value": "babied vagueness elabrate graphophonic kalidium oligocholia floccus strang"
                            }
                        },
                        {
                            "name": {
                                "value": "undersight monotriglyphic uneffete trachycarpous albeit pardonableness Wade"
                            }
                        },
                        {
                            "name": {
                                "value": "minacious peroratory filibeg Kabirpanthi cyphella cattalo chaffy savanilla"
                            }
                        },
                        {
                            "name": {
                                "value": "Polyborinae Shakerlike checkerwork pentadecylic shopgirl herbary disanagrammatize shoad"
                            }
                        }
                    ]
                }
            ]
        }
    }
}
3
adam shamsudeen

Sie können versuchen, den Slot-Typ Amazon.SearchQuery zu verwenden. Sie beabsichtigen also so etwas

{
  "intents": [
    {
      "intent": "SaveIntent",
      "slots": [
        {
          "name": "UpdateText",
          "type": "Amazon.SearchQuery"
        }
      ]
    }
  ]
}
2
Raj Sharma

ende 2018 benutze ich SearchQuery, um das zu bekommen, was der Benutzer sagt.

Es funktioniert und ich habe es auf Produktionssystemen.

Man muss aber den Benutzer etwas fragen und den Slot füllen. 

Zum Beispiel: 

  • Definieren Sie einen Slot-Typ von SearchQuery mit dem Namen query (wählen Sie den gewünschten Namen).
  • Fügen Sie Beispielausdrücke in den Slot-Eingabeaufforderungen hinzu, wie I want to watch {query} oder {query} oder I want {query}.
  • Stellen Sie eine Frage an den Benutzer zum Füllen der Steckplätze
const message = 'What movie do you want to watch?'

handlerInput
  .responseBuilder
  .speak(message)
  .reprompt(message)
  .addElicitSlotDirective('query')
  .getResponse();
1
rafinskipg

Updated: Diese Antwort ist nicht wahr. In den Kommentaren wird der Typ Amazon.Literal Slot angegeben, der dies zulassen sollte.


Alexa unterstützt derzeit keinen Zugriff auf die rohe Spracheingabe der Benutzer. Möglicherweise ist dies in der Zukunft möglich, oder Sie können sich eine andere Sprache für Text-APIs wie Googles ansehen.

Die einzige Möglichkeit, dies derzeit bei Alexa zu tun, wäre eine festgelegte Liste von Wörtern, von denen der Benutzer sagen könnte, dass sie speichern würde. 

Um dies zu tun, können Sie einem der Beispiele von Amazon folgen, wie Sie einen benutzerdefinierten Slot Typ verwenden. Fügen Sie dann alle möglichen Wörter, die der Benutzer sagen würde, in diese Kategorie ein.

0
Alex Rouse

(05.08.17) Leider wurde diese Funktion von Amazon entfernt, da Amazon.LITERALS entfernt wurde. 

Allerdings, je nachdem, wie sehr Sie daran interessiert sind, Eingaben in freier Form zu erfassen, können Sie mit einer Eingabe MODE zufrieden sein, die jeweils ein Wort, einen Namen, eine Stadt, eine Zahl, einen Buchstaben, ein Symbol usw. erfasst und diese miteinander verbindet eine einzelne Variable ohne Nachricht dazwischen. 

Ich habe an einem Kennworteingabemodus gearbeitet, der geändert werden kann, um Benutzereingaben zu sammeln und zu verketten. Während Ihre Eingabe langsamer wäre, können Sie durch Optimierung der Lambda-Funktion möglicherweise ein schnelles Benutzererlebnis für die Eingabe einiger Sätze erzielen. Die Struktur ist wichtig. Der Code könnte leicht angepasst werden. 

Wie gebe ich Amazon Alexa Skills Kit (ASK) einen gemischten String mit Zahlen ein?https://stackoverflow.com/a/45515598/8408056

0
Caleb Gates