Вызвать функцию Cloud Functions

Вы можете интегрировать форму с функцией Cloud Functions. Например, вы можете собирать данные пользователей и передавать их на сайт или в базу данных, чтобы таким образом регистрировать клиентов по форме.

Внимание

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

Шаг 1. Создать сервисный аккаунт

  1. Перейдите в консоль Yandex Cloud.
  2. На панели слева выберите каталог, в котором хотите создать функцию.
  3. В правом верхнем углу нажмите Создать сервисный аккаунт.
  4. В окне создания сервисного аккаунта заполните поля:
    1. Имя может содержать только строчные буквы латинского алфавита, цифры и дефисы.
    2. Описание может содержать любые символы.
    3. В поле Роли в каталоге добавьте роль functions.functionInvoker.
  5. Нажмите Создать.

Если к вашему аккаунту Yandex Cloud не привязан платежный аккаунт, откроется окно создания платежного аккаунта. Заполните его поля и создайте аккаунт. Подробнее см. в разделе {#T}

Шаг 2. Создать ключ сервисного аккаунта

  1. В консоли на панели слева выберите каталог, в котором находится нужный сервисный аккаунт.
  2. Перейдите на вкладку Сервисные аккаунты.
  3. Выберите нужный аккаунт.
  4. На странице аккаунта на верхней панели нажмите Создать новый ключСоздать API-ключ.
  5. Напишите краткое описание ключа.
  6. Нажмите Создать.
  7. Откроется окно с идентификатором ключа и секретным ключом. Сохраните их в безопасном месте. После закрытия окна доступ к ним получить нельзя.

Шаг 3. Включить запуск облачных функций

  1. В Yandex Forms откройте форму, для которой хотите настроить интеграцию с облачной функцией.
  2. Перейдите на вкладку Настройки и на панели слева выберите Дополнительно.
  3. В разделе Ключ для запуска облачных функций заполните поля Идентификатор ключа и Секретный ключ. Вставьте в них значения, которые скопировали при создании ключа сервисного аккаунта.
  4. Нажмите Сохранить.

Шаг 4. Создать облачную функцию

  1. Перейдите обратно в консоль Yandex Cloud.
  2. На панели слева нажмите и выберите сервис Cloud Functions.
  3. В правом верхнем углу нажмите Создать функцию.
  4. На странице создания функции заполните поля:
    1. Имя может содержать только строчные буквы латинского алфавита, цифры и дефисы.
    2. Описание может содержать любые символы.
  5. Выберите язык программирования, на котором будет написана функция.
  6. Выберите вкладку с источником, из которого будет добавлена функция:
    • Редактор кода позволяет написать код функции прямо в нем.
    • Object Storage позволяет выбрать бакет и объект с нужной функцией.
    • ZIP-архив позволяет прикрепить файл в формате .zip с нужной функцией.
  7. При желании настройте параметры функции и логирование, но это необязательно. Все необходимые для создания функции параметры уже выставлены.
  8. Нажмите Сохранить изменения.
  9. На странице функции скопируйте значение ее поля Идентификатор.

Подробнее о создании облачных функций см. в документации облачных функций.

Шаг 5. Настроить интеграцию

  1. Перейдите обратно в форму и выберите вкладку Интеграции.
  2. Выберите группу действий, в которой хотите настроить создание задачи, и внизу группы нажмите кнопку Cloud Functions.
  3. В поле Код функции вставьте идентификатор функции, который скопировали в предыдущем шаге.
  4. При желании в разделе Параметры выберите дополнительные параметры, которые хотите передать в функцию.
  5. Нажмите Сохранить.

Ответы на форму будут переданы в формате JSON. Вот его структура:

{
	"id":<идентификатор_ответа_на_форму>,
	"uid":"<идентификатор_пользователя>",
	"data":{
		"<идентификатор_вопроса_с_указанием_типа>":{
			"value":<ответ_на_вопрос>,
			"question":{
				"id":<идентификатор_вопроса>,
				"slug":"<идентификатор_вопроса_с_указанием_типа>",
				"options":{
					<параметры_вопроса>
				},
				"answer_type":{
					"id":<идентификатор_типа_вопроса>,"slug":"<тип_вопроса>"
				}
			}		
		}
	},
"survey":{
	"id":"<идентификатор_формы>"
	},
"created":"<дата_ответа>",
"cloud_uid":"<идентификатор_пользователя>"
}

Отправленный запрос и результат работы функции можно посмотреть на странице выполненных интеграций.