Smartphones
Stay organized with collections
Save and categorize content based on your preferences.
Help users get things done while they're on-the-go, using the full multimodal
capabilities available on phones, including both voice and visuals.
Modalities
For mobile devices which have screens, your Action needs to support two modalities:
- Voice invocation
- Keyboard invocation
Note that users are free to move between these modalities within an Action. Make
sure to design your rich responses specifically for each of these
modalities. For example, with keyboard invocation, no sounds are played if they
are provided in SSML. If the response relies on the user hearing a sound and
the device is using keyboard modality, your Action needs to describe what kind
sound of sound is played.
To detect the availability of a screen and the input modality on a smartphone, you can use the following code:
- Has screen:
if (conv.screen)
- Uses voice modality:
if (conv.input.type === 'VOICE')
- Uses keyboard modality:
if (conv.input.type === 'KEYBOARD')
Tips & best practices

Try these Actions
Try this sample
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2024-09-18 UTC.
[null,null,["Last updated 2024-09-18 UTC."],[[["\u003cp\u003eBuild Actions that enable users to accomplish tasks on their mobile devices using voice and visual interactions.\u003c/p\u003e\n"],["\u003cp\u003eSupport both voice and keyboard invocation methods, tailoring responses appropriately for each modality.\u003c/p\u003e\n"],["\u003cp\u003eEnhance the user experience with rich responses, push notifications, and concise conversational flows.\u003c/p\u003e\n"],["\u003cp\u003eLeverage deep links to seamlessly integrate your Action with other platforms like websites and apps.\u003c/p\u003e\n"]]],["Actions on mobile devices should support both voice and keyboard input. Developers can detect screen availability and input modality using `conv.screen` and `conv.input.type` respectively. When using keyboard input, sounds should be described in text instead of played. Rich responses and theme customization enhance screen usage, while push notifications and deep links maintain user engagement. Prioritize quick task completion and intuitive conversational flows, considering the user is on the go.\n"],null,["# Smartphones\n\nHelp users get things done while they're on-the-go, using the full multimodal\ncapabilities available on phones, including both voice and visuals.\n\nModalities\n----------\n\nFor mobile devices which have screens, your Action needs to support two modalities:\n\n- Voice invocation\n- Keyboard invocation\n\nNote that users are free to move between these modalities within an Action. Make\nsure to design your rich responses specifically for each of these\nmodalities. For example, with keyboard invocation, no sounds are played if they\nare provided in [SSML](/assistant/conversational/df-asdk/ssml). If the response relies on the user hearing a sound and\nthe device is using keyboard modality, your Action needs to describe what kind\nsound of sound is played.\n\nTo detect the availability of a screen and the [input modality](/assistant/conversational/webhook/reference/rest/Shared.Types/InputType) on a smartphone, you can use the following code:\n\n- **Has screen** : `if (conv.screen)`\n- **Uses voice modality** : `if (conv.input.type === 'VOICE')`\n- **Uses keyboard modality** : `if (conv.input.type === 'KEYBOARD')`\n\nTips \\& best practices\n----------------------\n\n- Use [rich responses](/assistant/conversational/df-asdk/rich-responses) and [theme customization](/assistant/conversational/df-asdk/rich-responses#customizing_your_responses) to make the most out of the screen.\n- Consider using [push notifications](/assistant/engagement/notifications) to keep users engaged on mobile devices.\n- Remember that the user is on the go and try to help them achieve their task as quickly as possible. To learn how to craft natural and intuitive conversational flows, see the [conversation design guide](/assistant/conversational/df-asdk/design).\n- [Deep link directly to your Action](/assistant/engagement/assistant-links) from your website, mobile app, or social media for experiences better handled via voice.\n\nTry these Actions\n-----------------\n\n- [Starbucks](//assistant.google.com/services/a/uid/000000f2fb2c47e0?jsmode)\n- [SpotHero](//assistant.google.com/services/a/uid/00000031e1da95c6?jsmode)\n- [My Storytime](//assistant.google.com/services/a/id/6ebb0e742351c0dd?jsmode)\n\nTry this sample\n---------------\n\n- [Dialogflow conversation components sample](//github.com/actions-on-google/dialogflow-conversation-components-nodejs)"]]