After working a bit more with the Jovo framework for developing Google Assistant actions, I compiled this list of problems that might have cryptic error messages, or fail silently. Hopefully this may help someone else trouble shooting a tricky problem.
.displayText() with i18n speech object
When using the i18n speeach object with the .displayText() method you need to call .toString():
.displayText(this.t('welcome).toString())
Otherwise the application will fail silently, if you don’t call .toString()
.displayText(this.t('welcome))
An error that happens when you forget to to set a conversation.$user.$data
variable when unit testing.
TypeError: Cannot read property 'google' of undefined
at GoogleAssistantDialogflowFactory.createResponse (/Users/milanarezina/WebstormProjects/wyzefind-jovo-integration/node_modules/jovo-platform-googleassistant/src/dialogflow/GoogleAssistantDialogflowFactory.ts:31:43)
at DialogflowResponseBuilder.create (/Users/milanarezina/WebstormProjects/wyzefind-jovo-integration/node_modules/jovo-platform-dialogflow/src/core/DialogflowResponseBuilder.ts:13:29)
at Conversation.sendToServer (/Users/milanarezina/WebstormProjects/wyzefind-jovo-integration/node_modules/jovo-core/src/Conversation.ts:145:65)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
Google Assistant list selection on surfaces with no screen
Google Home speaker surface does not call the ON_SELECT_ELEMENT even if the user says the name of the list element. On a surface with a screen, saying the list items name would invoke ON_SELECT_ELEMENT.
You need to also have Ordinal selection handlers for your action to be compatible with surfaces with no screen. To handle the user saying the name of a list element to select it, you need to add a reprompt to handle the user not using ordinal selection.
Spreadsheets CMS
You can’t leave an empty row in between rows with key value pairs in an i18n key value sheet. If there is an empty row then the utterances will contain the text of the key instead of the value. This fails silently.