Definir acciones (Dialogflow)

Las acciones son puntos de entrada a tu app que definen el modelo de invocación y descubrimiento para tu app. Debes declarar acciones en un archivo JSON conocido como el paquete de acciones, que luego subirás a tu proyecto de desarrollador cuando quieras probar o enviar tu proyecto de Acciones para su aprobación. Un paquete de acciones es un archivo JSON que define las acciones en tu proyecto de acciones.

Para definir acciones en tu paquete de acciones, debes crear un intent que defina cómo se invoca la acción y el extremo de entrega correspondiente para cuando se activa el intent. Puedes crear los siguientes tipos de acciones:

  • Acción predeterminada: Todos los proyectos de acciones deben tener un intent de bienvenida que actúe como punto de entrada para que los usuarios inicien conversaciones. El intent de bienvenida se activa cuando los usuarios invocan explícitamente una acción pronunciando su nombre (por ejemplo, "Hey Google, habla con AcciónDeEjemplo"). Este intent de bienvenida se identifica con el nombre de intent actions.intent.MAIN.
  • Acciones adicionales para la vinculación directa: Puedes crear acciones adicionales en tu paquete de acciones con intents que tú definas. Esto permite que los usuarios invoquen una funcionalidad específica diciendo el nombre de una acción junto con un intent (por ejemplo: "Hey Google, habla con Acción de Ejemplo para buscar unos zapatos").

Consulta Intents e invocación para obtener más información sobre cómo funcionan estos modelos de invocación.

Cómo definir una acción predeterminada

Cada paquete de Acción debe tener un único intent que controle el intent actions.intent.MAIN. Este intent se activa cuando los usuarios invocan tu acción por nombre (por ejemplo, "Hey Google, habla con Acción de Ejemplo").

Para generar un archivo de paquete de acción estándar llamado action.json, sigue estos pasos:

  1. Descarga la CLI de gactions.
  2. Crea un directorio local para los archivos de origen de tu proyecto de Action.
  3. Ejecuta los siguientes comandos en la terminal:

    $ cd PROJECT_DIRECTORY
    $ gactions init

Una vez que se genere el archivo del paquete de acciones, reemplaza el contenido del marcador de posición con tus valores. Este es un ejemplo de action.json con cambios para ExampleAction:

{
  "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"
}

Cómo definir acciones adicionales

Puedes proporcionar acciones adicionales que actúen como puntos de entrada. Esto permite a los usuarios desambiguar su intención, ya que les permite especificar más detalles sobre lo que quieren hacer (por ejemplo, "Hey Google, habla con Acción de Ejemplo para encontrarme algunos zapatos").

Para definir acciones adicionales, haz lo siguiente:

  1. En el array actions, especifica una acción para cada punto de entrada.

    Por ejemplo, el siguiente código muestra una acción "comprar" adicional que define lo siguiente:
    • Un nombre de intent de com.example.ExampleAction.BUY
    • parameters para analizar la entrada del usuario cuando se activa este intent Esto es útil si necesitas datos específicos de la frase de acción cuando los usuarios invocan la acción.
    • queryPatterns, que define lo que los usuarios deben decir para activar el intent Los patrones de consulta pueden incluir tipos de Schema.org que definen parámetros para analizar.
    {
      "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. A fin de especificar la entrega de este intent, indica una conversationName que corresponda a un elemento en el objeto conversations.

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

El siguiente es un ejemplo de un paquete de acciones completo:

{
  "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"
}