Посетите https://www.mikenikles.com, чтобы увидеть мои последние сообщения в блоге.

17 апреля 2018 года общедоступна версия 2 API Dialogflow. Это ознаменовало завершение фазы бета-тестирования, которая началась еще в ноябре 2017 года.

Наш API V2 теперь служит API по умолчанию для всех новых агентов Dialogflow, и все обновления новых функций будут выпущены только для API V2.

Я помню, как читал вышеизложенное в сообщении в блоге, говоря себе, что нужно обновить своего бота Google Assistant Я должен тебе, чтобы узнать о новом API. В прошлые выходные я сделал именно это, и в этом сообщении в блоге объясняется мой подход.

Целевая аудитория

Основное внимание в этом посте уделяется миграции с существующего проекта Dialogflow, который использует v1 API, на новый API v2.

Если вы новичок в Dialogflow, я рекомендую начать с https://dialogflow.com/docs/getting-started/basics, он содержит необходимые шаги для создания проекта Dialogflow. Вам не нужно читать оставшуюся часть этой статьи, так как v2 теперь является версией API по умолчанию.

API V1

Изначально я начал с проекта Действия в Google, что означает, что структура каталогов моего проекта выглядела так:

.firebaserc
functions
├── index.js
└── package.json

Файл index.js содержал логику выполнения для моего бота, подобную следующей:

// index.js
const App = require("actions-on-google").DialogflowApp;
const welcome = app => {
  app.ask('Welcome! How can I help you today?');
}
exports.iOweYou = functions.https.onRequest((request, response) => {
  const app = new App({ request, response });
  // Create the action map
  let actionMap = new Map();
  actionMap.set('input.welcome', welcome);
  // ... custom actions added here
  app.handleRequest(actionMap);
});

В качестве визуализации настройка API v1 выглядела так:

Руководство по миграции

Если вы находитесь в аналогичной ситуации и хотите перейти на версию 2, я настоятельно рекомендую прочитать официальное руководство по миграции на странице https://dialogflow.com/docs/reference/v1-v2-migration-guide.

У моего бота нет интеграции со Slack, Skype или какой-либо другой интеграцией, которую поддерживает Dialogflow. Все, что мне нужно было перенести, - это конечная точка выполнения. Специально для этого варианта использования есть глава в руководстве по миграции, в которой перечислены необходимые шаги. Если у вашего бота включена интеграция, см. Подробности в официальном руководстве по миграции.

Таким образом, для миграции конечной точки выполнения необходимо создать нового агента, импортировать агент v1 (так что вам не нужно создавать намерения, сущности и т. Д. С нуля), включить v2 на новом агенте, обновить код выполнения, протестировать все, запустить в производство.

В агенте тестирования версии 2 URL-адрес веб-перехватчика выполнения должен указывать на новую конечную точку, которую мы собираемся перейти на версию 2. Откройте Dialogflow, выберите свой тестовый агент v2 и нажмите «Выполнение» в навигации. В поле URL веб-перехватчика добавьте V2 к уже заполненному URL.

К настоящему времени у нас есть агент v2, который мы можем использовать для тестирования, который указывает на конечную точку выполнения v2. Чего не хватает? Фактический v2 конечной точки выполнения. Начнем с диаграммы:

В основном файле index.js экспортируются две функции. Один - это исходный iOweYou, обслуживающий производственный трафик, а другой - это iOweYouV2 версия, которая используется новым агентом тестирования, который мы обновили до Dialogflow API v2.

Чтобы все было организовано, я предлагаю вам извлечь код v1 в отдельный index-v1.js файл и создать index-v2.js файл для нового кода.

Бета-версия библиотеки выполнения диалогового потока

В рамках этой миграции я решил воспользоваться этой новой библиотекой выполнения Node.js. Вы можете узнать больше об этом и увидеть примеры на https://github.com/dialogflow/dialogflow-fulfillment-nodejs.

Хотя бот «I Owe You» в настоящее время поддерживает только Google Assistant, использование библиотеки выполнения - отличная отправная точка для интеграции с 8 чат-платформами и голосовыми платформами в будущем.

API V2

Когда index-v2.js будет готов и хорошо протестирован, пора перенести рабочий трафик на новый API. Учитывая разделение кода выполнения v1 и v2 в отдельных файлах, миграция производственного трафика на v2 проста. На следующей схеме показано, что требуется:

Эти шаги включают:

  1. Убедитесь, что экспортированное свойство iOweYou загружает индексный файл -v2.
  2. В Dialogflow откройте свой рабочий агент и переключитесь на API v2.
  3. На этом этапе производственный бот работает на Dialogflow API v2. Я предлагаю вам запустить его в таком виде на некоторое время, следить за журналами и, если что-то пойдет не так, вернитесь к шагам 1 и 2 выше, чтобы выполнить откат. вернемся к реализации v1.
  4. Если вы удовлетворены и не увидите ошибок или прерываний в разговоре, можно безопасно очистить код и удалить файл index-v1.js. На этом этапе вы также можете удалить свой тестовый агент в Dialogflow.

Просто, не правда ли?

Если у вас есть какие-либо вопросы или предложения, оставьте комментарий, и я свяжусь с вами.