# FreeScout для провайдера: 16 модулей, которые мы написали за восемь месяцев, и почему ушли на свой helpdesk

> Как мы вели поддержку интернет-провайдера во FreeScout: 17 тысяч обращений, биллинг в карточке, ИИ на Claude, голосовая почта. Исходники модулей — на GitHub.

Источник: https://blog.uspeshnyy.ru/blog/keys-freescout-moduli-dlya-podderzhki-provaydera/
Автор: Александр Успешный · blog.uspeshnyy.ru
Опубликовано: 2026-10-30
Теги: кейс, self-hosted, AI-агенты, автоматизация

---

Поддержка интернет-провайдера устроена просто и неприятно одновременно. Клиент пишет в чат, во ВКонтакте, в Telegram, на почту, оставляет заявку на сайте — и **звонит на голосовую почту**. Оператору в этот момент нужен не «тикет», а ответ на три вопроса: кто это, что у него с балансом и тарифом, почему нет интернета.

С ноября 2025 года вся поддержка нашего провайдера жила во [FreeScout](https://freescout.net/) — открытом helpdesk на Laravel. Готового модуля «биллинг провайдера в карточке обращения» там, конечно, нет. Мы написали его сами, потом ещё пятнадцать. Сегодня выкладываем на GitHub двенадцать живых модулей из шестнадцати и заодно рассказываем, как это работало и почему мы всё-таки ушли.

Коротко весь кейс — в ролике на полторы минуты:

<video class="media-embed media-embed-portrait" data-loop-src="/videos/keys-freescout-moduli-dlya-podderzhki-provaydera.mp4" poster="/images/posts/keys-freescout-moduli-dlya-podderzhki-provaydera-poster.webp" data-title="FreeScout для провайдера — за полторы минуты" data-sound muted loop playsinline controls preload="none" aria-label="Ролик: шесть каналов в одной очереди, карточка обращения с данными из биллинга, голосовая почта, ассистент и переезд поддержки в биллинг"></video>

<figure class="audio-embed">
 <span class="ae-icon">
    
 </span>
 <span class="ae-body">
    <p class="ae-title">Подкаст: обсуждаем кейс</p>
    <p class="ae-sub">Разговор о проекте на четыре минуты — если удобнее слушать, чем читать.</p>
    <audio controls preload="none" src="/media/keys-freescout-moduli-dlya-podderzhki-provaydera/podcast-obsuzhdenie.mp3"></audio>
 </span>
</figure>

## Масштаб: что прошло через систему

Цифры из базы FreeScout на момент остановки:

- **17 751 обращение** и **42 156 сообщений** — с ноября 2025 по июнь 2026;
- **10 835 клиентов**, 25 сотрудников, 6 почтовых ящиков;
- **почти 14,4 тысячи обращений — голосовая почта** (это четыре из пяти);
- чат на сайте — 352, Telegram — 230, ВКонтакте — 209, почта — 179, форма — 27.

Вывод, который сначала удивил: для регионального провайдера главный «чат» — это телефонная голосовая почта. Люди не хотят набирать текст, они хотят проговорить проблему. Поэтому именно её мы автоматизировали глубже всего.

## Как всё соединено

Идея одна: **всё, что оператору нужно знать о клиенте, он видит в карточке обращения** — без переключения между окнами. Модули делятся на четыре группы.

## Четыре группы модулей

### 1. Откуда приходят обращения

- **VkIntegration** — канал ВКонтакте. Гибрид: PHP-модуль внутри FreeScout и мост на Python, который принимает события VK и отправляет в FreeScout.
- **VoiceMail** — голосовая почта (о ней ниже).
- **AIFormLabel** — метка у обращений из чата-виджета и формы на сайте.

### 2. Что оператор видит в карточке

- **SmitBilling** — боковая панель: договор, тариф, баланс, услуги, адрес, телефоны, статус. Кнопки «Обновить», «Проверить связь» и «Подсказка ИИ».
- **CarbonBilling** и **AidaBilling** — то же для двух прежних биллингов (в репозиторий не вошли). Да, три поколения биллинга — три модуля: копировать панель было быстрее, чем придумывать общий слой. Старые два теперь музейные.
- **AidaSessions** — журнал ИИ-диалогов прямо внутри helpdesk: оператор видит, что бот уже говорил клиенту, до того как тот пришёл к человеку.
- **KnowledgeBase** — внутренняя база знаний оператора: карточки сценариев (нет интернета, горит LOS, медиаконвертер, низкая скорость, роутер, оплата, подключение, расторжение), дерево решений, шаблоны диалогов и поиск.

### 3. ИИ

- **ClaudeAI** — помощник на Claude API: подсказки оператору и черновики ответов клиенту (отправляет всегда человек). Промпты лежат в файлах (`customer.txt` для клиента, `operator.txt` для оператора), модель, температура и лимиты — в настройках. В промпт подставляются данные клиента из биллинга, поэтому ассистент не переспрашивает то, что система и так знает.
- **SatRatingsChat** — просьба оценить ответ в Telegram и ВКонтакте после ответа оператора; работает поверх платного модуля Satisfaction Ratings.

### 4. Гигиена и удобство

- **SystemFilter** — автоудаление мусора: отчёты о недоставке, автоответчики, DMARC-отчёты. Без него очередь поддержки заполняется письмами, которые никто не писал.
- **BalanceMonitor** — балансы внешних сервисов (облако, API языковой модели, телефония) в шапке для администраторов, красным — если пора пополнить. Тот же блок попадает в ежедневный отчёт в Telegram.
- **SmitUI** — оформление: тёмная тема, мобильная шапка, «режим монтажника» с урезанным интерфейсом, стили для бейджей каналов.
- **UrgencyButton** — выбор срочности для нескольких обращений сразу. Честно: это заготовка, серверной части в модуле нет (см. README).
- **AmoCRMSync** — события обращений во внешний обработчик для AmoCRM. Устарел: AmoCRM мы больше не используем (в репозиторий не вошёл).

## Самое интересное: голосовая почта

Раз она даёт четыре обращения из пяти, здесь автоматика окупилась лучше всего. Цепочка такая:

![От звонка до обращения: звонок, расшифровка, отсев пустых, тема и тип, абонент по номеру, SMS клиенту — оператор получает готовую карточку](/images/posts/freescout-golosovaya-pochta.webp)

Что здесь стоит скопировать в любой helpdesk, даже без наших модулей:

1. **Отсев мусора до человека.** Часть голосовых — это молчание, гудки и обрывки. Модуль проверяет текст и закрывает такие карточки сам.
2. **ИИ — редактор, а не решатель.** Он только приводит расшифровку в читаемый вид и формулирует тему; решение «поддержка это или подключение» принимает набор простых правил по ключевым словам, а теги и воронка зависят от номера, на который позвонили.
3. **Абонент находится по номеру телефона.** Оператор открывает обращение, а в нём уже панель с балансом и тарифом.
4. **Клиент получает подтверждение.** Одна SMS с номером обращения снимает половину повторных звонков.

## Как это выглядит

Снимки сделаны на отдельной копии FreeScout с выдуманными клиентами и вымышленной базой: боевые данные в публикацию не попадают.

![Список обращений: плашки каналов — ВКонтакте, чат, форма, голосовая почта — и метки по темам](/images/posts/freescout-spisok.webp)

![Обращение с боковой панелью абонента из биллинга: договор, статус, баланс, тариф, адрес, услуги и операции](/images/posts/freescout-abonent.webp)

![Обращение из голосовой почты: метка 55-35-59, расшифровка и панель абонента — здесь клиент заблокирован за долг](/images/posts/freescout-voicemail.webp)

![Обращение из ВКонтакте с той же панелью абонента](/images/posts/freescout-vk.webp)

![Шапка FreeScout с балансами сервера, API языковой модели и телефонии](/images/posts/freescout-balans.webp)

![Настройки ClaudeAI: модель, подсказка оператору, черновик ответа с обязательной проверкой человеком, слова эскалации](/images/posts/freescout-claude.webp)

![Журнал ИИ-диалогов внутри helpdesk: статистика, фильтры, ссылки на тикеты и лиды](/images/posts/freescout-sessii.webp)

![Внутренняя база знаний оператора: сценарии решения проблем, фильтры по аудитории и приоритету](/images/posts/freescout-znaniya.webp)

![Страница модуля SystemFilter: какие системные письма он удаляет до создания обращения и как это работает](/images/posts/freescout-filtr.webp)

## Исходники

Двенадцать модулей — в одном репозитории, у каждого свой README: что делает, где настраивается, что заменить под себя. Лицензия — AGPL-3.0, как и у самого FreeScout. Четыре остальных мы не публикуем: оба прежних биллинга и AmoCRM (ими давно никто не пользуется) и заготовку метки голосовой почты, которая так и не заработала.

| Модуль | Что делает | Статус |
|---|---|---|
| [SmitBilling](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/SmitBilling) | данные абонента из биллинга в карточке | рабочий |
| [ClaudeAI](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/ClaudeAI) | подсказки оператору и черновики ответов на Claude | рабочий |
| [KnowledgeBase](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/KnowledgeBase) | база знаний оператора: сценарии и деревья решений | рабочий |
| [AidaSessions](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/AidaSessions) | журнал ИИ-диалогов в helpdesk | рабочий, под нашу базу |
| [VkIntegration](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/VkIntegration) | канал ВКонтакте с мостом на Python | рабочий |
| [VoiceMail](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/VoiceMail) | голосовая почта → обращение и лид | рабочий, под нашу установку |
| [SatRatingsChat](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/SatRatingsChat) | оценки ответа в Telegram и ВКонтакте | рабочий |
| [BalanceMonitor](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/BalanceMonitor) | балансы сервисов в шапке | рабочий |
| [SystemFilter](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/SystemFilter) | автоудаление системных писем | рабочий |
| [SmitUI](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/SmitUI) | оформление, режим монтажника | рабочий, без картинок |
| [UrgencyButton](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/UrgencyButton) | срочность для нескольких обращений | заготовка |
| [AIFormLabel](https://github.com/ircitdev/freescout-smit-modules/tree/main/modules/AIFormLabel) | метка чата и формы | рабочий |

Чего в репозитории нет. Платные и чужие модули (Kanban, Reports, CRM, Telegram Integration, White Label, вход через OpenID и другие) мы не публикуем: у них свои лицензии. Нет и картинок оформления. Адреса, внутренние номера телефонов и идентификаторы воронок заменены заглушками, а ключи везде берутся из `.env` или из настроек FreeScout. Модули написаны под нашу установку: это образцы, а не «поставил и работает».

## Что не получилось и чему научились

- **Обновление FreeScout стёрло наши шаблоны.** При переходе с 1.8.207 на 1.8.221 встроенный обновлятор молча переписал пять наших blade-шаблонов — страницу входа в нашем оформлении, два экрана восстановления пароля и две кнопки администратора. Теперь правило: перед обновлением снимать архив, после — сравнивать все шаблоны. Заодно оказалось, что лимит памяти вшит в сам скрипт обновления, а production-режим требует флага `--force`.
- **Три биллинга — три модуля.** Копипаст панели абонента для каждого поколения биллинга быстро превратился в три почти одинаковых кода. В следующий раз нужен один адаптер и по драйверу на каждый биллинг.
- **Свои модули живут рядом с чужими.** В папке `Modules` у нас было почти пятьдесят модулей: шестнадцать наших, остальные — платные от FreeScout и общественные. Каждое обновление — гадание, что сломается. Хорошая привычка: отдельный список «наше / не наше» и тест после каждого апдейта.
- **Ключи не место в коде.** Перед публикацией мы перебрали каждый файл, вынесли в `.env` всё, что туда не попало, и отдали код на независимую проверку: она нашла и забытые фамилии сотрудников, и реальные номера, и открытые без авторизации служебные адреса. Если собираетесь выкладывать модули в открытый доступ — делайте такой аудит заранее, а не в день релиза.

## Почему ушли

FreeScout отлично справился с главным: помог за несколько месяцев понять, что на самом деле нужно оператору поддержки провайдера. Но к лету 2026 стало видно, что мы строим внутри helpdesk второй биллинг — с данными абонента, балансом, блокировками, обещанным платежом и статусами. Каждый новый канал означал ещё один модуль, ещё один мост, ещё один сервер с базой, которую надо обновлять и бэкапить.

В июне мы перенесли историю в собственную Поддержку внутри СмИТ Биллинга: **около 17,7 тысячи обращений и 41 тысячу сообщений**, тикеты привязываются к абоненту сразу, без отдельной панели. 8 октября 2026 года FreeScout выключили окончательно. Как устроена новая Поддержка — [в документации](https://docs.billing.smit34.ru/pages/helpdesk.html), а весь биллинг целиком — в [обзоре СмИТ Биллинга 3.9](/blog/keys-smit-billing-3-9-billing-dlya-provaydera/).

Для кого FreeScout с самописными модулями остаётся хорошим выбором:

- вашего продукта нет «рядом» — helpdesk и есть основная система поддержки;
- каналов немного, а данных о клиенте — на один запрос во внешнюю систему;
- есть кому поддерживать PHP и следить за обновлениями.

А если ваш продукт — это система, в которой уже лежат данные клиента, поддержка внутри неё выигрывает: нечего синхронизировать.

## Читайте также

<div class="post-refs">
<a href="/blog/keys-provayder-golosovoy-ai/">тот же провайдер с другой стороны: заявку голосом принимает сайт и сам заводит её в биллинге</a>
<a href="/blog/telegram-vmesto-crm/">когда хватает рабочей группы в мессенджере, а когда пора заводить систему вроде helpdesk</a>
<a href="/blog/kak-sledit-za-ai-botom-v-rabote/">что проверять, когда ИИ уже отвечает клиентам: тот же принцип, что у черновиков ClaudeAI</a>
<a href="/blog/keys-max-telegram-most/">ещё один канал в одно окно: клиенты из MAX приходят прямо в Telegram</a>
</div>

Хотите понять, где у вас теряются обращения и заявки — между сайтом, мессенджерами и ответом менеджера? Бот разберёт путь клиента по пунктам и покажет дыры.