Определить действия (диалоговый поток)

Действия — это точки входа в ваше приложение, которые определяют модель вызова и обнаружения для вашего приложения. Вы объявляете действия в файле JSON, известном как пакет действий , который вы позже загружаете в свой проект разработчика, когда хотите протестировать или отправить свой проект действий на утверждение. Пакет действий — это файл JSON, который определяет действия в вашем проекте действий.

Чтобы определить действия в пакете действий, вы создаете намерение, которое определяет, как вызывается действие, и соответствующую конечную точку выполнения, когда намерение срабатывает. Вы можете создавать следующие типы действий:

  • Действие по умолчанию: каждый проект Actions должен иметь приветственное намерение, которое служит отправной точкой для начала общения пользователей. Приветственное намерение срабатывает, когда пользователи явно вызывают действие, произнося его имя (например, «Эй, Google, поговори с exampleAction» ). Это приветственное намерение идентифицируется именем намерения actions.intent.MAIN .
  • Дополнительные действия для глубоких ссылок: вы можете создать дополнительные действия в своем пакете действий с намерениями, которые вы определяете самостоятельно. Это позволяет пользователям вызывать определенные функции, произнося имя действия вместе с намерением (например: «Эй, Google, поговори с exampleAction, чтобы найти обувь» ).

Дополнительные сведения о том, как работают эти модели вызова, см. в разделе «Намерения и вызов».

Определить действие по умолчанию

Каждый пакет действий должен иметь одно и только одно намерение, которое обрабатывает намерение actions.intent.MAIN . Это намерение срабатывает, когда пользователи вызывают ваше действие по имени (например, «Эй, Google, поговори с exampleAction» ).

Чтобы создать шаблонный файл пакета действий с именем action.json , выполните следующие действия:

  1. Загрузите CLI gactions .
  2. Создайте локальный каталог для исходных файлов вашего проекта Action.
  3. Выполните в терминале следующие команды:

    $ cd PROJECT_DIRECTORY
    $ gactions init

После создания файла пакета действий замените содержимое заполнителя своими значениями. Вот пример action.json с изменениями для 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"
}

Определить дополнительные действия

Вы можете предоставить дополнительные Действия, которые будут служить точками входа. Это позволяет пользователям устранить неоднозначность своих намерений, позволяя им указать более подробную информацию о том, что они хотят сделать (например, «Эй, Google, поговори с exampleAction, чтобы найти мне туфли». ).

Чтобы определить дополнительные действия:

  1. В массиве actions укажите действие для каждой точки входа.

    Например, следующий код показывает дополнительное действие «купить», которое определяет:
    • Имя намерения 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"
}