Definir ações (Dialogflow)

As ações são pontos de entrada para o app que definem o modelo de invocação e descoberta dele. Você declara ações em um arquivo JSON conhecido como pacote de ações, que será enviado depois para seu projeto de desenvolvedor quando quiser testar ou enviar o projeto do Actions para aprovação. Um pacote de ações é um arquivo JSON que define as ações no projeto.

Para definir ações no pacote, crie uma intent que defina como a ação será invocada e o endpoint de fulfillment correspondente para quando a intent for acionada. Você pode criar os seguintes tipos de ações:

  • Ação padrão:cada projeto do Actions precisa ter uma intent de boas-vindas que funcione como ponto de entrada para os usuários iniciarem conversas. A intent de boas-vindas é acionada quando os usuários invocam explicitamente uma ação falando o nome dela (por exemplo, "Ok Google, fale com ExampleAction"). Essa intent de boas-vindas é identificada pelo nome da intent actions.intent.MAIN.
  • Outras ações para links diretos:você pode criar outras ações no pacote com intents definidas por você. Isso permite que os usuários invoquem uma funcionalidade específica dizendo o nome de uma ação junto com uma intent (por exemplo: "Ok Google, fale com o ExampleAction para encontrar sapatos").

Consulte Intents e invocação para mais informações sobre como esses modelos de invocação funcionam.

Definir uma ação padrão

Cada pacote de ações precisa ter apenas uma intent que processe a intent actions.intent.MAIN. Essa intent é acionada quando os usuários invocam sua ação pelo nome (por exemplo, "Ok Google, fale com ExampleAction").

Para gerar um arquivo de pacote de ações padrão chamado action.json, siga estas etapas:

  1. Faça o download da CLI gactions.
  2. Crie um diretório local para os arquivos de origem do seu projeto da ação.
  3. Execute estes comandos no terminal:

    $ cd PROJECT_DIRECTORY
    $ gactions init

Depois que o arquivo do pacote de ações for gerado, substitua o conteúdo do marcador pelos seus valores. Confira um exemplo de action.json com mudanças em 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"
}

Definir ações adicionais

Você pode fornecer ações adicionais que servem como pontos de entrada. Isso permite que os usuários desambiguem a intent ao permitir que eles especifiquem mais detalhes sobre o que querem fazer. Por exemplo, "Ok Google, fale com ExampleAction para encontrar alguns sapatos".

Para definir outras ações:

  1. Na matriz actions, especifique uma ação para cada ponto de entrada.

    Por exemplo, o código a seguir mostra uma ação "buy" adicional que define:
    • O nome da intent com.example.ExampleAction.BUY.
    • parameters para analisar a entrada do usuário quando essa intent for acionada. Isso é útil se você precisar de dados específicos da frase quando os usuários invocarem a ação.
    • queryPatterns, que definem o que os usuários precisam dizer para acionar a intent. Os padrões de consulta podem incluir tipos do schema.org que definem parâmetros para análise.
    {
      "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. Especifique o fulfillment dessa intent, especificando um conversationName que corresponda a um item no objeto conversations.

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

Confira um exemplo de um pacote de ações 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"
}