2017-07-30 6 views
0

J'ai créé un chatbot lex sms et l'ai publié sur un canal SMS Twilio. Dans ma fonction handleRequest de java lambda fulfillment, je reçois 2 paramètres: un objet Input et un contexte. L'entrée a un certain type d'ID utilisateur généré par le système, mais j'ai besoin du numéro de téléphone du message SMS entrant de Twilio.Amazon Lex reçoit le numéro de SMS entrant dans le gestionnaire de fonctions java lambda de Twilio?

J'ai configuré Twilio appeler Lex via webhook par ces instructions:

http://docs.aws.amazon.com/lex/latest/dg/twilio-bot-association.html#twilio-bot-assoc-create-assoc

J'utilise le système créé URL de rappel webhook entre Lex et Twilio et je voudrais éviter d'écrire ma propre Lex -Twilio passe entre Gateway API et lambda si possible.

Je pense qu'il me manque une configuration dans Twilio pour l'envoyer à Lex peut-être? Je n'ai pas configuré d'application TwilML ou quoi que ce soit, j'ai juste lié le numéro de SMS à mon URL de rappel de webhook pour lex. Tout fonctionne bien sauf obtenir le numéro de sms entrant.

MISE À JOUR:
J'épuisé toutes les possibilités avec mon objet d'entrée et le contexte dans ma fonction lambda java. Je suppose qu'il n'y a aucun moyen d'obtenir la charge utile de twilio en Java. J'ai essayé de passer à un gestionnaire de flux d'entrée, mais j'avais toujours le format d'entrée défini dans la documentation ici: http://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html
Je devais mordre la balle et construire ma propre passerelle API et gestionnaire de nœuds. C'est juste une couche qui se trouve devant lex et traduit twilio en format d'entrée lex et vice versa sur la réponse. Il met à jour l'userId avec le numéro de téléphone entrant.
Ce tutoriel a été très utile pour ce faire:
https://aws.amazon.com/blogs/ai/integrate-your-amazon-lex-bot-with-any-messaging-service/

Il est beaucoup de travail juste pour obtenir un champ supplémentaire, mais il ne me fournit la souplesse nécessaire pour changer de fournisseur de SMS à l'avenir plus facile.

+2

Je ne sais pas si cela aide, mais par comparaison dans le nœud, où "objet d'entrée" est la structure lambda 'event' ... dans les exemples Lex, l'objet' event' contient un 'body-json' qui apparaît être le corps de la requête JSON d'origine de Twilio et possède un attribut interne 'From'. Alors Lex ne "connaît" pas le numéro mais semble le passer. Le reste de la façon dont ça arrive est un peu trouble mais je ne pense pas qu'il soit possible de mal configurer Twilio pour ne pas l'envoyer - il semble que ce que vous devez faire est de le faire passer à vous. Peut-être que cela vous donne quelque chose à chasser. –

+1

Merci Michael. J'ai juste décidé de créer la couche entre lex et twilio et la passerelle api. beaucoup de travail pour un champ supplémentaire (numéro de sms entrant) – Mattbob

Répondre

0

Je ne suis pas sûr que ce qui vous a exactement empêché d'obtenir le numéro de téléphone de l'utilisateur dans votre fonction lambda. Vous pouvez toujours obtenir le numéro de téléphone de l'expéditeur à partir du champ 'userId' de l'événement d'entrée dans votre fonction lambda. Vous pouvez vous référer au documentation pour obtenir plus d'informations.