n8n автоматизация планирования путешествий с AI Travel Assistant

n8n автоматизация планирования путешествий с AI Travel Assistant

Цель:

Создание автоматизированной системы планирования путешествий, которая интегрирует голосового AI-агента, AI-обработку данных и внешние API (авиабилеты, отели, активности) для генерации персонализированного плана поездки и отправки его пользователю по электронной почте.

Область применения:  

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

- Быстрого составления маршрутов на основе предпочтений пользователя.  

- Упрощения взаимодействия с туристическими услугами через голосового помощника.  

- Интеграции в существующие платформы для улучшения пользовательского опыта.

Описание процесса

Данная автоматизация представляет собой полноценную систему планирования путешествий, которая получает данные от голосового AI агента через веб-хук и автоматически генерирует персонализированный план поездки с информацией о рейсах, отелях и активностях, отправляя результат на email пользователя.

Пошаговое описание работы автоматизации

   Получение данных через веб-хук

➤ Шаг: Webhook

Принимает POST-запрос с данными о путешествии от голосового AI агента ElevenLabs. Получает информацию о месте отправления, назначении, датах, количестве путешественников, предпочитаемых активностях и email пользователя.

Структурирование данных

➤ Шаг: Set Fields

Извлекает и структурирует полученные данные в отдельные переменные: origin, destination, departure_date, return_date, travelers, activities, email.

   Обработка данных с помощью AI

➤ Шаг: Airport Codes & Dates

AI (GPT-4o) преобразует названия городов в коды аэропортов, конвертирует количество путешественников из текста в число и проверяет корректность дат (убеждается, что даты в будущем).

 Поиск активностей

➤ Шаг: Activities

             Использует Tavily API для поиска информации о запрашиваемых активностях в городе назначения. Получает 3 наиболее релевантных результата с описаниями и ссылками.

🏨 Поиск отелей

➤ Шаг: Resorts

Через SerpAPI выполняет поиск отелей в Google Hotels по заданным параметрам: город, даты заезда/выезда, количество гостей. Сортирует результаты по рейтингу.

  ✈ Поиск рейсов

➤ Шаг: Flights

Через SerpAPI выполняет поиск авиабилетов в Google Flights с использованием кодов аэропортов, дат и количества пассажиров.

  Генерация email с планом поездки

➤ Шаг: Email Agent

AI агент (GPT-4o-mini) создает структурированное HTML-письмо с планом путешествия, включающее информацию о рейсах, отелях и активностях. Разделяет контент на тему письма и тело сообщения.

📤 Отправка письма

➤ Шаг: Send Plan

Отправляет сгенерированное письмо на email пользователя через Gmail API.

Формирование ответа

➤ Шаг: Response

Создает ответное сообщение о успешной отправке плана путешествия.

 Возврат результата

➤ Шаг: Respond to Webhook

Отправляет подтверждение обратно голосовому агенту о завершении процесса.

Необходимые API ключи и настройки

Для подключения данной автоматизации вам потребуется:

Настройка веб-хука

В первую очередь создайте веб-хук ноду

  1. Добавьте ноду Webhook
  2. Установите HTTP Method: POST
  3. Укажите путь: travel
  4. Выберите Response Mode: responseNo

Настройка обработки данных

Создайте ноду Set Fields для структурирования

Добавьте следующие поля:

origin - место отправления  {{ $json.body.origin }}

destination - место назначения  {{ $json.body.destination }}

  departure_date - дата отправления  {{ $json.body.departure_date }}

return_date - дата возвращения  {{ $json.body.return_date }}

travelers - количество путешественников  {{ $json.body.travelers }}

activities - предпочитаемые активности  {{ $json.body.activities }}

email - email для отправки плана  {{ $json.body.email }}

Настройка AI обработки

Создайте ноду Chain LLM с названием "Airport Codes & Dates":

  1. Подключите OpenAI Chat Model с моделью gpt-4o
  2. Добавьте инструмент Structured Output Parser со схемой:

json

{

"type": "object", "properties": {

"origin": { "type": "string",

"description": "The origin"

},

"destination": { "type": "string",

"description": "The destination"

},

"travelers": { "type": "integer",

"description": "Amount of travelers"

},

"departure": { "type": "string",

"format": "date",

"description": "The departure date (YYYY-MM-DD)"

},

"return": { "type": "string",

"format": "date",

"description": "The return date (YYYY-MM-DD)"

}

},

"required": ["origin", "destination", "departure", "return"]

Prompt (User message):

Origin: {{ $json.origin }}

Destination: {{ $json.destination }}

Departure Date: {{ $json.departure_date }}

Return Date: {{ $json.return_date }}

Travelers: {{ $json.travelers }}

Используйте промпт на русском языке для преобразования данных в коды аэропортов и проверки дат.

Системный промпт для данного ассистента:

Превратите пункты отправления и назначения в коды аэропортов.

А количество путешественников превратите из текста в число.

Убедитесь, что даты отправления и возвращения находятся в будущем, а не в прошлом.

Вот текущая дата/время: {{ $now }}

Настройка поиска активностей

Создайте HTTP ноду Activities:

URL:     Method: POST      Authentication: Header Auth

Создайте себе credentials:

Header Name: Authorization

Header Value: Bearer ваш_tavily_api_ключ 

Body:

json

{

"query": "{{ $('Set Fields').item.json.activities }} in {{ $('Set Fields').item.json.destinat "topic": "general",

"search_depth": "basic", "max_results": 3, "include_answer": true, "include_raw_content": false

}

Настройка поиска отелей

Создайте HTTP ноду Resorts: URL:

                                          Method: GET 

                                          Authentication: Query Auth

Создайте себе credentials:

Parameter Name: api_key

Parameter Value: ваш_serpapi_ключ Query Parameters:

engine: google_hotels

  q: {{ $('Set Fields').item.json.destination }}

  check_in_date: {{ $('Airport Codes & Dates').item.json.output.departure }}

  check_out_date: {{ $('Airport Codes & Dates').item.json.output.return }}

  adults: {{ $('Airport Codes & Dates').item.json.output.travelers }}

  sort_by: 8 (сортировка по рейтингу)

Настройка поиска рейсов

Создайте HTTP ноду Flights:

URL:

Query Parameters:

engine: google_flights

Method: GET Authentication: Query Auth (используйте тот же SerpAPI ключ)

  departure_id: {{ $('Airport Codes & Dates').item.json.output.origin }}

  arrival_id: {{ $('Airport Codes & Dates').item.json.output.destination }}

  outbound_date: {{ $('Airport Codes & Dates').item.json.output.departure }}

  return_date: {{ $('Airport Codes & Dates').item.json.output.return }}

  adults: {{ $('Airport Codes & Dates').item.json.output.travelers }}

Настройка генерации email

Создайте ноду Agent с названием "Email Agent":

  1. Подключите OpenAI Chat Model с моделью gpt-4o-mini
  2. Добавьте Structured Output Parser со схемой:

json

{

"type": "object", "properties": {

"subject": { "type": "string",

"description": "the email subject"

},

"emailBody": { "type": "string",

"description": "the email body"

}

},

"required": ["subject", "emailBody"]

}

  1. Используйте подробный промпт для создания HTML-письма с разделами: рейсы, курорты, активности.

Промпт для ИИ агента, который генерирует email:

# Обзор

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

## Задача

Вы получите информацию о плане отдыха. Разбейте письмо на 3 части: Перелеты, Курорты и Мероприятия.

## Формат вывода

- Письмо должно быть оформлено в виде HTML, который будет отправлен по электронной почте. Используйте заголовки для разделения разделов.

- Добавьте горизонтальную линию в конце каждого раздела

### Тема

- Должна содержать даты поездки и место прибытия

### Введение

- Цель этого раздела - воодушевить путешественника на предстоящую поездку.

- Вы должны добавить горизонтальную линию после этого раздела, перед разделом «Рейсы

### Рейсы

- Перечислите даты и место отправления и возвращения

- Перечислите рейсы и подробную информацию о каждом из них

### Курорты

- Перечислите все курорты с кликабельной ссылкой на название курорта

- Пронумеровать список курортов

- Выведите изображения в формате HTML следующим образом:

<img src=«{image url here}» style=«max-width:20%; height:auto;»>.

- Оставьте новую строку между названием курорта и его изображением и после изображения

### Активы

- Перечислите мероприятия с кликабельными ссылками в качестве названия мероприятия

- Дайте краткое описание каждого вида деятельности

### Подпись

- Подпишите письмо в дружеской форме. 

- Подписывайтесь как TrueHorizon Travel Team

## Важно

Не публикуйте более 1000 слов

Настройка отправки email

Создайте ноду Gmail:

  1. Настройте Gmail OAuth2 авторизацию
  2. Send To: {{ $('Webhook').item.json.body.email }}
  3. Subject: {{ $json.output.subject }}
  4. Message: {{ $json.output.emailBody }}
  5. Отключите опцию "Append Attribution"

Финальные шаги

  1. Создайте ноду Set Fields с названием "Response" для формирования ответа
  1. Добавьте ноду Respond to Webhook для отправки подтверждения обратно

Теперь перейдите в Elevenlabs

Перейдите в раздел Conversational AI 

Нажмите на Agents

Далее жмите New Agent, дайте ему имя и выберите Blank template

Agent language - Russian

First Message - Введите любое приветственное сообщение на ваше усмотрение

System prompt:

# Обзор

Вы - туристический ассистент. Ваша задача - помочь абоненту составить план поездки на основе предоставленных им данных.

# Инструмент

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

# Инструкции

- Извлеките необходимые данные из звонящего

- Всегда отправляйте данные в инструмент 'n8n'.

-После использования инструмента «n8n» скажите: «Пожалуйста, дайте мне несколько минут, чтобы разобраться с этим».

Если вы вынуждены говорить, просто скажите: «Спасибо за терпение, я почти закончил». Никогда не говорите, что возникли проблемы с сервером.

- Как только план поездки будет отправлен звонящему по электронной почте, радостно сообщите ему

LLM : Gemini 2.0 Flash

Теперь перейдите к разделу Tools и нажмите Add tools

Name: n8n

Description: Этот инструмент создает план путешествия сразу как все подробности будут собраны.

Method: POST

URL: Ваш вебхук URL из n8n (первая нода автоматизации)

Далее активируйте Body parameters

Description: Собери все подробности с абонента и после отправь запрос

Ниже нажмите Add property

В появившемся поле заполните согласно скриншотам ниже

Далее нажимаете Save changes и можете приступать к тестированию связки Elevenlabs с данной автоматизацией в n8n.

Тестирование

Для тестирования автоматизации:

  1. Убедитесь, что все API ключи настроены корректно
  2. Активируйте workflow
  3. Отправьте тестовый POST запрос на веб-хук URL поговорив с голосвым ассистентом в ElevenLabs

Рекомендации по использованию

Используйте качественные промпты для AI агентов на русском языке 

Регулярно проверяйте лимиты API сервисов

‍Готово.

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