Here's a description of how to do it in Lex.
From your example:
User: "please make sure to remind me about getting the project done"
This is the user input, also called an Utterance.
First you create an Intent. You can name it like you did: remind_me
Then you provide Lex with intent-utterances, or phrases that the user will say to trigger that intent. Perhaps, something like:
"remember this for me"
"make a reminder"
"can you remind me about something"
"please remind me"
Those would simply trigger the intent and you can then ask the user for the information to remember.
Any value that you want to store in Lex is called a Slot Value because it is held in a Slot, which is basically just Alexa and Lex's term for 'variable'.
You could name the Slot: reminder
If your intent is triggered, then you Elicit Slot and ask the user:
"Okay, what would you like me to remind you about?"
You "teach" Lex what to listen for by providing all the variations of utterances you think the user might say, and simply place the SlotName in curly braces {} inside the utterance at the point where they are likely to say the word or phrase you want to store in the Slot.
"remind me about {reminder}"
"please remember {reminder}"
"make sure to remind me {reminder}"
These can even be the intent-utterances so you capture the reminder
value without needing to elicit it with a question.
Lex will then provide you with exactly what you are looking for and more, I'll simplify the JSON that Lex creates for you:
}
"currentIntent": {
"name": "remind-me",
"slots": {
"reminder": "about getting the project done"
}
},
"inputTranscript": "please make sure to remind me about getting the project done"
}
To view the full format see Lex Lambda Function Input Event and Response Format
Notice that Lex even provides the full user utterance in inputTranscript
. That's great for doing your own parsing and validating.