Can Siri Shortcuts handle dynamic phrases and variables - ios

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.

Related

iOS - How to get device names sortening in system address book?

I would like to get which settings has user set in his device to set the same in my app. User can set "Sort Order" and "Display Order" as "First, Last" or "Last, First". Where can I access what user has set?
I found that in ABAddressBook class there is method defaultNameOrdering() which looks like what I am looking for. But that class is deprecated. Is there a property or a same method in CNContactStore? And for both? Sort and display order?
I can't find any similar info in CNContactStore. Thanks for help

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

Rails - DRY in Cucumber scenarios. What is a good balance?

I have the following scenarios:
Scenario: Create a game with valid information
Given I am logged in
When I visit the new game page
And I fill in "Game type" with "Basketball"
And I fill in "Zip code" with "94040"
And I fill in "Description" with "Friendly match"
And I click on the button "Create Game"
Then I should see "Awesome! Your game has been created."
Scenario: Create a game with missing information
Given I am logged in
When I visit the new game page
And I fill in "Zip code" with "94040"
And I fill in "Description" with "Friendly match"
And I click on the button "Create Game"
Then I should see "Game type can't be blank."
As you can see I am repeating code and as a developer point of view, I hate that I am repeating some sentences in both scenarios. However, I assume that scenarios have to be independent clear, so any stakeholder can take a look and say..Oh, I know what this scenario is describing.
I am trying to test if my form validation is working correctly for different kind of field values. So, I will have many similar scenarios that will be basically changing the "fill in" parts. So, another similar/related scenario would be the one that checks that zip code has to be numeric:
Scenario: Create a game with invalid zip code
Given I am logged in
When I visit the new game page
And I fill in "Game type" with "Basketball"
And I fill in "Zip code" with "ffff"
And I fill in "Description" with "Friendly match"
And I click on the button "Create Game"
Then I should see "Zip code has to contain 5 digits."
So, my question is: Is there any DRY, business people friendly way of doing this? I mean, a balance between code optimization and clear and understandable independent scenario definition?
I think scenario outline would suit you well.

Resources