Создание действий для Google Assistant с помощью конструктора действий (уровень 1)

1. Обзор

Платформа разработчика Google Assistant позволяет создавать программное обеспечение для расширения функциональности Google Assistant, виртуального личного помощника, на более чем 1 миллиарде устройств, включая умные колонки, телефоны, автомобили, телевизоры, наушники и многое другое. Пользователи вовлекают Ассистента в разговор, чтобы сделать что-то, например, купить продукты или заказать поездку. Как разработчик, вы можете использовать платформу разработчика Assistant, чтобы легко создавать восхитительные и эффективные диалоги между пользователями и вашей собственной сторонней службой выполнения и управлять ими.

Эта лаборатория кода охватывает концепции начального уровня для разработки с помощью Google Assistant; вам не нужен какой-либо предыдущий опыт работы с платформой, чтобы завершить его. В этой кодовой лаборатории вы создаете простое действие для Google Assistant, которое предсказывает пользователям их судьбу, когда они начинают свое приключение в мифической стране Гриффинберг. В лаборатории кода уровня 2 Actions Builder вы строите это действие дальше, чтобы настроить состояние пользователя на основе его ввода.

Что вы будете строить

В этой кодовой лаборатории вы создаете простое действие со следующими функциями:

  • Отвечает пользователям приветственным сообщением
  • Задает пользователям вопрос. Когда они ответят, ваше действие будет соответствующим образом реагировать на выбор пользователя.
  • Предоставляет чипы предложений, которые пользователи могут щелкнуть, чтобы внести свой вклад
  • Изменяет приветственное сообщение для пользователя в зависимости от того, является ли он вернувшимся пользователем

Когда вы закончите эту лабораторную работу, ваше завершенное действие будет иметь следующий диалоговый поток:

1c1e79902bed7230.png

18ef55647b4cb52c.png

Что вы узнаете

  • Как создать проект в консоли Actions
  • Как отправить подсказку пользователю после того, как он вызовет ваше действие
  • Как обработать ввод пользователя и вернуть ответ
  • Как протестировать действие в симуляторе действий
  • Как реализовать выполнение с помощью редактора Cloud Functions

Что вам понадобится

Следующие инструменты должны быть в вашей среде:

2. Настроить

В следующих разделах описывается, как настроить среду разработки и создать проект Actions.

Проверьте настройки разрешений Google

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

  1. Перейдите на страницу управления активностью .
  2. Если вы еще этого не сделали, войдите в свою учетную запись Google.
  3. Включите следующие разрешения:
  • Действия в Интернете и приложениях
  • В разделе « Активность в Интернете и приложениях » установите флажок « Включить историю Chrome и действия с сайтов, приложений и устройств, использующих сервисы Google» .

Создать проект действий

Ваш проект Actions — это контейнер для вашего Action. Чтобы создать проект Actions для этой лаборатории кода, выполните следующие действия:

  1. Откройте консоль действий .
  2. Щелкните Новый проект .
  3. Введите имя проекта , например, actions-codelab . (Имя предназначено для вашей внутренней ссылки. Позже вы можете установить внешнее имя для своего проекта.)

8cd05a84c1c0a32f.png

  1. Щелкните Создать проект .
  2. В разделе Какое действие вы хотите создать? выберите пользовательскую карточку.
  3. Нажмите «Далее» .
  4. Выберите пустую карточку проекта .
  5. Щелкните Начать сборку .

Связать платежный аккаунт

Чтобы развернуть свое выполнение позже в этой лаборатории кода с помощью Cloud Functions, вы должны связать платежный аккаунт с вашим проектом в Google Cloud.

Если вы еще не связали платежный аккаунт со своим проектом, выполните следующие действия:

  1. Перейдите на страницу выставления счетов Google Cloud Platform .
  2. Нажмите Добавить учетную запись для выставления счетов или Создать учетную запись .
  3. Введите платежную информацию.
  4. Нажмите «Начать бесплатную пробную версию » или «Отправить и разрешить выставление счетов» .
  5. Перейдите на страницу выставления счетов Google Cloud Platform .
  6. Откройте вкладку Мои проекты .
  7. Щелкните три точки в разделе « Действия » рядом с проектом «Действия» для лаборатории кода.
  8. Нажмите Изменить биллинг .
  9. В раскрывающемся меню выберите настроенный вами платежный аккаунт. Щелкните Задать учетную запись .

Чтобы избежать дополнительных расходов, выполните действия, описанные в разделе « Очистка проекта » в конце этой кодовой лаборатории.

3. Начните разговор

Пользователи начинают общение с вашим действием посредством вызова . Например, если у вас есть действие с именем MovieTime , пользователи могут вызывать ваше действие, произнося фразу вроде «Окей, Google, поговори с MovieTime» , где MovieTime — это отображаемое имя. У вашего действия должно быть отображаемое имя, если вы хотите развернуть его в рабочей среде; однако для проверки действия вам не нужно определять отображаемое имя. Вместо этого вы можете использовать фразу «Поговорить с моим тестовым приложением» в симуляторе, чтобы вызвать действие.

Вы должны отредактировать основной вызов , чтобы определить, что произойдет после того, как пользователь вызовет ваше действие.

По умолчанию Actions Builder предоставляет общий запрос при запуске вашего вызова ( «Начните создавать свое действие, определив основной вызов».).

В следующем разделе вы настраиваете приглашение для основного вызова в консоли действий.

Настроить основной вызов

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

  1. Нажмите Основной вызов на панели навигации.

966d037e1d7914df.png

  1. В редакторе кода замените текст в поле speech ( Start building your action... ) следующим приветственным сообщением: A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
  1. Нажмите Сохранить .

Протестируйте основной вызов в симуляторе

Консоль Actions предоставляет веб-инструмент для тестирования Action, который называется симулятором . Интерфейс имитирует аппаратные устройства и их настройки, поэтому вы можете общаться со своим действием, как если бы оно работало на интеллектуальном дисплее, телефоне, динамике или KaiOS.

Когда вы вызываете действие, оно теперь должно отвечать добавленной вами подсказкой ( "A wondrous greeting, adventurer!..." ).

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

  1. На верхней панели навигации щелкните Тест , чтобы перейти к симулятору.
  2. Чтобы вызвать действие в симуляторе, введите Talk to my test app в поле ввода и нажмите Enter .

656f5736af6a5a07.png

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

Просмотр журналов событий

Когда вы находитесь на вкладке « Тест », на панели справа отображаются журналы событий , которые отображают историю разговоров в виде журналов событий. В каждом журнале событий отображаются события, происходящие во время этого поворота разговора.

В настоящее время ваше действие имеет один журнал событий, который показывает как ввод пользователя ( "Talk to my test app" ), так и ответ вашего действия. На следующем снимке экрана показан журнал событий вашего действия:

443129bdcbecc593.png

Если щелкнуть стрелку вниз в журнале событий, можно увидеть события, расположенные в хронологическом порядке, которые произошли на этом этапе разговора:

  • userInput : соответствует вводу пользователя ( "Talk to my test app" ).
  • interactionMatch : Соответствует основному ответу на вызов вашего действия, который был инициирован пользовательским вводом. Если вы развернете эту строку, щелкнув стрелку, вы увидите подсказку, которую вы добавили для основного призыва ( A wondrous greeting, adventurer!... )
  • endConversation : соответствует выбранному переходу в основном намерении Main invocation , который в настоящее время завершает разговор. (Вы узнаете больше о переходах в следующем разделе этой кодовой лаборатории.)

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

fcc389b59af5bef1.png

4. Создайте разговор вашего действия

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

В вашем действии может быть одна или несколько сцен, и вы должны активировать каждую сцену, прежде чем она запустится. (Действие, которое вы создаете в этой кодовой лаборатории, имеет только одну сцену под названием « Start ».) Самый распространенный способ активировать сцену — настроить действие таким образом, чтобы, когда пользователь соответствует намерению пользователя в сцене, это намерение запускало переход к другой. сцену и активирует ее.

Например, представьте себе гипотетическое Действие, которое предоставляет пользователю факты о животных. Когда пользователь вызывает это действие, Main invocation совпадает и запускает переход к сцене с именем Facts . Этот переход активирует сцену « Facts », которая отправляет пользователю следующую подсказку: « Would you like to hear a fact about cats or dogs? В сцене « Facts » есть намерение пользователя под названием Cat , которое содержит обучающие фразы, которые пользователь может произнести, чтобы услышать факт о кошке, например «Я хочу услышать факт о кошке». или "кошка" . Когда пользователь просит услышать факт о Cat , намерение о кошке совпадает и запускает переход к сцене под названием Cat fact . Сцена Cat fact активируется и отправляет пользователю подсказку, включающую факт о кошке.

a78f549c90c3bff6.png

Рис. 1. Типичный ход диалога в Action, созданном с помощью Actions Builder.

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

Переход от основного вызова к сцене

В этом разделе вы создаете новую сцену под названием Start , которая отправляет приглашение пользователю с вопросом, хотят ли они, чтобы ему предсказали судьбу. Вы также добавляете переход от основного вызова к новой Start сцене.

Чтобы создать эту сцену и добавить к ней переход, выполните следующие действия:

  1. Нажмите « Разработать» на панели навигации.
  2. Нажмите Основной вызов на боковой панели навигации.
  3. В разделе « Переход » щелкните раскрывающееся меню и введите « Start » в текстовом поле.

29e12dff950a3bce.png

  1. Щелкните Добавить . Это создает сцену с именем Start и указывает Action перейти к сцене Start после того, как Action доставит приветственное приглашение пользователю.
  2. Нажмите « Сцены» на боковой панели навигации, чтобы отобразить список сцен.
  3. В разделе « Сцены » нажмите « Пуск », чтобы увидеть Start сцену.
  4. Нажмите + в разделе « При входе » Start сцены.
  5. Выберите Отправить запросы .
  6. Замените предложение в speech поле ( Enter the response that users will see or hear... ) вопросом, который нужно задать пользователю: Before you continue on your quest, would you like your fortune told?

3fc95466efd476f.png

  1. Щелкните Сохранить.

Google Assistant предоставляет пользователю эту подсказку ( Before you continue on your quest... ) при входе на Start сцену.

Добавить фишки предложений

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

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

  1. В Start сцене щелкните предложения . Это действие добавляет одну фишку предложения.
  2. В поле title замените « Suggested Response » на 'Yes' .
  3. Используя тот же формат, вручную добавьте чип с предложением под названием 'No' . Ваш код должен выглядеть следующим образом:
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. Нажмите Сохранить .

2d13c2ada791ec26.png

Проверьте свои действия в симуляторе

В этот момент ваше действие должно перейти от основного вызова к Start сцене и спросить пользователя, хочет ли он, чтобы ему предсказали судьбу. Чипы с предложениями также должны появиться на смоделированном дисплее.

Чтобы протестировать действие в симуляторе, выполните следующие действия:

  1. На панели навигации щелкните Тест , чтобы перейти к симулятору.
  2. Чтобы протестировать действие в симуляторе, введите Talk to my test app в поле ввода и нажмите Enter . Ваше действие должно ответить Main invocation и добавленной подсказкой Start сцены: "Before you continue on your quest, would you like your fortune told?" .

На следующем снимке экрана показано это взаимодействие:

3c2013ebb2da886a.png

  1. Щелкните фишку предложения « Yes или « No », чтобы ответить на приглашение. (Вы также можете сказать «Да» или «Нет» или ввести « Yes » или « No » в поле ввода .)

Когда вы отвечаете на приглашение, ваше действие отвечает сообщением о том, что оно не может понять ваш ввод: «Извините, я не уловил этого. Можете ли вы попробовать еще раз?» Поскольку вы еще не настроили действие, чтобы оно понимало и отвечало на ввод «Да» или «Нет» , ваше действие сопоставляет ввод с намерением NO_MATCH .

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

Добавьте намерения « yes » и « no »

Теперь, когда пользователи могут отвечать на вопрос, заданный вашим действием, вы можете настроить свое действие, чтобы понимать ответы пользователей ( «Да» или «Нет» ). В следующих разделах вы создадите намерения пользователя, которые совпадают, когда пользователь говорит «Да» или «Нет» , и добавите эти намерения в Start сцену.

Создайте намерение « yes »

Чтобы создать намерение « yes », выполните следующие действия:

  1. Нажмите « Разработать» на панели навигации.
  2. Нажмите Пользовательские намерения на панели навигации, чтобы открыть список намерений.
  3. Нажмите + (плюс) в конце списка намерений.
  4. Назовите новое намерение yes и нажмите Enter .
  5. Щелкните намерение « yes », чтобы открыть страницу намерения « yes ».
  6. В разделе « Добавить тренировочные фразы » щелкните текстовое поле « Введите фразу » и введите следующие фразы:
  • Yes
  • Y
  • I would
  • Tell me

98440276cb9e7de8.png

  1. Нажмите Сохранить .

Добавить намерение « yes » в Start сцену

Теперь действие может понять, когда пользователь выражает намерение «да» . Вы можете добавить намерение пользователя « yes » в сцену « Start », потому что пользователь отвечает на приглашение « Start » (« Прежде чем продолжить свой квест, хотите ли вы, чтобы вам предсказали судьбу?» ).

Чтобы добавить это намерение пользователя в Start сцену, выполните следующие действия:

  1. Нажмите « Начать сцену» на панели навигации.
  2. Нажмите + (знак плюса) в Start сцене рядом с Обработкой намерений пользователя.
  3. Выберите « Да » в раскрывающемся меню «Намерение».

681928e3d71abdbf.png

  1. Нажмите « Отправить подсказки» и обновите поле speech следующим текстом: « Your future depends on the aid you choose to use for your quest. Choose wisely! Farewell, stranger.

Код в вашем редакторе должен выглядеть следующим образом:

candidates:
  - first_simple:
      variants:
        - speech: >-
            Your future depends on the aid you choose to use for your quest. Choose
            wisely! Farewell, stranger.
  1. В разделе « Переход » щелкните раскрывающееся меню и выберите « Завершить разговор » .
  2. Нажмите Сохранить .

Тест yes намерение в симуляторе

На этом этапе ваше действие понимает, когда пользователь хочет услышать свою судьбу, и возвращает соответствующий ответ.

Чтобы проверить это намерение в симуляторе, выполните следующие действия.

  1. На панели навигации нажмите « Тест» .
  2. Чтобы протестировать действие в симуляторе, введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите Yes в поле ввода и нажмите Enter . Либо щелкните фишку предложения « Да ».

f131998710d8ffd8.png

Ваше действие отвечает пользователю и сообщает ему, что его судьба зависит от помощи, которую он выберет. Затем ваше действие завершает сеанс, поскольку вы выбрали переход « End conversation » для намерения « yes ».

no создавать намерения

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

  1. Нажмите « Разработать» на панели навигации.
  2. Нажмите Пользовательские намерения на панели навигации, чтобы открыть список намерений.
  3. Нажмите + (плюс) в конце списка намерений.
  4. Назовите новое намерение no и нажмите Enter .
  5. Нажмите « Нет », чтобы открыть страницу намерений ** no **.
  6. В разделе « Добавить тренировочные фразы » щелкните текстовое поле « Введите фразу » и введите следующие фразы:
  • No
  • N
  • I don't want
  • nope

2e7b8fd57eac94c5.png

  1. Нажмите Сохранить .

no добавлять намерение в Start сцену

Теперь действие может понять, когда пользователь говорит «нет» или что-то похожее на «нет» , например «нет» . Вам нужно добавить no намерений пользователя в сцену « Start », потому что пользователь отвечает на приглашение « Start » (« Прежде чем вы продолжите свой квест, хотите ли вы, чтобы вам предсказали судьбу?» ).

Чтобы добавить это намерение для Start сцены, выполните следующие действия:

  1. Нажмите « Начать сцену» на панели навигации.
  2. Щелкните значок + (знак плюса) в сцене « Start » рядом с « Обработка намерений пользователя» .
  3. В разделе « Намерение » выберите « Нет » в раскрывающемся меню.

4aa558abdecb3121.png

  1. Щелкните Отправить запросы .
  2. Обновите speech поле следующим текстом: I understand, stranger. Best of luck on your quest! Farewell.

Код в вашем редакторе должен выглядеть следующим образом:

 candidates:
  - first_simple:
      variants:
        - speech: >-
             I understand, stranger. Best of luck on your quest! Farewell.
  1. В разделе « Переход » выберите « Завершить разговор » в раскрывающемся меню.
  2. Нажмите Сохранить .

Проверьте no намерений в симуляторе

На этом этапе ваше действие понимает, когда пользователь не хочет слышать свою судьбу, и возвращает соответствующий ответ.

Чтобы проверить это намерение в симуляторе, выполните следующие действия.

  1. На панели навигации нажмите « Тест» .
  2. Введите Talk to my test app в поле ввода и нажмите Enter .
  3. Введите No в поле ввода и нажмите Enter . Либо нажмите фишку « Нет предложений».

c0c8b04066577eb2.png

Вместо того, чтобы дарить пользователю удачу, ваше действие желает ему удачи в его путешествии. Затем ваше действие завершает сеанс, поскольку вы выбрали переход « End conversation » для no намерения.

5. Реализовать выполнение

В настоящее время ответы вашего действия статичны; когда активируется сцена, содержащая подсказку, ваше действие каждый раз отправляет одну и ту же подсказку. В этом разделе вы реализуете выполнение , которое содержит логику для создания динамического разговорного ответа.

Ваше выполнение определяет, является ли пользователь вернувшимся пользователем или новым пользователем, и изменяет приветственное сообщение Действия для вернувшихся пользователей. Приветственное сообщение сокращается для вернувшихся пользователей и подтверждает возвращение пользователя: « Чудесное приветствие, авантюрист! Добро пожаловать обратно в мифическую страну Гриффинберг!»

Для этой лаборатории кода используйте редактор Cloud Functions в консоли Actions, чтобы отредактировать и развернуть свой код выполнения.

Ваше действие может запускать веб -перехватчики, которые уведомляют вас о выполнении события, которое происходит во время вызова или определенных частей выполнения сцены. Когда срабатывает веб-перехватчик, ваше действие отправляет запрос с полезной нагрузкой JSON на ваше выполнение вместе с именем обработчика, который будет использоваться для обработки события. Этот обработчик выполняет некоторую логику и возвращает соответствующий ответ JSON.

Создайте свое удовлетворение

Теперь вы можете изменить свое выполнение во встроенном редакторе, чтобы генерировать разные подсказки для возвращающихся пользователей и новых пользователей, когда они вызывают ваше действие.

Чтобы добавить эту логику к выполнению, выполните следующие действия:

  1. Нажмите « Разработать» на панели навигации.
  2. Щелкните вкладку Веб -перехватчик на панели навигации.
  3. Установите флажок « Встроенные облачные функции ».
  4. Щелкните Подтвердить . Шаблонный код автоматически добавляется в файлы index.js и package.json .

d4702f1de6404285.png

  1. Замените содержимое index.js следующим кодом:

index.js

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation({debug: true});

app.handle('greeting', conv => {
 let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
 if (!conv.user.lastSeenTime) {
   message = 'Welcome to the mythical land of  Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
 }
 conv.add(message);
});


exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
  1. Нажмите Сохранить выполнение .
  2. Щелкните Развернуть выполнение .

Подождите пару минут, пока облачные функции подготовят и развернут ваше выполнение. Вы должны увидеть сообщение « Идет развертывание облачной функции… » над редактором кода. После успешного развертывания кода сообщение обновляется до даты развертывания вашей облачной функции .

Разобраться в коде

Ваше выполнение, в котором используется библиотека Actions on Google Fulfillment для Node.js , отвечает на HTTP-запросы от Google Assistant.

В предыдущем фрагменте кода вы определяете обработчик greeting , который проверяет, посещал ли пользователь ранее действие, проверяя свойство lastSeenTime . Если lastSeenTime не определен, пользователь является новым, и обработчик greeting предоставляет приветствие нового пользователя.

Обновите основной вызов, чтобы активировать веб-перехватчик

Теперь, когда вы определили функцию greeting , вы можете настроить обработчик события greeting в своем основном намерении вызова, чтобы ваше действие знало, что нужно вызывать эту функцию, когда пользователь вызывает ваше действие.

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

  1. Нажмите Основной вызов на панели навигации.
  2. Очистите запрос на отправку .
  3. Установите флажок Вызов вашего веб -перехватчика.
  4. Добавьте greeting в текстовое поле.

a803afe4f7375a97.png

  1. Нажмите Сохранить .

Протестируйте обновленный основной вызов в симуляторе

Чтобы протестировать действие в симуляторе, выполните следующие действия:

  1. На панели навигации щелкните Тест , чтобы перейти к симулятору.
  2. Введите Talk to my test app в поле ввода и нажмите Enter .

Поскольку вы тестировали действие ранее в этой лаборатории кода, вы не являетесь новым пользователем, поэтому вы получаете следующее сокращенное приветствие: « Чудесное приветствие, авантюрист! Добро пожаловать обратно в мифическую страну Гриффинберг!...»

Очистите свой проект [рекомендуется]

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

  1. Чтобы удалить облачный проект и ресурсы, выполните шаги, перечисленные в разделе « Завершение работы (удаление) проектов ».
  1. Необязательно: чтобы немедленно удалить свой проект из консоли действий, выполните шаги, перечисленные в разделе « Удаление проекта ». Если вы не выполните этот шаг, ваш проект будет автоматически удален примерно через 30 дней.

6. Поздравляем!

Вы знаете основы создания действий для Google Assistant.

Что вы покрыли

  • Как настроить проект Actions с помощью консоли Actions
  • Как добавить подсказку к основному вызову, чтобы пользователи могли начать разговор с вашим действием
  • Как создать диалоговый интерфейс со сценами, намерениями, переходами, фишками предложений и выполнением
  • Как протестировать действие с помощью симулятора действий

Учить больше

Изучите следующие ресурсы, чтобы узнать больше о создании действий для Google Assistant:

Опрос обратной связи

Прежде чем идти, пожалуйста, заполните краткий опрос о вашем опыте.