> For the complete documentation index, see [llms.txt](https://book.microcrm.online/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.microcrm.online/konstruktor-chat-botov/tipy-uzlov/naiti-sotrudnika.md).

# Найти сотрудника

<figure><img src="/files/WmhKrWhtJByHUOE9MdIQ" alt=""><figcaption></figcaption></figure>

## **Когда использовать**

* ✅ Автоматическое распределение новых клиентов между менеджерами
* ✅ Поиск наименее загруженного менеджера
* ✅ Назначение ответственного по имени или роли
* ✅ Отправка уведомлений конкретному сотруднику
* ✅ Создание системы балансировки нагрузки

## **Настройки**

<figure><img src="/files/hFKYoEcXrsVlyULv8LnP" alt=""><figcaption></figcaption></figure>

## **Тип поиска**

Выберите критерий поиска сотрудника:

### **По ФИО**

Ищет сотрудника по имени или фамилии.

**Режим поиска:**

* **Точное совпадение** — полное совпадение имени
* **Содержит** — имя содержит указанный текст
* **Начинается с** — имя начинается с указанного текста

**Значение:** Введите имя или используйте переменную `{{context.name}}`

#### **Пример:**

```
Тип: По ФИО
Режим: Содержит
Значение: Иванов
→ Найдет: "Иван Иванов", "Иванова Мария"
```

### **По Email**&#x20;

Ищет сотрудника по адресу электронной почты.

**Режим поиска:** Точное совпадение / Содержит / Начинается с

#### **Пример:**

```
Тип: По Email
Режим: Точное совпадение
Значение: manager@company.com
```

### **По Telegram**&#x20;

Ищет сотрудника по username в Telegram.

**Важно:** Сотрудник должен привязать свой Telegram к профилю в системе.

**Пример:**

```
Тип: По Telegram
Режим: Точное совпадение
Значение: @ivan_manager
```

### **По количеству клиентов**

#### **Самый полезный тип для автоматического распределения**

Ищет сотрудника по количеству назначенных ему клиентов.

#### **Режим поиска:**

* **Минимум клиентов** — найдет менеджера с наименьшей загрузкой (идеально для распределения)
* **Максимум клиентов** — найдет самого загруженного менеджера
* **Равно** — найдет менеджера с точным количеством клиентов

### **Примеры использования**

#### **Автоматическое распределение новых клиентов:**

```
[Триггер: Новый клиент написал /start]
     ↓
[Найти сотрудника]
Тип: По количеству клиентов
Режим: Минимум клиентов
Сохранить в: free_manager
     ↓
[Управление клиентом]
Действие: Обновить информацию
Поля:
  - Назначить менеджера: {{context.free_manager}}
     ↓
[Уведомление]
Получатели: {{context.free_manager}}
Сообщение: "Вам назначен новый клиент!"
```

#### **Найти самого опытного менеджера:**

```
Тип: По количеству клиентов
Режим: Максимум клиентов
→ Для сложных VIP клиентов
```

### **По роли**

Ищет сотрудника с указанной ролью в компании.

**Доступные роли:**

* Владелец
* Директор
* Главный менеджер
* Менеджер
* Сотрудник

**Важно:** Если несколько сотрудников имеют эту роль, вернется случайный из них.

#### **Пример:**

```
Тип: По роли
Роль: Главный менеджер
→ Для эскалации сложных вопросов
```

### **Случайный**

Выбирает случайного активного сотрудника.

**Когда использовать:**

* Равномерное распределение без учёта загрузки
* Для тестирования
* Ротация ответственных

**Сохранить результат в**

**Обязательное поле!** Имя переменной для сохранения `user_id` найденного сотрудника.

**Примеры:**

* `manager_id` — для назначения менеджера
* `support_id` — для отправки в поддержку
* `responsible_person` — для ответственного лица

**Использование результата:**

```
{{context.manager_id}} — в ноде "Управление клиентом"
{{context.support_id}} — в ноде "Уведомление"
```

### **Если не найден**

Что делать, если сотрудник по критериям не найден:

* **Пропустить и продолжить** ✅ (рекомендуется) — выполнение продолжается, переменная остаётся пустой
* **Остановить выполнение** — сценарий прекращается
* **Установить null** — переменная получает значение `null`, выполнение продолжается

#### **Только активные**

**По умолчанию включено** — ищет только среди активных сотрудников (не уволенных, не заблокированных).

***

### **Примеры сценариев**

**Сценарий 1: Автоматическое распределение лидов**

```
[Триггер: Команда /newlead]
     ↓
[Отправить сообщение ⏳]
Текст: "Укажите имя клиента:"
Ожидать ответ: ВКЛ
Сохранить в: client_name
     ↓ 💬
     ↓
[Найти сотрудника]
Тип: По количеству клиентов
Режим: Минимум клиентов
Сохранить в: assigned_manager
Если не найден: Пропустить
     ↓
[Управление клиентом]
Целевой клиент: Текущий пользователь
Действие: Обновить информацию
Поля:
  - Имя: {{context.client_name}}
  - Назначить менеджера: {{context.assigned_manager}}
  - Категория: "Новый лид"
     ↓
[Создать сделку]
Название: "Новый лид: {{context.client_name}}"
Статус: Новая
     ↓
[Уведомление]
Канал: Telegram
Получатели: {{context.assigned_manager}}
Сообщение: "🎯 Вам назначен новый лид!
Имя: {{context.client_name}}
Telegram: @{{client.telegram}}"
```

**Сценарий 2: Эскалация в поддержку**

```
[Триггер: Кнопка "Проблема"]
     ↓
[Найти сотрудника]
Тип: По роли
Роль: Главный менеджер
Сохранить в: support_manager
     ↓
[Уведомление]
Канал: Telegram
Получатели: {{context.support_manager}}
Сообщение: "⚠️ Клиент сообщил о проблеме
Клиент: {{client.name}}
Контакт: {{client.phone}}"
     ↓
[Отправить сообщение]
Текст: "Ваш запрос передан менеджеру. Ожидайте ответа."
```

**Сценарий 3: Проверка перед назначением**

```
[Найти сотрудника]
Тип: По количеству клиентов
Режим: Минимум клиентов
Сохранить в: new_manager
Если не найден: Установить null
     ↓
[Условие: Менеджер найден?]
Тип: Сравнение переменных
Переменная: {{context.new_manager}}
Оператор: Не равно
Значение: null
     ↓ true
     ├─→ [Назначить менеджера]
     │
     ↓ false
     └─→ [Отправить сообщение]
         Текст: "Извините, все менеджеры заняты. Мы свяжемся с вами позже."
```

***

### **Советы по использованию**

**✅ Лучшие практики:**

1. **Используйте "Минимум клиентов" для распределения**

   ```
   Это автоматически балансирует нагрузку между менеджерами
   ```
2. **Всегда проверяйте результат**

   ```
   После find_employee → добавьте condition для проверки найден ли сотрудник
   ```
3. **Комбинируйте с уведомлениями**

   ```
   Найденный сотрудник должен получить уведомление о назначении
   ```
4. **Используйте "Только активные"**

   ```
   Избегайте назначения уволенным или неактивным сотрудникам
   ```

**❌ Чего избегать:**

1. Не забывайте указывать имя переменной для сохранения
2. Не используйте "Остановить выполнение" без необходимости
3. Не полагайтесь на случайный выбор для важных клиентов
4. Не забывайте про режим "Если не найден"

***

### **Интеграция с другими нодами**

**С управлением клиентом:**

```
[Найти сотрудника] → [Управление клиентом]
Результат поиска → Поле assigned_manager_id
```

**С уведомлениями:**

```
[Найти сотрудника] → [Уведомление]
Результат поиска → Получатели уведомления
```

**С условиями:**

```
[Найти сотрудника] → [Условие: Найден?] 
                          ├─ true → [Продолжить]
                          └─ false → [Альтернативный путь]
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.microcrm.online/konstruktor-chat-botov/tipy-uzlov/naiti-sotrudnika.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
