Инженерлік хаб

Meta спам-сүзгілеріне түспейтін ақылды Direct-дожим: Gemini 2.5 Flash және Cloud Tasks арқылы нейрожелілік бағалау

20.09.2026
Шарафутдинов Р.

Сенбі, 14:15, Алматыдағы Достық даңғылындағы агенттіктің қапырық кеңсесі. Ұйқысыздықтан көздері қызарған таргетолог пен сату бөлімінің басшысы CRM жүйесін қарап отыр: соңғы бір аптада Instagram жарнамасына 1 400 000 теңге жұмсалып, Direct-ке 1 850 диалог түскен, ал жабылған мәміле саны... бар болғаны 43. Қалған 1 800 әлеуетті клиент менеджердің прайс жазылған хабарламасын оқып, «Рахмет, ойланамын» деп жауап берген немесе екі көк құсбелгіні қалдырып, үнсіз кеткен. Сату жоспарын құтқару үшін бөлім басшысы: «Барлығына жаппай хабарлама жіберіңдер! Бір тәуліктен бері үнсіз қалғандардың бәрін қысыңдар!» деген бұйрық береді. Екі сағаттан кейін «Сәлеметсіз бе! Біздің курс/пальто сізге өзекті ме?» деген бірдей шаблондық спамнан соң Марк Цукербергтің жасанды интеллектінен өлім үкімі келеді: «Сіздің есептік жазбаңыз спам және күдікті белсенділік үшін уақытша бұғатталды». Сату тоқтады, миллиондаған теңге шығын. Ал егер Direct-ті Пуассон үлестірімі мен ниеттерді нейрожелілік бағалау негізінде спам-сүзгілерден айналып өтіп, тасталған жазысулардың конверсиясын +34.6 пайыздық тармаққа арттыратын зергерлік құралға айналдырса ше?

Лидтер зиратының анатомиясы: неге қазақстандық Instagram-дағы диалогтардың 80%-ы үнсіз қалады

Қазақстандағы бөлшек саудада, жылжымайтын мүлікте, сұлулық саласында және онлайн білім беруде Instagram Direct — табыс әкелетін басты күретамыр. Дегенмен, отандық аккаунттардың 95%-ындағы байланыс процесі саңырау мен соқырдың сөйлесуін еске салады.

Әлеуетті сатып алушы әдемі жарнамалық ролик көреді, реакция қалдырады немесе классикалық «Бағасы қанша?» деп жазады. Әрі қарай үш бөлімнен тұратын драма басталады:

  • I бөлім: «Ұзын мәтін және 15 мегабайттық файл»: Менеджер немесе қарапайым чат-бот клиентке бірден 20 сөйлемнен тұратын ұзын мәтін, PDF форматындағы прайс-парақ және барлық мессенджерлердің сілтемесін лақтырады. Клиент бұл кезде Абай бойындағы автобуста келе жатыр немесе Magnum-да кезекте тұр — оның оны оқуға уақыты жоқ. Ол диалогты жаба салады.
  • II бөлім: Пісіп-жетілудің табиғи циклін елемеу: Адамдарға уақыт керек. Тұтынушы 180 000 теңгелік күртешені дәл қазір сатып алу үшін емес, 10-күнгі жалақыға дейінгі бюджетін жоспарлау үшін сұрады. Бірақ сату бөлімінің көзінде 5 минут ішінде Kaspi Gold картасын шығармаған кез келген клиент «өлі лид» деп танылып, қоқысқа тасталады.
  • III бөлім: Жаппай спаммен қысу: Айдың соңында сату жоспары орындалмай жатқанда, агрессивті фоллоу-ап қосылады. Сәл үзіліс алған адам екі тәулікте үш хабарлама алады: «Сіз жауап бермедіңіз ғой?», «Акция бір сағаттан соң бітеді!», «Сізге қызық па?». Адамның реакциясы белгілі: ашулану, «Спам деп шағымдану» батырмасын басу және профильді бұғаттау.

Бірнеше ондаған пайдаланушы қысқа уақыт ішінде аккаунтқа шағымданғанда, Meta-ның антифрод алгоритмдері профильді улы контент тарататын көз ретінде белгілейді. Мұның салдары туралы біз Instagram бұғатталғандағы Cloud Run апаттық каталогы туралы мақаламызда жан-жақты жазғанбыз. Ал бүгінгі мақсат — апат салдарын жою емес, спам-сүзгілерге түсуді математикалық тұрғыдан мүмкін етпейтін мінсіз жүйе құру.

Meta Graph API спам-сүзгілері қалай жұмыс істейді: антифродтың ішкі құрылысы

Көптеген SMM мамандары Instagram спам-сүзгілерін «сағатына 50 хабарламадан артық жібермесең болды» деген қарапайым есептегіш деп қателеседі. Шын мәнінде, Meta Integrity Shield — бұл пайдаланушы мінез-құлқын нақты уақытта талдайтын көпдеңгейлі жүйе.

Meta Direct-ті бұғаттайтын үш негізгі триггер:

  1. Мәтіндік векторлар энтропиясы (Text Hashing & Repetition Rate): Егер сіз бірдей мәтінмен немесе тек атын өзгертіп («Сәлеметсіз бе, Әсел!», «Сәлеметсіз бе, Ерлан!») 100 хабарлама жіберсеңіз, мәтіннің эмбеддинг хэші 98%-ға сәйкес келеді. Meta үшін бұл спамның айқын белгісі. Хабарламалардың лексикалық энтропиясы жоғары және синтаксистік құрылымы бірегей болуы тиіс.
  2. 24 сағаттық диалог терезесін бұзу (Messaging Window Policy): Meta Messenger Platform API ережесі бойынша, бизнес тұтынушының соңғы жауабынан кейін тек 24 сағат ішінде хабарлама жібере алады. Екінші немесе үшінші күні арнайы рұқсат етілген тегтерсіз (мысалы, HUMAN_AGENT) жазу Meta App ID-нің біржола бұғатталуына әкеледі.
  3. Жағымсыз белгілер коэффициенті (Block & Report Velocity): Ең сезімтал көрсеткіш. Егер қайта жазылған хабарламаларды алғандардың 1.8%-дан астамы бір сағат ішінде «Бұғаттау» немесе «Шағымдану» батырмасын басса, аккаунт бірден көлеңкелі бұғатқа (Shadowban) түседі: хабарламалар «Сұраулар» қалтасына кетеді немесе мүлдем жеткізілмейді.

Google Cloud және Gemini 2.5 Flash негізіндегі ақылды жүйе архитектурасы

Клиенттердің ашуын туғызбайтын және Meta алгоритмдеріне ілінбейтін жүйе құру үшін OZAT инженерлері **Google Cloud Tasks** серверсіз кезектерін, **Cloud Firestore** дерекқорын және ниеттерді анықтайтын семантикалық оркестратор ретінде **Gemini 2.5 Flash** үлгісін пайдаланады.

Сәулет сұлбасы / Деректер ағыны (ASCII)
┌─────────────────────────┐       ┌────────────────────────┐       ┌────────────────────────┐
│  Instagram Webhook      │       │   Google Cloud Run     │       │   Cloud Firestore      │
│  (Кіріс Direct/Reels)   │ ────> │   (Fastify Gateway)    │ ────> │   - Context & History  │
│  Meta Verification HMAC │       │   JWT & Security Guard │       │   - Lead State Machine │
└─────────────────────────┘       └───────────┬────────────┘       └───────────┬────────────┘
                                              │                                │
                                              ▼                                ▼
┌─────────────────────────┐       ┌────────────────────────┐       ┌────────────────────────┐
│  Meta Graph API v21.0   │       │   Cloud Tasks Queue    │       │    Gemini 2.5 Flash    │
│  (Динамикалық Direct)   │ <──── │   - Poisson Delay      │ <──── │   - Intent Scoring     │
│  Human-Agent Tag        │       │   - Rate-Limit: 12 r/m │       │   - Hyper-Personalizer │
└─────────────────────────┘       └────────────────────────┘       └────────────────────────┘

1-сурет. Жасанды интеллект негізіндегі қауіпсіз Direct жүйесінің архитектурасы

Жұмыс конвейері төрт нақты кезеңнен тұрады:

  1. Дайындықты семантикалық бағалау (Intent & Urgency Scoring): Жазысу тоқтаған кезде Gemini 2.5 Flash алдыңғы диалогтың барлық мән-мәтінін талдайды. Модель клиенттің қай кезеңде тоқтағанын, қызығушылық деңгейін (0.0-ден 1.0-ге дейін) және қайта жазудың қажеттілігін анықтайды. Егер тұтынушы «қымбат» немесе «жай қарадым» десе, жүйе шағымдарды болдырмау үшін оған тиіспейді.
  2. Контекстік пайдалы себепті қалыптастыру (Value-First Hook): Дәстүрлі «ойландыңыз ба?» деген сұрақтар болмайды. Модель диалогтағы нақты детальге сүйенеді. Егер клиент Шымбұлаққа бару үшін күртешені сұраған болса: «Айдар, қайырлы күн! Айтпақшы, Шымбұлаққа арналған күрте туралы: бізге дәл қазір 20 000 мм су өткізбейтін мембрана келді, тауда суық тигізбейді. Егер қызық болса, қысқа видео түсіріп жіберейін».
  3. Пуассон үлестірімі бойынша уақытты кездейсоқ таңдау (Poisson Jitter): Meta Graph API сұраныстары роботтың біркелкі әрекетіне ұқсамас үшін Cloud Tasks хабарламалар арасындағы кідірісті Пуассон заңымен есептейді ($lambda = 180 ext{ сек} pm Delta(45 ext{–}120 ext{ сек})$). Трафик адамның нақты жұмысынан айнымайды.
  4. Human-Agent Tag арқылы 24 сағаттық шекті бақылау: 24 сағаттан асып кеткен диалогтар үшін жүйе қолдау қызметкері атынан 7 күнге дейін хабарлама жіберуге мүмкіндік беретін ресми HUMAN_AGENT тегін қолданады.

Инженерлік код: Контекст талдау сервисі және қауіпсіз диспетчер

Төменде Vertex AI / Gemini 2.5 Flash арқылы лидті бағалауға және бейімделген хабарлама жасауға жауап беретін TypeScript тіліндегі дайын production-сервис келтірілген.

import { GoogleGenAI, Type } from '@google/genai';

interface ChatMessage {
  sender: 'user' | 'business';
  text: string;
  timestamp: string;
}

interface FollowUpDecision {
  shouldFollowUp: boolean;
  leadScore: number;
  reason: string;
  suggestedMessageRu: string;
  suggestedMessageKz: string;
  preferredDelayMinutes: number;
}

export class SmartDirectFollowUpEngine {
  private ai: GoogleGenAI;

  constructor() {
    const apiKey = process.env.GEMINI_API_KEY;
    if (!apiKey) {
      throw new Error('GEMINI_API_KEY is mandatory for intent scoring');
    }
    this.ai = new GoogleGenAI({ apiKey });
  }

  public async evaluateLeadAndCraftHook(
    history: ChatMessage[],
    productCatalogContext: string
  ): Promise<FollowUpDecision> {
    const prompt = `
Сен — Principal AI Sales Engineer және қазақстандық e-commerce саласындағы сатып алушылар психологиясының сарапшысысың.
Instagram Direct-тегі тұтынушы мен жергілікті бизнес (Алматы/Астана) арасындағы диалог тарихын талда.

Өнімдер контексті:
${productCatalogContext}

Диалог тарихы:
${JSON.stringify(history, null, 2)}

Міндетің:
1. Сатып алуға дайындықты бағалау (leadScore 0.0-ден 1.0-ге дейін).
2. Қайта жазудың қауіпсіз екенін анықтау (shouldFollowUp). Егер тұтынушы нақты бас тартса немесе қарсылық білдірсе — shouldFollowUp = false.
3. Егер shouldFollowUp = true болса, пайдалы факті немесе детальді сұрайтын нәзік сұрақ құрастыру (қазақ және орыс тілдерінде).
ҚАТАҢ ТЫЙЫМ САЛЫНАДЫ: "ойландыңыз ба?", "есіңізге саламыз", "акция бітеді" деген тіркестер.
`;

    const response = await this.ai.models.generateContent({
      model: 'gemini-2.5-flash',
      contents: prompt,
      config: {
        temperature: 0.2,
        responseMimeType: 'application/json',
        responseSchema: {
          type: Type.OBJECT,
          properties: {
            shouldFollowUp: { type: Type.BOOLEAN },
            leadScore: { type: Type.NUMBER },
            reason: { type: Type.STRING },
            suggestedMessageRu: { type: Type.STRING },
            suggestedMessageKz: { type: Type.STRING },
            preferredDelayMinutes: { type: Type.INTEGER }
          },
          required: [
            'shouldFollowUp',
            'leadScore',
            'reason',
            'suggestedMessageRu',
            'suggestedMessageKz',
            'preferredDelayMinutes'
          ]
        }
      }
    });

    const parsed: FollowUpDecision = JSON.parse(response.text || '{}');
    return parsed;
  }
}

GitHub-тағы кодты көру (OZAT-kz)

Ал мынау — хабарламаларды Пуассон заңы бойынша кездейсоқ кідіріспен жіберетін Google Cloud Tasks диспетчері:

import { CloudTasksClient } from '@google-cloud/tasks';

interface TaskPayload {
  recipientId: string;
  messageText: string;
  tenantId: string;
}

export class DirectTaskDispatcher {
  private client: CloudTasksClient;
  private project: string;
  private queue: string;
  private location: string;

  constructor() {
    this.client = new CloudTasksClient();
    this.project = process.env.GOOGLE_CLOUD_PROJECT || 'ozatkz-prod';
    this.queue = 'meta-direct-rate-limiter';
    this.location = 'asia-southeast1';
  }

  private calculatePoissonDelaySeconds(lambdaMinutes: number): number {
    const uniform = Math.max(Math.random(), 0.0001);
    const exponentialMinutes = -Math.log(uniform) * lambdaMinutes;
    const boundedMinutes = Math.min(Math.max(exponentialMinutes, 45), 360);
    return Math.floor(boundedMinutes * 60);
  }

  public async scheduleSafeDirectMessage(payload: TaskPayload, meanDelayMinutes: number): Promise<string> {
    const parent = this.client.queuePath(this.project, this.location, this.queue);
    const delaySeconds = this.calculatePoissonDelaySeconds(meanDelayMinutes);
    const scheduleTimeSeconds = Math.floor(Date.now() / 1000) + delaySeconds;

    const task = {
      httpRequest: {
        httpMethod: 'POST' as const,
        url: `https://gateway-dot-${this.project}.${this.location}.run.app/api/v1/meta/dispatch`,
        headers: {
          'Content-Type': 'application/json',
          'X-Internal-Secret': process.env.INTERNAL_DISPATCH_SECRET || 'secret'
        },
        body: Buffer.from(JSON.stringify(payload)).toString('base64')
      },
      scheduleTime: {
        seconds: scheduleTimeSeconds
      }
    };

    const [response] = await this.client.createTask({ parent, task });
    return response.name || 'task-dispatched';
  }
}

GitHub-тағы кодты көру (OZAT-kz)

Тиімділік көрсеткіштері, FinOps және Қазақстандағы нәтижелер

Алматылық дизайнерлік киім және аяқ киім брендінің (Instagram-да 48 000 оқырман, орташа чек — 68 000 теңге) нақты нәтижелерін қарастырайық.

Бастапқы жағдай (Baseline, мамыр 2026):

  • Кіріс трафик: айына Direct-те басталған 1 450 диалог.
  • Қосымша хатсыз төлем конверсиясы: 3.1% (3.06 млн теңгеге 45 тапсырыс).
  • Менеджерлердің қолмен жазу әрекеті: +12 сату, бірақ 38 спам шағымы түсіп, аккаунт екі рет 48 сағатқа бұғатталды, жарнама босқа кетіп, 420 000 теңге шығын келтірді.

Gemini 2.5 Flash + Cloud Tasks енгізгеннен кейін (шілде 2026):

  • Қайта жанданған диалогтар конверсиясы: 1 390 үнсіз қалған лидтің ішінен скорер 540-ын тиімсіз деп алып тастады. Қалған 850 диалогқа жұмсақ хабарлама жіберілді. 294 адам жауап беріп, 108 қосымша тапсырыс жасады!
  • Конверсия өсімі: Сатуға дейінгі жалпы конверсия 3.1%-дан 10.5%-ға дейін өсті (+7.4 пайыздық тармақ немесе 3.3 еседен астам). Жарнама бюджетін арттырмай, қосымша таза табыс айына 7 344 000 теңгені құрады!
  • Аккаунт қауіпсіздігі: Екі ай үздіксіз жұмыс барысында — 0 бұғаттау. Шағымдар коэффициенті 2.6%-дан 0.04%-ға дейін төмендеді.

AI-жүйесін енгізуге дейінгі және кейінгі Direct конверсиясы мен табысы (млн ₸)

FinOps және Google Cloud шығындары:

  • 1 450 диалогты Gemini 2.5 Flash арқылы өңдеу: айына $0.18.
  • Google Cloud Tasks кезегі және Cloud Run: $0.22 (Free Tier аясында).
  • Жалпы инфрақұрылым шығыны: $0.50-дан аз (айына шамамен 250 теңге)!

OZAT Скауты үшін экономика: Ақылды Direct жүйесін енгізу — бизнеске сату үшін ең тиімді өнімдердің бірі:

  • Жүйені кілтке дейін орнату құны: 350 000 – 500 000 ₸.
  • Қайта жанданған мәмілелерден табыс үлесі (Success Fee): 10% (бұл кейсте бір клиенттен ай сайын 730 000 ₸ таза комиссия).

Шешімнің шынайы шектеулері мен архитектуралық компромисстері

  • Расталған Meta Business Manager қажеттілігі: HUMAN_AGENT тегін заңды пайдалану үшін бизнес Meta-да компания верификациясынан өтуі тиіс (БСН/ЖШС немесе ЖК құжаттарын ұсыну). Жеке аккаунттарда бұл мүмкіндік жұмыс істемейді.
  • Бір рет қана жазу ережесі (One-Strike Rule): Жүйе клиент жауап бермесе, екінші рет хабарлама жіберуге қатаң тыйым салады. Егер тұтынушы үнсіз қалса, диалог архивтеледі. Бұл спам түймесінің басылу қаупін жояды.
  • Жаппай акциялар кезіндегі кезек кідірісі: Meta Graph API шектеулеріне байланысты (минутына 200 сұранысқа дейін) Cloud Tasks лимиттерге ұрынбау үшін хабарламаларды бірнеше сағатқа созып жібереді.
  • Тілдік ерекшеліктер және код-свитчинг: Қазақстанда жазысулардың 60%-дан астамы қазақ және орыс тілдерінің қосындысымен жүреді («Сәлем, размер бар ма? Доставка қашан болады?»). Gemini промпты осы табиғи тілді қолдауы тиіс, әйтпесе хат бірден бот ретінде қабылданады.

Базаңызды шаблондық спаммен күйдіруді және жарнама бюджетін босқа шашуды тоқтатыңыз. Сауатты инженерлік тәсіл мен дәл AI-скоринг Direct-ті бизнесіңіздің ең табысты арнасына айналдырады.

Meta Graph API, Google Cloud Tasks және Gemini 2.5 Flash интеграциясын меңгеріп, бизнеске қымбат шешімдер сатқыңыз келе ме? OZAT Скауттар Академиясына қосылыңыз.

💡 ОЗАТ кеңесі: Енгізуге дайынсыз ба? Архитектура мен бюджетті Scope Builder арқылы есептеңіз немесе тегін ЖИ-аудиттен өтіңіз.

Рустам Шарафутдинов

Рустам Шарафутдинов

Инженерлік хаб авторы

Google Cloud архитектурасы саласындағы сарапшы және 15 жылдан астам тәжірибесі бар Senior Full-Stack әзірлеушісі. Ақауға төзімді архитектураларға, жоғары жүктемелі жобаларды оңтайландыруға және AI (Vertex AI) интеграциясына маманданған.

Сараптама: GCP, Kubernetes, Микросервистер, React, Node.js

Пікірлер (0)