Prompts and statements comprise the other system to user direction of the conversational system. These are the replies that Slang can make depending on the context or state of the app. Broadly speaking, prompts are replies that expect an answer or reply from the user again, while statements are replies that don't expect an answer and more often than not represent the end of the conversation.
Another way to classify the prompts/statements is:
App prompts/statements: App prompts and statements are system wide prompts and
statements which as opposed to other prompts and statements are not dependent
on any of the intent or entities.
Intent prompts/statments: These are prompts and statements that are spoken
after a successful intent recognition. In case, there are required entities
to be prompted for and collected then this reply will be made after all the
required entities have been collected.
Entity prompts/statements: In case an intent needs some entities marked as
required, meaning for the fulfillment of the app functionality that this
intent triggers, these entities have to mandatorily be filled in. In case the
user does not mention the required entity in the first statement, then Slang
will prompt for it. The entity prompts are the replies that will be used to
by the app to urge the user to mention these entities.
Pool of prompts/statements: Each app, intent, or entity prompt or statement is actually an array of prompts or statements. This allows one to define multiple prompts/statements that mean the same thing. By cycling through these apps and prompts, Slang can sound less monotonous and introduce variety to the responses it gives.
Other language prompts: Slang does not perform translation automatically from English to another language on the prompts/statements that are supplied to it in English. Instead, for the other language prompts, you would have to supply the prompts. To do so use the the language tabs that are available. For best practices, try to maintain one is to one translations among the prompts in terms of order in the list for each language.
This is the statement that is made when the Slang is first triggered each time. You can use statements that introduce your product, or introduce Slang, or the usage of VAX on your app, or even make promotions using the statement. Examples:
Hi, how may I help you?
Hi, welcome to RingTel, do you want to recharge your account?
Hi, now use voice to recharge your account.
Hi use discount VOICE20 to 20 percent off of your purchase if you use voice to order.
This is the prompt use by Slang to ask the user to repeat themselves if their utterance was not recognizable. Keep it simple and make it clear that the user was not understood and would have to repeat the question. Examples:
Sorry, we were not able to understand what you were saying please try again.
Can you repeat that?
At the end of the intent, after all the required entities have been provided, (either it was included in the initial utterance or they were provided as replies to entity prompts), the intent completion statement will be spoken. This can be used to inform the user that 1. The request has been registered and processing has started, for example,
Looking for flights from Mumbai to Delhi where the flights list is not
ready. You could accompany this with processing iconography.
The request has been registered and executed and you are returning with the
results. This is preferred over the previous if your process is very fast and
the results will be available quickly. Examples:
Here are you flights from Mumbai to Delhi. This is accompanied by the
list of flights, since they are ready.
As explained above, entity prompts are used to collect entities, in case they are required and haven't already been provided by the user. To explain with an example: assume a flight booking app. The intent that can be triggered is 'flight_search', with which a user can search for the list of available flights. To trigger this functionality, the app will require from the user, information about where the source is, where the destination is, which day the user wants to fly. There can be other information like is the user planning a round trip flight, if yes, when do they expect to fly back, or how many adults and children are to be included into the itinerary. But for simplicity we will assume that for the intent to be fulfilled we need only the entities, source city, destination city and start date. The corresponding entities for these will be
start_date, which are of std.geo.city, std.geo.city, and std.date type respectively and marked as required.
Assume the user says 'I want a flight from Mumbai' when he first presses the trigger. The intent will be recognized as 'flight_search' as intent and 'source_city' as 'Mumbai'. However, say your app is designed in such a way that without the destination city and date you cannot show (or you do not want to show) the flights. At that point depending on the priority order of the entities, they will be prompted for one after the other. The prompts that will be used will be the entity prompts that were provided for each entity. Examples of prompts in this case would be: When
destination_city is missing: Where do you want to fly to? When
date is not filled in: On which day you want to fly?
In the console the order in which the entities are provided in the entities section, will be the order in which they will be prompted for, provided a value for that entity is not known as of now.
See Android Deep Dive for details on how to achieve this on Android