№5. Как создать Telegram-бот с голосом, памятью и системным промптом

1. Введение

В этом гайде мы выведем агента в Telegram — создадим бота, который принимает и текстовые, и голосовые сообщения, транскрибирует голос через Whisper, помнит контекст разговора и отвечает строго в рамках заданной роли.

 

Что найдёте в этой инструкции:

  • Как создать Telegram-бота через BotFather (новый способ через мини-апп)
  • Как подключить Telegram Trigger в Нейро42
  • Как настроить Switch с тремя выходами: Text / Audio / Unsupported
  • Как получить аудиофайл и транскрибировать его через OpenAI Whisper
  • Как настроить системный промпт — роль, стиль и границы агента
  • Как привязать Simple Memory к chat_id каждого пользователя
  • Как отправить ответ обратно в Telegram и проверить всё в деле

 

💡 Совет:  Этот гайд рассчитан на тех, кто прошёл Гайды 1–4. У вас уже должен быть рабочий AI Agent — здесь мы добавляем к нему Telegram-оболочку.

 

2. Ключевые понятия

Термин Что это
BotFather Официальный сервис Telegram для создания ботов. Теперь работает как мини-апп: нажмите «Open» (скрепка) → Create bot.
Токен бота Уникальный ключ вашего бота. Длинная строка вида 1234567890:ABC… Кто знает токен — тот управляет ботом.
Telegram Trigger Нода в Нейро42, запускающая воркфлоу при каждом входящем сообщении в Telegram.
Switch / Verify Message Type Нода-разветвитель (режим Rules). Проверяет ключи сообщения и направляет поток по трём путям: Текст, Аудио или Unsupported.
message.keys() Выражение, возвращающее список полей входящего сообщения. Если в нём есть «text» — это текст, если «voice» — это голосовое.
Telegram Get File Нода Telegram с ресурсом File / операцией Get. Получает бинарные данные аудиофайла по file_id.
OpenAI Transcribe Нода OpenAI: ресурс Audio, операция Transcribe Recording. Переводит аудио в текст через Whisper. Модель выбирается автоматически.
Simple Memory Память агента на N последних сообщений. Session ID = chat_id привязывает историю к каждому пользователю отдельно.
System Message Системный промпт — роль, стиль общения и границы (что отвечать, что нет). Агент читает его перед каждым ответом.
chat_id Уникальный ID чата в Telegram. Нужен для отправки ответа нужному пользователю и для привязки памяти.

 

3. Что понадобится

Что нужно Зачем / Где получить
Аккаунт Telegram Для создания бота через BotFather
Аккаунт Нейро42 (n8n) Платформа для сборки воркфлоу
API-ключ OpenAI Для транскрибации голоса и работы AI Agent. platform.openai.com
Готовый AI Agent из Гайдов 1–4 Добавляем Telegram-обёртку поверх уже рабочего агента

 

4. Как устроен воркфлоу — схема целиком

Прежде чем начать, посмотрим на итоговую схему:

 

Нода Что делает Ветка
Telegram Trigger Получает любое входящее сообщение Старт
Verify Message Type (Switch) Смотрит на ключи сообщения и разветвляет поток Разветвление
Edit Fields (Set) Сохраняет текст: text = message.text Текст →
Telegram Get File Скачивает аудиофайл по file_id Аудио →
OpenAI Transcribe Переводит аудио в текст (Whisper) Аудио →
Unsupported Message Type Отправляет сообщение «не могу обработать» Fallback →
AI Agent Думает и формирует ответ Обе ветки
Simple Memory Хранит историю по chat_id → AI Agent
Telegram Send Message Отправляет ответ пользователю Финал

 

💡 Совет:  Три ветки Switch: «Text» идёт напрямую в AI Agent, «Audio» сначала проходит через Get File и Transcribe, «Extra» (fallback) — отправляет сообщение «не могу обработать».

 

5. Основные шаги

Часть 1: Создаём бота в Telegram через BotFather

Шаг 1. Найдите BotFather в поиске Telegram

BotFather — официальный сервис Telegram для создания и управления ботами. Открываем его через поиск.

  • Откройте Telegram на любом устройстве
  • В строке поиска введите: BotFather
  • Выберите бота с синей галочкой верификации
  • Откройте чат с ним

Шаг 2. Откройте мини-апп BotFather

Новый способ создания ботов — через встроенный мини-апп. Это быстрее и удобнее, чем команда /newbot.

  • В чате с BotFather найдите кнопку Open рядом с полем ввода (иконка скрепки / приложений)
  • Нажмите Open — откроется мини-апп BotFather прямо внутри Telegram

Шаг 3. Создайте нового бота

В мини-аппе заполняем данные бота.

  • Нажмите кнопку Create bot
  • Введите имя бота (отображаемое имя, любое) — например: Мой Ассистент
  • Описание — опционально, можно пропустить
  • Введите username — уникальный, обязательно заканчивается на bot, например: my_assistant_42bot
  • Нажмите Create bot — бот создан

Шаг 4. Скопируйте токен из меню бота

После создания бота вы вернётесь в список ботов мини-аппа. Отсюда копируем токен.

  • В меню мини-аппа выберите только что созданного бота — нажмите на него
  • Откроется окно настроек бота
  • Найдите токен (длинная строка вида 1234567890:ABCdef…) и нажмите Copy

💡 Совет:  Здесь же в настройках можно добавить фотографию, изменить описание или отредактировать бота — позже, через этот же экран.

⚠️ Важно:  Токен — это ключ от вашего бота. Никому не отправляйте его и не публикуйте. Если утёк — сразу перевыпустите через BotFather.

 

✅  Часть 1 завершена. Бот создан, токен скопирован.

 

Перед началом: снимаем воркфлоу с публикации

Если ваш воркфлоу из Гайдов 1–4 уже опубликован и работает — прежде чем начинать редактирование, нужно его снять с публикации. Это необходимо, чтобы правки вступали в силу корректно.

  • Откройте воркфлоу с AI Agent в Нейро42
  • В правом верхнем углу нажмите на три точки «⋯»
  • Выберите пункт «Снять с публикации»
  • В появившемся диалоге подтвердите действие


⚠️ Важно:  После снятия с публикации воркфлоу перестанет реагировать на сообщения. Не забудьте опубликовать его снова по завершении всех настроек.

 

Часть 2: Настраиваем Telegram Trigger в Нейро42

Шаг 5. Откройте существующий воркфлоу и удалите Chat Trigger

Мы не создаём новый воркфлоу — открываем тот, что уже работал в Гайдах 1–4. Нам нужно заменить стартовую ноду: вместо «When Chat Message Received» поставим Telegram Trigger.

  • Откройте ваш рабочий воркфлоу с AI Agent из предыдущих гайдов
  • Найдите первую ноду — «When Chat Message Received» (Chat Trigger)
  • Кликните по ней правой кнопкой мыши → выберите Delete
  • Соединение с AI Agent автоматически пропадёт — это нормально, сейчас подключим новый триггер

Шаг 6. Добавьте Telegram Trigger

Теперь добавляем новый триггер — он заменит удалённый Chat Trigger и будет запускать воркфлоу при каждом сообщении в Telegram.

  • Нажмите «+» на холсте
  • В поиске введите: Telegram
  • В разделе Triggers выберите: Telegram Trigger

Шаг 7. Подключите токен бота

После добавления нода сразу откроет панель настроек. Нужно создать новое подключение с токеном.

  • В поле Credential нажмите на стрелку-выпадашку и выберите «Создать новые учётные данные»
  • Вставьте ваш токен от BotFather в поле Access Token
  • Нажмите Save

Шаг 8. Выберите тип обновлений

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

  • Выберите message — запускать при каждом сообщении
  • Альтернатива: поставьте * (звёздочку) — тогда триггер сработает на любое событие в Telegram (сообщения, редактирования, реакции и т.д.)
  • Для большинства случаев оптимально — message

✅  Часть 2 завершена. Telegram Trigger настроен и ждёт сообщений.

 

Часть 3: Switch «Verify Message Type» — три ветки

Telegram присылает разные структуры для текстовых, голосовых и других сообщений. Нужно направить каждый тип по своему пути. Switch с режимом Rules — идеальный инструмент для этого.

 

Шаг 9. Добавьте ноду Switch

  • Нажмите «+» после Telegram Trigger
  • В поиске введите: Switch
  • Выберите ноду Switch
  • Дважды кликните по заголовку ноды и переименуйте в: Verify Message Type

Шаг 10. Настройте режим и первое правило (Text)

Откройте настройки Switch. Убедитесь, что Mode = Rules. Добавляем первое правило.

  • В поле Mode выберите: Rules
  • Нажмите «Add Routing Rule»
  • Value 1 — переключитесь в режим Выражение и введите:

 

{{ $json.message.keys() }}

 

  • Operation: Array → Contains
  • Value 2: text
  • Разверните «Output Settings» и включите «Rename Output» — введите имя: Text

💡 Совет:  $json.message.keys() возвращает список всех ключей объекта message. Если в нём есть «text» — значит пользователь написал текстовое сообщение. Если «voice» — голосовое.

 

Шаг 11. Добавьте второе правило (Audio)

  • Нажмите «Add Routing Rule» ещё раз
  • Value 1: Выражение → {{ $json.message.keys() }}
  • Operation: Array → Contains
  • Value 2: voice
  • Rename Output: Audio

Шаг 12. Добавьте Fallback Output

Fallback — это выход для всего, что не попало ни в одно правило (фото, стикер, документ и т.д.).

  • Найдите кнопку «Options» или «Add Option» в нижней части настроек Switch
  • Выберите «Fallback Output»
  • Установите значение: Extra Output

⚠️ Важно:  Порядок правил важен: Text идёт первым (index 0), Audio — вторым (index 1). Fallback срабатывает, только если ни одно правило не сработало.

 

✅  Часть 3 завершена. Switch настроен — три выхода: Text, Audio, Extra.

 

Часть 4: Ветка Text — нода Edit Fields

Шаг 13. Добавьте ноду Set (Edit Fields) в ветку Text

Из выхода Text Switch нам нужно передать текст сообщения дальше в AI Agent. Используем ноду Set (в интерфейсе она называется Edit Fields) — она фиксирует нужное поле.

  • Подключитесь к выходу Text ноды Switch
  • Нажмите «+» и в поиске введите: Edit Fields (или Set)
  • Выберите ноду Edit Fields
  • В настройках нажмите «Add Field»
  • Name: text
  • Type: String
  • Value — переключитесь в Выражение:

 

={{ $json.message.text }}

 

  • Включите опцию «Include Other Fields» — чтобы данные из Telegram Trigger (включая chat.id) остались доступны дальше

💡 Совет:  Include Other Fields позволяет сохранить весь исходный объект message — в том числе chat.id, который понадобится для отправки ответа и для Memory.

 

✅  Часть 4 завершена. Текстовая ветка готова.

 

Часть 5: Ветка Audio — получаем и транскрибируем голос

Когда пользователь отправляет голосовое, Telegram не отдаёт аудио напрямую — он присылает file_id. Нода Telegram Get File по этому ID скачивает сам аудиофайл. Затем OpenAI Transcribe переводит его в текст.

 

Шаг 14. Добавьте ноду Telegram — Get File

Подключитесь к выходу Audio ноды Switch.

  • Нажмите «+» от выхода Audio
  • В поиске введите: Telegram
  • Выберите ноду Telegram (не Telegram Trigger, а именно Telegram)
  • В поле Credential выберите тот же аккаунт, что и для Trigger
  • Resource: File
  • Operation: Get
  • В поле File ID переключитесь на Выражение:

={{ $json.message.voice.file_id }}

💡 Совет:  Эта нода обращается к Telegram API, скачивает бинарные данные аудиофайла и передаёт их в поле data. Именно это поле нужно будет указать в OpenAI Transcribe.

 

Шаг 15. Добавьте ноду OpenAI — Transcribe

Получив бинарный файл, передаём его в Whisper для транскрибации.

  • Нажмите «+» после ноды Telegram Get File
  • В поиске введите: OpenAI
  • Выберите ноду OpenAI
  • В поле Credential выберите ваш OpenAI API ключ
  • Resource: Audio
  • Operation: Transcribe a Recording
  • В поле Input Data Field Name оставьте: data
  • (Модель выбирается автоматически — Whisper-1. Ничего менять не нужно.)

💡 Совет:  После выполнения этой ноды в данных появится поле text — расшифрованный текст голосового сообщения. Именно его мы передадим в AI Agent точно так же, как текст из текстовой ветки.

 

✅  Часть 5 завершена. Голосовое сообщение конвертируется в текст.

 

Часть 6: Ветка Fallback — ответ на неподдерживаемый тип

Шаг 16. Добавьте ноду Telegram Send для Unsupported

Если пользователь пришлёт фото, стикер, документ или что-то ещё — бот вежливо ответит, что не может это обработать.

  • Подключитесь к третьему выходу Switch (Extra / Fallback)
  • Нажмите «+» и выберите ноду Telegram
  • Credential: тот же аккаунт
  • Resource: Message
  • Operation: Send Message
  • В поле Chat ID — Выражение:

 

={{ $json.message.chat.id }}

 

  • В поле Text введите (фиксированный текст):

 

Я не могу обработать этот тип сообщения.

 

  • Переименуйте ноду в: Unsupported Message Type

💡 Совет:  Эта ветка изолирована — она никуда дальше не ведёт. Voркфлоу просто отправляет сообщение и завершается.

 

✅  Часть 6 завершена. Все три ветки Switch обработаны.

 

Часть 7: AI Agent — подключаем обе рабочие ветки

Нода AI Agent уже существует в воркфлоу из Гайдов 1–4. Нам нужно только подключить к ней обе новые ветки и убедиться, что chatInput настроен правильно.

 

Шаг 17. Подключите AI Agent к обеим веткам

  • Найдите существующую ноду AI Agent на холсте
  • Подключите к нему выход ноды Edit Fields (ветка Text) через main-соединение
  • Подключите к нему выход ноды OpenAI Transcribe (ветка Audio) через main-соединение

  • Откройте настройки AI Agent — раньше нода была подключена к Chat Trigger, теперь режим изменился
  • В верхней части панели найдите переключатель источника промпта — он может быть в режиме «Connected Chat Trigger node»
  • Переключите его в режим «Define below» (ввести вручную / через выражение)

  • В открывшемся поле Prompt → User Message нажмите кнопку Выражение (⚡)
  • Введите выражение:

={{ $json.text }}

💡 Совет:  $json.text работает для обеих веток: в текстовой ветке это поле выставила нода Edit Fields, в голосовой — OpenAI Transcribe. AI Agent не знает, откуда пришёл текст — он просто отвечает на него.

 

Часть 8: Системный промпт — роль, стиль и границы

Шаг 18. Добавьте System Message в AI Agent

  • Откройте настройки AI Agent
  • Нажмите «Add Option» внизу панели
  • Выберите «System Message»
  • Вставьте ваш промпт в появившееся поле


Пример системного промпта (из этого гайда — можно менять как угодно):

Ты — вежливый и полезный ассистент. Отвечаешь на вопросы пользователей: можешь рассказать о погоде через ноду Weather API, ответить на вопросы по материалам вебинара из векторной базы знаний Supabase, помочь с задачами. Общаешься на русском языке, кратко и по делу. Если вопрос выходит за рамки твоей компетенции — вежливо скажи об этом.

 

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

 

Часть 9: Simple Memory — привязка к пользователю

Шаг 19. Добавьте Simple Memory к AI Agent

  • В нижней части ноды AI Agent найдите слот Memory
  • Нажмите «+» рядом с Memory
  • Выберите: Simple Memory
  • Нода появится на холсте и автоматически подключится к AI Agent

Шаг 20. Настройте Session ID через данные Telegram Trigger

Session ID определяет, кому принадлежит история диалога. Мы привяжем его к chat_id — уникальному ID чата пользователя в Telegram. Чтобы не писать выражение вручную, получим данные прямо из ноды.

  • Откройте настройки Simple Memory
  • В поле Session ID нажмите на переключатель — он может быть в режиме «Connected Chat Trigger node»
  • Переключите его в режим «Define below»

  • Теперь нам нужно получить реальные данные из Telegram Trigger — чтобы можно было перетащить chat_id
  • Откройте чат с вашим ботом в Telegram и отправьте команду /start
  • Вернитесь в Нейро42 — нажмите на ноду Telegram Trigger и в правой панели нажмите «Выполнить ноду»
  • Нода выполнится и покажет входящие данные — вы увидите структуру сообщения

  • В отображённых данных найдите поле chat → id (это и есть chat_id пользователя)
  • Перетащите это поле прямо в поле Session ID ноды Simple Memory
  • Session ID автоматически заполнится правильным выражением

💡 Совет:  Перетаскивание — самый надёжный способ: n8n сам сформирует правильное выражение и вы не допустите опечатку.

⚠️ Важно:  Если данные в Telegram Trigger исчезли или обнулились — не волнуйтесь. Отправьте /start боту ещё раз и снова нажмите «Выполнить ноду». Данные вернутся.

 

✅  Часть 9 завершена. Каждый пользователь имеет свою отдельную историю разговора.

 

Часть 10: Языковая модель — подключаем OpenAI Chat Model

Шаг 21. Убедитесь, что OpenAI Chat Model подключён

  • OpenAI Chat Model уже подключён к вашему AI Agent из предыдущих гайдов
  • Проверьте, что Credential указан (ваш OpenAI API ключ)

Часть 11: Отправляем ответ в Telegram

Шаг 22. Добавьте ноду Telegram Send Message

  • Нажмите «+» после AI Agent
  • Выберите ноду Telegram
  • Credential: тот же аккаунт бота
  • Resource: Message
  • Operation: Send Message

Шаг 23. Настройте Chat ID и текст через перетаскивание

Поля Chat ID и Text заполняем не вручную, а перетаскиванием из данных нод — так надёжнее и быстрее.

 

Заполняем Chat ID:

  • Если данные в нодах уже есть — раскройте ноду Telegram Trigger и найдите в её данных поле chat → id
  • Если данные сбросились — отправьте /start боту, вернитесь в Нейро42 и нажмите «Выполнить ноду» на Telegram Trigger
  • Перетащите поле chat.id из данных Telegram Trigger в поле Chat ID ноды Send Message

Заполняем Text (ответ агента):

  • Раскройте ноду AI Agent — в её выходных данных найдите поле output (первая строка с ответом агента)
  • Перетащите поле output в поле Text ноды Send Message

💡 Совет:  Перетаскивание — самый надёжный способ: n8n сам сформирует выражение {{ $json.output }}. Если хотите вписать вручную — именно такое значение и нужно.

⚠️ Важно:  Если данные нод сбросились и перетаскивать нечего — отправьте /start боту, выполните Telegram Trigger заново, а потом прогоните весь воркфлоу через тестирование. Данные восстановятся по всей цепочке.

 

Часть 12: Публикуем воркфлоу

Шаг 24. Проверьте схему и опубликуйте

Финальная схема должна выглядеть так:

  • Telegram Trigger → Verify Message Type (Switch)
  • Switch [Text] → Edit Fields → AI Agent
  • Switch [Audio] → Telegram Get File → OpenAI Transcribe → AI Agent
  • Switch [Extra] → Unsupported Message Type (Send)
  • AI Agent ← Simple Memory (Memory)
  • AI Agent ← OpenAI Chat Model
  • AI Agent → Telegram Send Message

  • Нажмите кнопку «Опубликовать» в правом верхнем углу

⚠️ Важно:  Только после нажатия «Опубликовать» бот начнёт реагировать на сообщения. 

 

Часть 13: Тестируем бота

Шаг 25. Текстовое сообщение — проверяем Weather API

Найдите бота в Telegram по username и напишите ему. Первым тестом проверим, что работает нода Weather API.

  • Найдите бота по username в поиске Telegram
  • Отправьте: «Привет, какая погода в Москве?»
  • Бот должен обратиться к ноде Weather API и ответить с реальными данными о погоде

💡 Совет:  Если бот ответил данными о погоде — Weather API и текстовая ветка работают. Если нет — проверьте ноду Weather API в воркфлоу и её настройки.

 

Шаг 26. Голосовое сообщение — проверяем базу знаний

Теперь проверяем голосовую ветку и векторную базу знаний Supabase.

  • Запишите голосовое сообщение в чате с ботом: «Привет, расскажи инфу о вебинаре»
  • Бот должен транскрибировать голос через Whisper и ответить информацией из базы знаний

💡 Совет:  Хотите проверить транскрибацию? Зайдите в Нейро42 → последний запуск воркфлоу → нода OpenAI Transcribe → вкладка Выходные данные. Там поле text с расшифровкой.

 

Шаг 27. Неподдерживаемый тип (фото, стикер)

  • Отправьте боту стикер или фотографию
  • Бот должен ответить: «Я не могу обработать этот тип сообщения.»

Шаг 28. Проверка памяти

  • Напишите: «Меня зовут Глеб»
  • В следующем сообщении спросите: «Как меня зовут?»
  • Бот должен ответить «Глеб» — это значит, Simple Memory работает

✅  Тестирование завершено. Бот работает с текстом, голосом, отбивает неподдерживаемые типы и помнит контекст!

 

Бонус: убираем подпись «Sent automatically with n8n»

По умолчанию Нейро42 добавляет к каждому сообщению бота подпись «This message was sent automatically with n8n». Чтобы убрать её, нужно отключить одну опцию в ноде Send Message.

  • Откройте ноду «Send a text message» (Telegram Send Message)
  • Прокрутите панель вниз до раздела «Additional Fields»
  • Нажмите «Add Field» и выберите «Append n8n Attribution»
  • Появится переключатель «Append n8n Attribution» — выключите его (тумблер серый)

✅  Готово! Теперь бот отвечает без подписи n8n.

🎉  Поздравляем! Telegram-бот с голосом, памятью и системным промптом готов!

 

Ваш бот умеет:

  • Принимать текстовые сообщения в Telegram
  • Принимать голосовые — транскрибировать через OpenAI Whisper
  • Вежливо отказывать при неподдерживаемом типе (фото, стикер и т.д.)
  • Отвечать строго в рамках заданной роли (системный промпт)
  • Помнить контекст разговора для каждого пользователя отдельно

 

6. Что делать, если не работает

Проблема Решение
Бот не реагирует на сообщения Убедитесь, что воркфлоу ОПУБЛИКОВАН (не просто сохранён). Проверьте токен в Telegram Trigger.
Switch не срабатывает на голос Убедитесь, что Value 1 = {{ $json.message.keys() }}, операция = Array contains, Value 2 = voice (без кавычек).
Ошибка в ноде OpenAI Transcribe Проверьте, что Binary Property = data. Убедитесь, что нода Telegram Get File выполнилась и вернула бинарные данные.
Бот не помнит контекст Session ID в Simple Memory должен ссылаться на chat_id из Telegram Trigger. Перетащите поле chat.id из данных Trigger в поле Session ID. Если данные сбросились — отправьте /start боту и выполните Trigger заново.
Бот отвечает не тому пользователю В Send Message поле Chat ID должно ссылаться на chat.id из Telegram Trigger. Используйте перетаскивание из данных Trigger. Не вводите числовой ID вручную.
На голосовое приходит «не могу обработать» Порядок правил в Switch: сначала Text (index 0), потом Audio (index 1). Проверьте, не перепутаны ли местами.

 

7. Что делать дальше

Бот работает — теперь его можно развивать:

  • Подключите Supabase-базу знаний (Гайд 3) — бот будет отвечать из загруженных документов
  • Добавьте обработку фотографий — новая ветка в Switch для message.photo
  • Настройте логирование всех диалогов в Google Sheets
  • Создайте несколько ботов с разными ролями (разные токены → разные воркфлоу)
  • Добавьте команды (/help, /reset) через фильтрацию по message.text.startsWith

 

Предупреждение о применении иностранного языка

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

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

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

Мы обращаем внимание на тот факт, что наличие иностранного языка в данной документации обусловлено профессиональной необходимостью и соответствует установленным нормам и правилам использования специализированной литературы и документации в Российской Федерации.

Свяжитесь с нами

* нажимая на кнопку, Вы даете согласие на обработку персональных данных