プロンプトでは、アクションがユーザーにレスポンスをレンダリングする方法と、アクションがユーザーに続行を求めるプロンプトを定義します。アクションを作成する際に、呼び出しやシーン内のさまざまな場所にプロンプトを追加できます。プロンプトは、テキストや音声によるレスポンスのようにシンプルなものでも、カード、画像、テーブルなどのリッチ コンテンツを含む複雑なものでもかまいません。
レスポンス タイプ
プロンプトごとに、さまざまな魅力的なレスポンス タイプから選択して、アシスタントがユーザーに提示できるようにします。
- シンプルなレスポンス: シンプルなレスポンスでは、チャットのふきだしの形を視覚的に受け取り、テキスト読み上げ(TTS)または音声合成マークアップ言語(SSML)を使用して音声を生成します。すべてのデバイスタイプでサポートされているレスポンスは、シンプルなレスポンスのみです。
- リッチ レスポンス: リッチ レスポンスには、アクションとのユーザー インタラクションを強化する視覚要素や機能要素が含まれます。リッチ レスポンスにより、表形式データの表示や、長い形式の音声コンテンツの再生も可能です。
- 視覚的な選択レスポンス: 視覚的な選択レスポンスは、タイトルや画像によって最も簡単に区別できる複数のオプションの中からユーザーが選択するためのビジュアル インターフェースを提供します。
- メディア レスポンス: メディア レスポンスでは、アクションで SSML よりも長い形式の音声コンテンツを再生し、メディア コントロール付きの視覚的コンポーネントを提供します。
- インタラクティブ キャンバス: インタラクティブ キャンバスはレスポンスを全画面のウェブビューとしてレンダリングし、アシスタントは会話でユーザーへのレスポンスとして送信するインタラクティブなウェブアプリとして機能します。Canvas では、HTML、CSS、JavaScript などのウェブ標準とは若干異なるプロンプト形式を使用して、柔軟性が向上します。
各レスポンス タイプは、同じ基本プロンプト形式を使用し、以下で説明する同じ一般的な機能にアクセスします。
プロンプトの形式
Actions プロジェクトでは、YAML 形式または JSON 形式でプロンプトを定義します。各プロンプトには、最大 2 つの単純なレスポンスを含めることができ、必要に応じてリッチ レスポンスを定義できます。レスポンスは次のように定義されます。
first_simple
: ユーザーに送信する最初のテキストまたは音声(単純な)レスポンス。content
: シンプルなレスポンスの後に送信される補足のリッチ レスポンス コンテンツ。last_simple
ユーザーに送信する最終的なテキストまたは音声(シンプル)レスポンス。canvas
: Interactive Canvas と統合されるウェブアプリを参照します。
デフォルトでは、プロンプトは上記の順序でプロンプト キューで互いに追加されます。ユーザーが応答する前に、アシスタントはプロンプト キューにあるすべてのプロンプトをユーザーに提示します。
さらに、次の機能を使用してプロンプトに柔軟性を持たせます。
- 候補: 候補を使用すると、ユーザーのデバイスの機能に基づいてレスポンスを定義できます。たとえば、ユーザーがディスプレイ対応デバイスでアクションを操作した場合にのみ、アシスタントでリッチ レスポンスを表示できます。
- バリエーション: バリエーションとは、単一のメッセージの別のバリエーションです。たとえば、ユーザーがアクションを呼び出すたびに、アシスタントに 5 種類のウェルカム メッセージのバリエーションから選択させることができます。
- 候補: ディスプレイ対応デバイスのユーザーに、アシスタントがメッセージを表示すると、候補ワードが表示されます。
デフォルトのプロンプトでは、1 つの候補、1 つのバリアント、1 つの first_simple
レスポンスが使用されます。
受験者
プロンプトで candidates
オブジェクトを使用すると、ユーザーのデバイスの機能に基づいてレスポンスを定義できます。たとえば、ユーザーがディスプレイ対応デバイスでアクションを操作した場合にのみ、アシスタントでリッチ レスポンスを表示できます。アシスタントが候補を返すことができるデバイスタイプを定義するには、candidates
オブジェクトの selector
プロパティを使用します。
以下の例では、selector
プロパティにデバイスの機能情報が含まれています。最初の候補に設定されたプロンプトは、リッチ レスポンスをレンダリングできるデバイス上のユーザーに送信されます。2 番目の候補には、テキストと音声のレスポンスのみを受信できるユーザー向けのプロンプトが含まれています。
YAML
candidates: - selector: surface_capabilities: capabilities: - RICH_RESPONSE first_simple: variants: - speech: Here's a simple message. content: card: title: Image card title text: Some details about the image image: url: 'https://www.example.com/image/' - first_simple: variants: - speech: Text explains what the image might have shown in more detail.
JSON
{ "candidates": [{ "selector": { "surface_capabilities": { "capabilities": ["RICH_RESPONSE"] } }, "first_simple": { "variants": [{ "speech": "Here's a simple message." }] }, "content": { "card": { "title": "Image card title", "text": "Some details about the image", "image": { "url": "https://www.example.com/image/" } } } }, { "first_simple": { "variants": [{ "speech": "Text explains what the image might have shown in more detail." }] } }] }
特定の受験者に対して 1 つ以上の能力要件を指定できます。以下のリストは、利用可能な各機能要件を示しています。
SPEECH
: デバイスがテキスト読み上げまたは SSML を介してユーザーとやり取りできます。RICH_RESPONSE
: デバイスは、カード、リスト、テーブルなどのリッチ レスポンスを表示できます。LONG_FORM_AUDIO
: デバイスは、音楽やポッドキャストなどの長時間のオーディオ メディアを再生できる。INTERACTIVE_CANVAS
: デバイスは Interactive Canvas のレスポンスを表示できます。WEB_LINK
: デバイスは、リッチ レスポンスでウェブリンクを使用してウェブブラウザを開くことができます。HOME_STORAGE
: デバイスはホーム ストレージへのデータの保存とアクセスができます。
パターン
バリエーションを使用すると、レスポンスの複数のバージョンを定義できます。アシスタントがユーザーにプロンプトを送信すると、バリアントの 1 つがランダムに選択されます。会話デザインのベスト プラクティスとして、ユーザーがアクションと会話するときに別の応答を提供するようにしてください。
たとえば、ユーザーに異なるウェルカム メッセージのバリエーションを提供し、ユーザーがアクションを呼び出すたびに同じレスポンスを聞くことがないようにします。
YAML
candidates: - first_simple: variants: - speech: Hello. - speech: Hi there. - speech: Welcome.
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Hello." },{ "speech": "Hi there." },{ "speech": "Welcome." }] } }] }
便利な操作
![スマートディスプレイに表示された候補ワードの例](https://developers.google.cn/static/assistant/conversational/images/smart-display/chips.png?authuser=6&hl=ja)
候補は、ディスプレイ対応デバイスのユーザーに、アシスタントがプロンプトを表示するときに候補ワードを提供します。候補ワードを使用して、会話を続行したり、方向転換したりするためのユーザーの回答をヒントにできます。タップすると、候補ワードが、ユーザーが入力したかのように表示されるテキストをそのまま会話に返します。
1 つのプロンプトには最大 8 つの候補を提示でき、それぞれの候補の最大文字数は 25 文字です。
候補を追加するには、それぞれの候補を含む Suggestion
オブジェクトを個別の title
フィールドに設定します。各タイトルは、候補ワードのセットの中で一意である必要があります。Actions Builder では、このオブジェクトは YAML と JSON で suggestions
として表されます。
たとえば、質問の横に「はい」と「いいえ」の候補を表示できます。
YAML
candidates: - first_simple: variants: - speech: 'Welcome, do you want to play a game?' suggestions: - title: 'Yes' - title: 'No'
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Welcome, do you want to play a game?" }] }, "suggestions": [{ "title": "Yes" }, { "title": "No" }] }] }