SpeakEasy has developed a high-level, yet easy to understand formalism / language (Dialogic) that allows the specification of dialogs for e.g. Actions on Google. It comes with a compiler which converts a dialog to a self-contained NODE.JS webserver that contains the 'fulfillment code' of the Actions on Google Action. The webserver is deployed to the cloud.
For the dialog specification, the language uses a small number of entities (Questions, Commands, Triggers an Patterns) as well as a script language. The language patterns that are expected (as answers) by Questions and Commands are written in an extensive, arbitrarily complex regular expression format, in which script statements can be embedded as well.
Internally in the NODE.JS server there is a 'dialog driver' which executes the right Question, Command, etc. at the right moment, directed by what the user says. Questions are associated with zero or more 'unknowns': a kind of empty slots. The dialog driver's strategy amounts to getting these slots filled.
An answer from the user will first be matched against the (patterns of the) available Commands. If a match is found, the Command (e.g. stop or help) will be executed, after which the original Question will be re-asked. The mechanism of finding applicable Questions can be further refined by grouping Questions into Activities that can be enabled or disabled, by defining a precondition that must be met, and by imposing the order in which Questions should be asked.
Triggers will fire automatically when the trigger-precondition is met.
Patterns are reusable entities, such as postcode, that can be embedded in the language patterns.
Connections to external databases / url's can be established as well.
The language has been used to specify a sample dialog that for obtaining (train) travel information. A translated sample of the Dialogic code that has been used can be found here, with a
sample piece of generated (TypeScript) code here.
For contact please click