Перейти до основного вмісту
megapromotingПоговорімо

aichat.md — спрямування взаємодій

Що відбувається з повідомленням від тієї секунди, коли воно потрапляє до нас, і до моменту, коли хтось позначає його як вирішене.

Асистента, який добре відповідає, легко показати в демо. Те, що важко показати, і що насправді має значення, — це маршрут: як надходить повідомлення, що робиться, щоб не відповідати двічі, скільки очікують перед відповіддю, звідки береться інформація, який інструмент викликається, де агент зупиняється і кого викликають замість нього. Нижче наведено реальний маршрут, з числами з коду. У тому числі частину коментарів, яка поводиться зовсім інакше, ніж приватне повідомлення — і має поводитися інакше.

Traseul

Дев’ять етапів, у порядку їх виконання

  1. 01

    1. Вхід, через канал, яким написала людина

    Шість шляхів входу, з різними механізмами. Messenger, Instagram Direct і WhatsApp Cloud API надходять через webhook, в один і той самий пункт входу, розгалужений за типом об’єкта. Віджет на сайті входить безпосередньо через власний маршрут. Telegram не надходить через webhook, а через безперервне опитування. А 999.md не має ні webhook, ні безперервного опитування — має годинник, який дивиться на потоки кожні двадцять секунд.

    Кожне отримання записується в журнал подій, зі станом криптографічного підпису та з необробленим вмістом, ще до того, як щось буде опрацьовано. Причина проста: коли повідомлення «не дійшло», перше питання — чи дійшло воно до нас, чи ні, а відповідь має бути рядком у таблиці, а не припущенням. Маршрутизація канал → агент відбувається через таблицю відповідностей між ідентифікатором сторінки та сервісом, тож один і той самий акаунт може вести кількох агентів на різних каналах.

  2. 02

    2. Дедуплікація, перед будь-чим іншим

    Ідентифікатор повідомлення записується в ключ Redis із умовним записом — якщо ключ уже існує, повідомлення є дубльованим і тут зупиняється. Термін життя ключа — 24 години. Якщо Redis не відповідає, використовується локальна пам’ять із порогом очищення на 5.000 записів, тож дедуплікація не зникає, а лише стає коротшою за пам’яттю.

    Вікно було 120 секунд до 10 липня 2026 року, коли його підняли до 24 годин після інциденту з дубльованими відповідями. Коментар, що пояснює зміну, написаний поруч із значенням, у коді. Тут же викидаються стікери та кнопка «like», які інакше стали б запитаннями, на які агент намагався б відповісти.

  3. 03

    3. Буфер — три повідомлення, написані підряд, стають одним запитанням

    Люди не пишуть абзац. Вони пишуть «привіт», потім «у мене є питання», потім саме питання. Асистент, який відповідає на кожен рядок окремо, дратує і здається тупим. Тому повідомлення збираються в буфер на парі відправник–сторінка, а таймер скидається з кожним новим повідомленням. Коли людина замовкає, відповідь дається один раз, на все.

    У Messenger та Instagram очікування за замовчуванням становить 15 секунд; у WhatsApp — 5. У буфер приймається максимум п’ять повідомлень — шосте замінює останнє — а об’єднаний текст обрізається до 2.000 символів. Значення очікування задається для кожного агента окремо, а не глобально: воно читається з конфігурації агента і може бути знижене до нуля для сценарію, де швидкість важливіша за зв’язність. Безпосередньо перед надсиланням база ще раз перевіряється, чи не поставили нитку на паузу тим часом — бо за ці 15 секунд туди міг увійти людина.

  4. 04

    4. Читання з ваших джерел

    Запит перетворюється на вектор і шукається у фрагментах, які ви завантажили. Пошук гібридний: поєднується зіставлення за словами з векторною близькістю у пропорції три до семи. Завантажується до 300 кандидатних фрагментів із бази знань агента, для кожного обчислюється комбінований бал, і зберігаються найкращі — п’ять для каналів месенджерів, десять для віджета.

    Кількість фрагментів налаштовується для кожного агента окремо, від 1 до 20. Фрагменти під час індексації обрізаються до 1.200 символів. Остаточний відбір робиться за рангом, а не за абсолютним порогом схожості: вони впорядковуються за комбінованим балом і беруться перші. У конфігурації є і поле порогу, але в пошуковому шляху фактичний фільтр зберігає будь-який фрагмент із балом вище нуля і обрізає за позицією — ми це кажемо, бо це різниця між тим, що написано на панелі, і тим, що робить код. Кожен запит можна журналювати разом із поверненими фрагментами та їхніми балами, щоб можна було відповісти на «чому він це сказав».

  5. 05

    5. Інструменти — коли агент має щось зробити, а не лише сказати

    Якщо відповідь потребує дії, модель викликає інструмент. Інструмент буває трьох типів: webhook до вашої системи, фрагмент коду, що запускається ізольовано, або вбудований у платформу. Цикл модель–інструмент–модель має максимум п’ять раундів, в обох рушіях. Після п’яти він зупиняється і відповідає тим, що має.

    Максимальний час за замовчуванням для інструмента — 15 секунд. Вбудовані інструменти, які існують сьогодні: пошук на вебсторінці, поточний час, калькулятор, запис у таблицю Google, сповіщення про lead у Telegram, надсилання SMS, шість інструментів для запису для зовнішньої системи бронювання, і три для каталогу магазину — пошук, зіставлення та картка товару. Каталог читає live, з буферною пам’яттю на десять хвилин, до 30 сторінок і з максимальним часом 20 секунд. Існує набір інструментів, позначених як внутрішні, результат яких ніколи не потрапляє в текст, видимий клієнту.

  6. 06

    6. Відповідь, з історією перед очима

    Модель отримує запитання, знайдені фрагменти, результати інструментів і історію розмови — останні 25 повідомлень на основному шляху, 50 на новому рушії. Виклик має максимальний час 120 секунд, із двома повторними спробами; виклик після інструментів — 90 секунд. Відповідь іде каналом, звідки прийшло запитання, мовою, якою його поставили.

    Новий рушій агентів запускається перемикачем, для кожного агента, для кожного облікового запису або глобально — усе не змінюється одразу. Так можна порівняти стару поведінку з новою на тому самому трафіку, що є єдиним чесним способом сказати, що щось краще.

  7. 07

    7. Передача людині

    Нитка має стан: бот або людина. Перехід може відбутися чотирма способами. За ключовими словами — список із сімнадцяти виразів румунською, англійською та російською, окремі слова порівнюються на межі слова, вирази — за збігом у тексті. Через роздратування — другий список, теж із сімнадцяти. Через повторення — те саме запитання, поставлене тричі за останні десять повідомлень, рахується лише для повідомлень довше десяти символів. Або через рішення моделі, яка може запросити передачу зі спеціальною позначкою.

    Режим задається для кожного агента окремо і за замовчуванням вимкнений — вибирається між «вимкнено», «за ключовими словами» і «інтелектуальний». Коли він спрацьовує: нитка переходить на «чекає людину», записується момент, клієнт отримує повідомлення підтвердження своєю мовою, а агент замовкає. Він не відповідає паралельно, не дописує, не вибачається. Мовчить, і все. Існує також офіційний протокол передачі Meta, який переносить керування ниткою до скриньки сторінки; резервний канал продовжує зберігати повідомлення навіть тоді, коли керування у людини, щоб у історії не було дірки.

  8. 08

    8. Коли оператор відповідає зі сторінки, агент зупиняється сам

    Якщо людина пише клієнту прямо з інтерфейсу Meta, платформа бачить відлуння цього повідомлення і автоматично ставить нитку на паузу, без того щоб хтось натискав щось. Типова тривалість — 30 хвилин, налаштовується від п’яти хвилин до семи днів. Це найлегший випадок, який можна прогледіти під час проєктування асистента: ніхто не натискає кнопку прийняття, людина просто відповідає, а якщо платформа цього не помітить, клієнт отримає два голоси одночасно.

    Повернення має три шляхи. Автоматична реактивація після 30 хвилин без людської відповіді — цикл перевіряє щохвилини й реактивує партіями не більш як по 50 ниток, очищаючи також пам’ять розмови, щоб агент не продовжував бесіду, яку не вів. Окремо перевіряється завершення паузи. І кнопка в панелі: прийняття, вирішення, повернення до бота, повне зупинення бота.

  9. 09

    9. Закриття — і що не закривається само

    Нитку позначають як вирішену вручну, з панелі, із нотатками про вирішення та з системним повідомленням, записаним в історії. Автоматичного закриття через неактивність немає: нитка, яку залишили відкритою, лишається відкритою. Ми вирішили сказати це замість того, щоб створювати враження, ніби все прибирається само.

    Те, що все ж закривається само, — це дві речі: реактивація агента через 30 хвилин, описана вище, і ескалації, надіслані в Telegram, які після 30 хвилин без відповіді позначаються як прострочені та повертають нитку агенту з написаною причиною. Над усім цим працює індикатор часу відповіді: понад годину він стає попередженням, понад чотири години — перевищенням. Він забарвлює, але не закриває.

Asistentul magazinuluiSe potrivește cu aparatul meu?Spune-mi modelul aparatului.Verific variantele din catalog.Catalog conectat · informație verificatăEchipa poate prelua conversația.
Schemă explicativă · mesaj, context, acțiune, predare

Comentarii

Коментарі: чому це не повідомлення і чому їх не обробляють як повідомлення

Приватне повідомлення має одного читача. Коментар мають усі читачі сторінки, включно з конкурентами, включно з тим, хто шукає привід для скандалу. Хороша відповідь у приваті може бути катастрофою публічно — наприклад, ціна, доступність або підтвердження, що людина справді ваш клієнт. Тому коментарі мають окремий маршрут, окремі правила й значення за замовчуванням, яке схиляється до стриманості.

Як коментар потрапляє в систему

Сторінка підписується на різні поля в обох мережах: у Facebook — на стрічку сторінки, в Instagram — явно на коментарі та на коментарі в прямих трансляціях. Вони потрапляють у той самий вхідний пункт, що й повідомлення, але на окрему гілку, яку впізнають за наявністю списку змін замість списку повідомлень. Формат відрізняється між мережами й визначається окремо для кожної. Також читаються батьківський коментар, щоб знати, чи це відповідь на інший коментар, і публікація або матеріал, під яким він з’явився.

Лише нові коментарі запускають щось

Meta надсилає ту саму подію для кількох дій. Лише додавання коментаря запускає агента. Редагування, видалення, приховування й повернення з приховування журналюються і зупиняються там. Зміна кількості вподобань ігнорується без сліду, бо інакше журнал був би чистим шумом.

Чотири фільтри перед тим, як агент побачить текст

Коментарі самої сторінки відкидаються — інакше агент відповідав би сам собі без кінця. Уже оброблені коментарі відкидаються за унікальним ідентифікатором коментаря, який має обмеження унікальності в базі. Порожні коментарі, ті, що мають не більш як два символи, і ті, що складаються тільки з emoji, відкидаються. А тексти, які містять довгі номери телефонів або вебадреси, проходять через антиспам-фільтр із чотирма шаблонами й зупиняються, позначені як такі.

Публічно чи приватно: значення за замовчуванням — приватно

Кожен агент має чотири окремі перемикачі, два для Facebook і два для Instagram: публічна відповідь увімкнена або вимкнена, приватна відповідь увімкнена або вимкнена. Над ними стоїть загальний режим із трьома позиціями — вимкнено, автоматично або з підтвердженням. Коли конфігурація відсутня або її не можна прочитати, резервне значення в коді — не «відповідати публічно», а «не відповідати публічно, відповідати приватно». Це свідомий вибір: помилка конфігурації не має права виводити текст на публічну стіну когось іншого.

Вимкнений агент означає вимкнені коментарі

Якщо асистент архівований, неактивний, деактивований або поставлений на паузу, або якщо бот вимкнений з облікового запису клієнта, режим коментарів автоматично стає «вимкнено», незалежно від того, що написано в перемикачах коментарів. Одне місце для вимкнення, а не чотири, які треба тримати в пам’яті.

Що не відповідають публічно, і наскільки жорстке правило

Інструкція, даноа моделі для публічної відповіді, є явною: максимум два речення, короткий і дружній тон, запрошення в приватні повідомлення для деталей, і заборона давати детальну інформацію або ціни публічно. Понад це, жорстка межа: публічну відповідь обрізають до 300 символів. Понад обидві ці межі, вільний текст, який ви пишете як власні інструкції, окремо для публічного і для приватного. Кажемо чесно, наскільки жорстке правило: це інструкція для prompt плюс обмеження довжини, а не детермінований фільтр, який міг би гарантувати, що ціна ніколи не з’явиться. Коли гарантія має бути жорсткою, публічну відповідь зупиняють і залишають лише приватну, або переходять у режим із погодженням.

Один раз кожні 30 секунд, на одному й тому ж дописі

Публічна відповідь має лічильник на допис: максимум одну на 30 секунд. Причина — те, що стається, коли допис «залітає»: тридцять коментарів за дві хвилини, і сторінка заповнюється однаковими відповідями робота під кожним. Лічильник сам очищається, зберігаючи останню тисячу відстежуваних дописів.

Instagram не дозволяє приватне повідомлення на підкоментар

Це правило платформи, не наше, і воно перевіряється у трьох різних місцях у коді, на всіх трьох шляхах, якими можна дійти до приватного повідомлення. Коли коментар має батьківський коментар і мережа — Instagram, надсилання в приват пропускається, а в журнал записується точна причина. Не намагаються і не провалюються мовчки — пропускають, явно.

Від коментаря до розмови

Перехід відбувається через офіційний механізм: приватне повідомлення надсилається, використовуючи ідентифікатор коментаря як одержувача, а не ідентифікатор людини. Відтоді існує звичайний потік повідомлень, з усіма правилами вище — буфер, джерела, інструменти, передача людині. Потік позначається як такий, що походить із коментарів, а отриманий коментар зберігається в історії розмови з власним типом, щоб було видно, звідки все почалося.

Режим із погодженням: агент пише, людина публікує

Коли режим — «з погодженням», згенерована відповідь не йде далі. Вона зберігається як чернетка, в очікуванні, і з’являється в черзі в панелі, з лічильником. Звідти її схвалюють або відхиляють, частина за частиною. Публікація, яка отримала схвалення, проходить через внутрішній міст, захищений порівнянням підпису в сталий час — схвалену відповідь не можна ввести ззовні.

Що може зробити людина вручну

Приховування коментаря, з механізмом, відповідним кожній мережі, і позначення стану в базі. Видалення, з позначкою видаленого. Масове приховування, максимум 25 коментарів в одному блоці. Закриття коментарів на матеріалі Instagram. І приховування коментарів із прямої трансляції, окремим маршрутом. Це ручні дії, не автоматичні. Немає списку заборонених слів, який сам приховує коментарі, і ми не стверджуємо, що він є.

Predarea

Коли агенту більше нічого сказати

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

Картка, що йде в групу Telegram

Вбудований інструмент надсилає випадок у групу, із заголовком, який відразу каже, що це за випадок: терміновий, запит оператора, повідомлення про зловживання, ескалація незадоволеного клієнта, новий lead або нова розмова. Тип визначається з тексту, окремими шаблонами для кожного. Повідомлення клієнта додається дослівно на картку — людина, що приймає, бачить рівно те, що написав клієнт, а не резюме.

Прийняття — це гонка, і її так і обробляють

Картка має два стани: відкрита і заблокована. Прийняття відбувається через умовний запис, який змінює стан лише якщо він іще був відкритим, а код реально перевіряє, скільки рядків змінилося. Два оператори, які натискають в одну секунду, не приймають обидва. Другий дізнається, що картку вже взято, і не доходить до паралельного запису.

Відповідь оператора переписується мовою клієнта

Оператор пише в групі, своєю мовою і у своєму стилі, іноді телеграфно. Перед передачею текст переписується мовою, якою говорить клієнт, і в тоні агента, без додавання нових фактів. Те, що каже оператор, лишається тим, що передається; змінюється лише форма. Маршрутизація відповіді до потрібної розмови відбувається за повідомленням, на яке відповіли, а якщо його немає — за єдиним заблокованим випадком цього оператора — і явно відхиляється, якщо їх два, замість того щоб вгадувати.

Кого сповіщають, і що більше не сповіщають

Панель отримує сповіщення в реальному часі через постійне з’єднання. Паузи, запущені правилами, надсилають повідомлення на email або в Telegram, на вибір — це єдині два канали, прийняті в коді. Також кажемо, що більше не працює: сповіщення через email для потоку, взятого людиною, було навмисно вимкнено в липні 2026 року, а внутрішній маршрут залишився як порожня відповідь. Якщо ви покладаєтеся на той email, він не прийде. Ми воліємо, щоб ви дізналися це тут.

Правила паузи, понад ключові слова

Можна писати правила, які ставлять потік на паузу при появі номера телефону, адреси email, набору слів до ста або при явному запиті людини. Понад ними — два типи, що оцінюються моделлю: намір і настрій. Тривалість паузи — від однієї хвилини до семи днів; значення нуль означає паузу, доки її не зніме хтось вручну.

Кожна зміна рук записується

Існує журнал прийомів із шістьма окремими діями: прийом людиною, прийом ботом, автоматичне повторне активування, прийом оператором, звільнення оператором і продовження агентом. Це не колонка стану, яка перезаписується — це історія. Коли хтось питає «хто говорив із клієнтом тоді», відповідь — це рядок, а не реконструкція.

Чого не існує, щоб ви не покладалися на те, чого немає

Не існує автоматичної диспетчеризації до кур’єрів або польових команд; ми перевірили весь код і цього немає. Не існує автоматичного закриття розмов через неактивність. Не існує глобального списку заборонених слів для коментарів. Існують чотири тригери передачі, ескалація в Telegram з атомарним прийомом, правила паузи та автоматичне повторне активування через 30 хвилин.

Fiecare afirmație de pe această pagină a fost citită din codul platformei — 66 citări cu fișier și linie, păstrate în depozitul nostru. Le parcurgem împreună, la cerere.