2017-06-07 1 views
2

J'essaie de créer un bot pour modifier les informations utilisateur stockées dans une base de données. Ma première pensée était de créer deux types de fente comme {toChange} et {newValue} où l'utilisateur pourrait dire «changer mon nom à Peter Griffin» ou «mon nouvel email est [email protected]».Types d'emplacements personnalisés dans amazon lex sans valeurs d'énumération

Il s'avère que Lex ne peut pas gérer ces entrées de chaîne personnalisées. Je devais créer un type de slot pour chaque valeur que l'utilisateur peut avoir: {name} avec AMAZON.Person, {address} avec AMAZON.PostalAddress et ainsi de suite et laissez Lambda gérer les emplacements corrects pour obtenir.

Le problème est que Lex n'offre pas de type d'emplacement pour le courrier électronique ou un numéro de compte bancaire au format IBAN (ni aucun autre format).

Si j'utilise un type d'emplacement personnalisé avec une liste d'énumération vide, je ne peux saisir que du texte et non des chiffres. En outre des blancs et des caractères spéciaux aiment. et @ ne sont pas reconnus et Lex demande une nouvelle saisie.

Y a-t-il un moyen d'accomplir cela? J'ai pensé à quelque chose comme demander la première partie du mail avant le @, puis demander le fournisseur et enfin remplir le code du pays. Mais c'est loin d'être convivial.

[EDIT]

Au cours des essais, j'ai découvert il n'y a pas de validation sur le côté pour Amazones AMAZON.PostalAddress comme pour l'instant. Je peux littéralement taper tout ce que je veux et il sera accepté, comme disons une adresse e-mail ou un numéro de compte: twinkle:

Pour le moment cette approche fonctionne bien, mais il n'y a absolument aucune garantie qu'il restera dans cette voie l'avenir, donc ma question est toujours ouverte.

PS: Comme cela, j'ai pu suivre ma première approche avec {toChange} et {newValue}, où le premier est un type de logement personnalisé avec des valeurs enumation und celle-ci est une fente AMAZON.PostalAddress.

+0

J'ai essayé d'utiliser AMAZON.PostalAddress mais semble qu'ils ont appliqué une certaine validation, maintenant il ne prend aucune chaîne. :( – sid8491

Répondre

0

La façon dont je l'ai fait était,
créer un type de logement personnalisé comme

{ "name": "emailAddressSlotType", 
    "description": "see name", 
    "enumerationValues": [ 
     { "value": "[email protected]" }, 
     { "value": "[email protected]" }, 
     { "value": "[email protected]" } 
    ] 
}  

Les valeurs d'énumération sont des adresses e-mail que l'échantillon. Vous devez ensuite le valider avec quelque chose comme un Lambda validationCodeHook.
voir: this probably ... je travaille toujours sur le mien

+0

J'ai utilisé une méthode similaire, mais quand un utilisateur entre une adresse e-mail non «point com» comme [email protected], cela échoue.La valeur entrée n'est pas considérée comme un e-mail – GunnerFan

+1

bien que vous pourriez ajouter beaucoup de énumérationValues ​​pour faire face à cela, je suppose ... – xor