mexico - Amazon Alexa: almacenar palabras del usuario
alexa skills español (5)
(8/5/17) Desafortunadamente, esta función se eliminó de Amazon con la eliminación de AMAZON.LITERALS.
Sin embargo , dependiendo de lo interesado que esté en capturar entradas de forma libre, puede estar satisfecho con un MODE
entrada que captura una palabra, nombre, ciudad, número, letra, símbolo, etc. a la vez y los une en una sola variable con ningún mensaje en el medio
He trabajado en un modo de entrada de contraseña que se puede modificar para recopilar y concatenar entradas de usuario. Si bien su aporte sería más lento, si optimiza su función lambda, es posible que pueda lograr una experiencia de usuario rápida para ingresar algunas oraciones. La estructura es lo importante. El código podría ser fácilmente adaptado.
¿Cómo dar entrada a la secuencia mixta de Amazon Alexa Skills Kit (ASK) con números? https://stackoverflow.com/a/45515598/8408056
Soy nuevo en escribir habilidades de Alexa y quiero escribir una habilidad para almacenar las palabras del orador.
Por ejemplo, si digo "Alexa, guarda {lo que diga}", debería guardar las palabras en alguna cadena.
Ahora, por lo que entiendo, el esquema de intención debería ser algo
{
intents:[
"intent" : "SaveIntent"
]
}
y expresiones como
SaveIntent save
SaveIntent store
En este caso, ¿cómo almaceno ''{lo que diga}''?
Para capturar entradas de voz de forma libre (en lugar de una lista definida de valores posibles), deberá usar el tipo de ranura AMAZON.LITERAL
. La documentación de Amazon para el tipo de ranura Literal describe un caso de uso similar al suyo, en el que se crea una habilidad para tomar cualquier frase y publicarla en un sitio de redes sociales. Esto se hace creando una intención de StatusUpdate:
{
"intents": [
{
"intent": "StatusUpdate",
"slots": [
{
"name": "UpdateText",
"type": "AMAZON.LITERAL"
}
]
}
]
}
Dado que utiliza el tipo de ranura AMAZON.LITERAL
, este intento podrá capturar cualquier frase arbitraria. Sin embargo, para garantizar que el motor de voz realice un trabajo decente al capturar frases del mundo real, debe proporcionar una variedad de expresiones de ejemplo que se asemejen al tipo de cosas que espera que diga el usuario.
Dado que en su escenario descrito, está intentando capturar frases muy dinámicas, hay un par de cosas en la documentación que querrá tener más en cuenta:
Si está utilizando el tipo AMAZON.LITERAL para recopilar texto de forma libre con amplias variaciones en el número de palabras que podrían estar en la ranura, tenga en cuenta lo siguiente:
- Cubrir este rango completo (mínimo, máximo y todo lo intermedio) requerirá un conjunto muy grande de muestras. Trate de proporcionar varios cientos de muestras o más para abordar todas las variaciones en las palabras de valor de ranura como se indicó anteriormente.
- Mantenga las frases dentro de las ranuras lo suficientemente cortas para que los usuarios puedan decir la frase completa sin necesidad de hacer una pausa.
Los comentarios hablados prolongados pueden llevar a experiencias de menor precisión, así que evite diseñar una interfaz de lenguaje hablado que requiera más de unas pocas palabras para un valor de ranura. Una frase que un usuario no puede hablar sin hacer una pausa es demasiado larga para un valor de ranura.
Dicho esto, aquí está el ejemplo de expresiones de ejemplo de la documentación, nuevamente:
StatusUpdate publicar la actualización {llegado | UpdateText}
StatusUpdate publica la actualización {dinner time | UpdateText}
StatusUpdate publica la actualización {out at lunch | UpdateText}
... (más muestras que muestran frases con 4-10 palabras)
StatusUpdate publica la actualización {va a pasar por la tienda de comestibles esta noche | UpdateText}
Si proporciona suficientes ejemplos de diferentes longitudes para obtener una imagen precisa del rango de expresiones esperadas del usuario, entonces su intención será capaz de capturar con precisión frases dinámicas en casos de usos reales, a los que puede acceder en el espacio UpdateText
. En base a esto, debería poder implementar una intención específica para sus necesidades.
Puedes intentar usar el tipo de ranura AMAZON.SearchQuery . Así que tu intención sería algo como esto.
{
"intents": [
{
"intent": "SaveIntent",
"slots": [
{
"name": "UpdateText",
"type": "AMAZON.SearchQuery"
}
]
}
]
}
Actualizado : Esta respuesta no es cierta. mencionado en los comentarios está el tipo de ranura de Amazon.Literal
que debería permitir esto.
Actualmente, Alexa no admite el acceso a la entrada de voz sin formato de los usuarios. Puede ser posible en el futuro, o puede consultar otra API de voz a texto, como la de Google''s .
La única forma de hacer esto actualmente con Alexa sería tener una lista de palabras que el usuario podría decir que guardaría.
Para hacerlo, puede seguir uno de los ejemplos de Amazon de usar un type ranura personalizado. Luego ponga todas las palabras posibles que el usuario diría en esa categoría.
Importante: AMAZON.LITERAL está en desuso desde el 22 de octubre de 2018. Las habilidades más antiguas desarrolladas con AMAZON.LITERAL continúan funcionando, pero debe migrar fuera de AMAZON.LITERAL cuando actualice esas habilidades más antiguas y para todas las habilidades nuevas.
En lugar de usar AMAZON.LITERAL, puedes usar una ranura personalizada para engañar a alexa para que pase el texto de flujo libre hacia el servidor.
Puedes usar esta configuración para hacerlo:
{
"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"
}
}
]
}
]
}
}
}