Capture "yes" and "no" in AWS Connect "Get Customer Input" block - amazon-lex

This seems like a fairly basic requirement, but how do you capture a simple "yes" or "no" chat response in AWS Connect?
I have created a simple "Confirm" Lex intent which accepts utterances of "yes", "y" and "yeah" but the intent still returns a positive outcome even if the user types "no".

This can easily be accomplished by created a bot with 2 intentions, one of "yes" and the other for "no".
Add sample utterances for the "yes" intent, for example:
Then do the same for the "no" intent, for example:
Then use the Get Customer Input block with your bot, adding both the "Yes" and "No" intents to the block, like this:
This sample contact flow produces this response, confirming that "no" is recognized, when tested with Amazon Connect chat.

Related

Can Siri Shortcuts handle dynamic phrases and variables

i want to know is it possible for user to say
"balance in all cards" or "balance in home" or "balance in work"
how can user acheave this with one sentence
now user has to invoke siri siri with static phrase like "show my balance" then it askes for which card? then user ansers that to get the value
is it possible to do it with one sentense like:
"Balance of </Home/> card in cashAPP"
this way it introduce a whole new possible way of entering data with siri
imagine you could say :
"new expense in home category with 20 dollar"
is this possible
Unfortunately, this is not yet possible although the system shows promise for this feature.

NLU - extract string that is related to entity

is it possible in any NLU (e.g RASA, or Lex) to get attrbitued string of an entity?
Here is an example:
"please make sure to remind me about getting the project done"
let's say I'll put remind me as a REGEX - how can I extract the latter?
I'm talking about NLU perspective (and not naive string manipulation).
would like an output like
{
Intent:"remind_me"
Value:"about getting the project done"
}
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.

Changing the way that a SiriKit payment can be phrased

I'm trying to make a bill payment app using SiriKit's INPayBillIntent. I've set a custom bill organization type as below:
INVocabulary.shared().setVocabularyStrings(["Devon"], of: .paymentsOrganizationName)
The problem is with custom vocabulary -- I want to pay the bill in Siri by saying "Pay Devon" but Siri only recognizes the intent if I say "Pay Devon Bill" like saying "Pay Water Bill".
Can I change this?

How to define a synonym for a Siri intent param keyword?

I am developing a Siri extension handler for INTransferMoneyIntent. In this intent there is a param toAccount which Siri can parse out from your request and pass to your handler. It can successfully parse out any values for the toAccount param even if they are not registered in the app(through the global AppIntentVocabulary.plist or through INVocabulary). But it can only recognise the account name from the request if the request contains the word 'account' before or after the actual account name. Say: 'transfer $3 to Beer account'. Or 'Transfer $10 to account Beer' where 'Beer' is account name. And this is totally fine as this is exactly what this intent is supposed to be used for. But my customer wants that instead of the word 'account' the app could be able to recognise the account name by the keyword 'category'. Like in the phrase 'Spent $30 on Beer category'. Or even simply 'Spent $30 on Beer'.
I know that I could add custom vocabulary through AppIntentVocabulary.plist or through the INVocabulary class. But it seems to allow only setting the possible values for the intent attributes(in my case for the attribute INTransferMoneyIntent.toAccount.organizationName of INTransferMoneyIntent.toAccount.nickname) but not to provide a synonyms for the keyword itself that is used to recognise a param from the request phrase.
I am 99% sure that it is not possible to achieve that, but who knows.. Maybe there are some hidden options I have not discovered yet..
Any suggestions?
I confirm this is NOT possible.
Unfortunately you cannot use the AppIntentVocabulary.plist to define synonyms for the keywords that define the intent.
At least today with iOS 11.2

add confirmation entity in dialogflow (api.ai)

I need to add a confirmation entity so I get a 'Yes' or a 'Cancel' in the parameters of a certain operation in dialogflow (api.ai).
Say a user is purchasing a coffee, I'd ask details about the coffee and the quantity and finally i need a confirmation, what entity should i apply for that? any tutorial that refers to the same will also be helpful.
DialogFlow has a concept called a follow-up intent that you could use in a case like this:
You would create a "yes" follow-up to capture if the user wants to proceed, a "no" to cancel, and a "fallback" to explain to the user what is happening and what are acceptable answers.
If you are working with Actions on Google, you could also use askForConfirmation which is done completely from within your webhook code.
You can choose the most appropriate way depending on how your code is structured.
The other way would be to create a confirmation entity and prompt for it in your intent.
Create entty: Create 2 rows, one for yes and another for no, with the appropriate synonyms.
Adding it as a parameter with the entity you just created, and add the appropriate prompt.
An answer for who jump here trying to obtain this confirmation behavior with Actions on Google.
You can take a look at the documentation for Confirmation helper of Actions SDK for Node.js.
The solution is to setup an intent with the actions_intent_CONFIRMATION event in DialogFlow in order to retrieve the user response. My advice is to check how you configured your intents and use this method, otherwise be sure to create the follow-up intents with the desired context lifespan.
Example from documentation:
app.intent('Default Welcome Intent', conv => {
conv.ask(new Confirmation('Are you sure you want to do that?'))
})
// Create a Dialogflow intent with the `actions_intent_CONFIRMATION` event
app.intent('Get Confirmation', (conv, input, confirmation) => {
if (confirmation) {
conv.close(`Great! I'm glad you want to do it!`)
} else {
conv.close(`That's okay. Let's not do it now.`)
}
})
See also this question.

Resources