アクションを定義する(Dialogflow)

アクションは、呼び出しと検出を定義するアプリへのエントリ ポイントです。 必要があります。アクションは、アクション パッケージと呼ばれる JSON ファイルで宣言します。 後でテストやテストを行う場合にデベロッパー プロジェクトにアップロードする 承認を受けるためにアクション プロジェクトを送信します。アクションパッケージは は、Actions プロジェクトのアクションを定義します。

アクション パッケージでアクションを定義するには、まずアクションを アクションが呼び出されたときに対応するフルフィルメント エンドポイント インテントがトリガーされます。作成できるアクションには、次のタイプがあります。

  • デフォルトのアクション: すべての Actions プロジェクトには、ウェルカム インテントを実装する必要があります。 ユーザーが会話を始めるための入り口として利用できます。ウェルカム インテントは、 ユーザーがアクションの名前を発話して明示的に呼び出すとトリガーされます( (例: 「OK Google, ExampleAction と話して」)。このウェルカム インテントは、 actions.intent.MAIN インテント名。
  • ディープリンクのための追加のアクション: 以下の場所で追加のアクションを作成できます。 自分で定義したインテントを含むアクション パッケージ。これによりユーザーは インテントと一緒にアクション名を指定することで特定の機能を呼び出す (例: 「OK Google, ExampleAction に話しかけて靴を探して」)。

詳細については、インテントと呼び出しをご覧ください。 これらの呼び出しモデルが機能します

デフォルトのアクションを定義する

すべてのアクション パッケージには、特定のアクションのアクションを actions.intent.MAIN インテント。このインテントはユーザーが 名前によるアクション(例: 「OK Google, ExampleAction と話して」)。

action.json という名前のボイラープレート アクション パッケージ ファイルを生成するには、 手順は次のとおりです。

  1. gactions CLI をダウンロードします。
  2. アクション プロジェクトのソースファイル用のローカル ディレクトリを作成します。
  3. ターミナルで次のコマンドを実行します。

    $ cd PROJECT_DIRECTORY
    $ gactions init

アクション パッケージ ファイルが生成されたら、プレースホルダのコンテンツを 使用できます。ExampleAction に変更を加えた action.json の例を次に示します。

{
  "actions": [
    {
      "description": "Default welcome intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to ExampleAction"
          ]
        }
      }
    }
  ],
  "conversations": {
    "ExampleAction": {
      "name": "ExampleAction",
      "url": "https://www.example.com/ExampleAction"
    }
  },
  "locale": "en"
}

追加のアクションを定義する

エントリ ポイントとなる追加のアクションを指定できます。これによりユーザーは ユーザーが何を行うかを詳しく指定できるようにすることで、ユーザーの意図を明確にします。 (例: 「OK Google, ExampleAction に話しかけて 靴」など)。

追加のアクションを定義するには:

  1. actions 配列で、すべてのエントリ ポイントにアクションを指定します。

    たとえば、次のコードは、追加の「buy」という以下を定義するアクション: <ph type="x-smartling-placeholder">
      </ph>
    • com.example.ExampleAction.BUY というインテント名
    • parameters: このインテントがトリガーされたときにユーザー入力から解析します。 これは、アクション フレーズの特定のデータが必要なときに ユーザーがアクションを呼び出します。
    • queryPatterns: インテントをトリガーするために必要なユーザーの呼びかけを定義します。 クエリパターンには Schema.org タイプを含めることができる 引数を定義します。
    {
      "description": "Direct access",
      "name": "BUY",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "com.example.ExampleAction.BUY",
        "parameters": [
          {
            "name": "color",
            "type": "org.schema.type.Color"
          }
        ],
        "trigger": {
          "queryPatterns": [
            "find some $org.schema.type.Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
      }
    }
          
  2. conversationName を指定して、このインテントのフルフィルメントを指定します。 これは conversations オブジェクトのアイテムに対応します。

    {
      "conversations": {
        "ExampleAction": {
          "name": "ExampleAction",
          "url": "https://www.example.com/ExampleAction"
        }
      }
    }
        

これがアクション パッケージ全体の例です。

{
  "actions": [
    {
      "description": "Default welcome intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to ExampleAction"
          ]
        }
      }
    },
    {
      "description": "Direct access",
      "name": "BUY",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "com.example.ExampleAction.BUY",
        "parameters": [
          {
            "name": "color",
            "type": "org.schema.type.Color"
          }
        ],
        "trigger": {
          "queryPatterns": [
            "find some $org.schema.type.Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
      }
    }
  ],
  "conversations": {
    "ExampleAction": {
      "name": "ExampleAction",
      "url": "https://www.example.com/ExampleAction"
    }
  },
  "locale": "en"
}