Tok rada: WhatsApp → Lid / Podrška
Uključeni moduli: WhatsApp (Inbox · Botovi · Kampanje · Šabloni) · WhatsApp API (Obaveštenja o događajima) · Lidovi · Tiketi · Marketinška automatizacija
Ko ga koristi: Prodaja · Korisnička podrška · Marketing
Tipično trajanje: U realnom vremenu (dolazne poruke) + ciklus kampanje (jednokratne/periodične)
Pregled
CRMConnect ima tri različita WhatsApp modula sa potpuno različitim svrhama:
| Modul | Svrha | Zahteva Meta API? |
|---|---|---|
whatsapp |
Dvosmeran inbox, botovi, masovne kampanje, auto-lid | Da — kompletno podešavanje |
whatsapp_api |
Odlazna obaveštenja na CRM događaje (kreiran lid, faktura, tiket, itd.) | Da — deljeni akreditivi |
whatsapp_chat |
Ugrađeni widget za klik-na-čet (HTML snippet treće strane) | Ne — bez sopstvenog API-ja |
Ovaj tok rada pokriva glavni whatsapp modul (inbox + auto-lid + botovi + kampanje) i whatsapp_api (obaveštenja o događajima).
Napomena: Automatsko kreiranje tiketa iz WhatsApp razgovora je delimično implementirano (AI prikuplja podatke, ali insert u
tblticketsnedostaje iz koda). Tikete ručno kreiraju zaposleni iz interfejsa za čet.
Dijagram toka
[PODEŠAVANJE — admin, samo jednom]
│
├── Meta App + WhatsApp Business nalog konfigurisan
├── Webhook registrovan kod Meta: {site_url}/whatsapp/webhook/getdata
├── Broj telefona povezan u WhatsApp → Brojevi
├── Šabloni učitani iz Meta (ručna sinhronizacija ili cron na sat)
└── Auto-lid omogućen (opciono): whatsapp_auto_lead_settings = 'enable'
│
↓
[DOLAZNA PORUKA]
│
├── Meta šalje webhook POST na /whatsapp/webhook/getdata
├── Sistem pretražuje broj u: lidovima → kontaktima → zaposlenima
│
├── BROJ IDENTIFIKOVAN → mapira razgovor na postojeći zapis
│ rel_type = 'leads' / 'contacts' / 'staff'
│
└── NEPOZNAT BROJ:
├── auto_lead OMOGUĆEN → automatski kreira Lid
│ status = whatsapp_lead_status
│ izvor = whatsapp_lead_source
│ dodeljen = whatsapp_lead_assigned
│ rel_type = 'leads'
│
└── auto_lead ONEMOGUĆEN (podrazumevano) → rel_type = 'general'
zaposleni vidi razgovor kao nepoznat u inboxu
│
↓
[BOT (ako je aktivan)]
│
├── BotHandler::processBots() procenjuje SVE aktivne botove
├── Podudaranje okidača → šalje automatski odgovor (tekst / šablon / meni / AI)
└── Nema podudaranja → poruka ostaje u inboxu za ručni odgovor
│
↓
[ODGOVOR ZAPOSLENOG / ESKALACIJA]
│
├── Zaposleni otvara /admin/whatsapp → inbox
├── Vidi razgovore grupisane: identifikovani (lid/kontakt) + opšti
├── Odgovara direktno ili koristi Brze odgovore
└── Ručno kreira tiket iz razgovora (ako podrška to zahteva)
│
↓
[MASOVNA KAMPANJA (odvojen tok)]
│
├── Kreiran odobreni Meta šablon
├── Nova kampanja: tip (jednokratna/periodična/prilagođena), primaoci, broj pošiljaoca
├── send_now=1 ili planirano scheduled_send_time
└── Cron izvršava slanje → status po primaocu: neuspešno(0) / uspešno(2) / nevažeće(3)
│
↓
[OBAVEŠTENJA O DOGAĐAJIMA — modul whatsapp_api]
│
├── Kreiran lid → šablon mapiran na kategoriju 'leads' šalje se automatski
├── Kreiran tiket → šablon mapiran na 'ticket' šalje se automatski
├── Dodata faktura → šablon mapiran na 'invoice'
└── Evidentirana uplata → šablon mapiran na after_payment_added
[RAZGOVOR ZATVOREN / LID KVALIFIKOVAN ✓]
Korak po korak
1. Podešavanje Meta + veza (admin)
Gde: /admin/whatsapp → Podešavanja → kartica Veza
Uslov: Sva polja ispod su dostupna samo za is_admin() — obično osoblje nema pristup.
| Polje / Opcija | Opis |
|---|---|
whatsapp_business_id |
Meta Business ID (iz Meta Business Suite) |
whatsapp_business_account_id |
WABA ID (WhatsApp Business nalog) |
whatsapp_access_token |
Trajni token sistemskog korisnika (ne privremeni korisnički token) |
whatsapp_webhook_token |
Bilo koji string po vašem izboru — koristi se za Meta verifikaciju webhook-a |
whatsapp_meta_app_id |
ID aplikacije iz Meta for Developers |
whatsapp_meta_app_secret |
App Secret iz Meta for Developers |
URL webhook-a za registraciju kod Meta:
{site_url}/whatsapp/webhook/getdata
Potrebne Meta pretplate: messages + message_status_updates.
Brojevi telefona: nakon povezivanja akreditiva, brojevi se dodaju u WhatsApp → Brojevi (putem OAuth-a ili ručno). Postavite jedan broj kao podrazumevani za odlazne poruke.
Šabloni: WhatsApp → Šabloni → Učitaj šablone (sinhronizuje sa Meta). Cron automatski osvežava na sat.
2. Konfiguracija auto-lida (opciono)
Gde: /admin/whatsapp → Podešavanja → kartica Auto Lid
| Opcija | Opis |
|---|---|
whatsapp_auto_lead_settings |
'enable' aktivira automatsko kreiranje · 'disable' (podrazumevano) deaktivira |
whatsapp_lead_status |
ID statusa lida (iz /admin/leads_status) postavlja se pri kreiranju |
whatsapp_lead_source |
ID izvora lida (iz /admin/leads_sources) postavlja se pri kreiranju |
whatsapp_lead_assigned |
staffid zaposlenog kome se lid automatski dodeljuje |
Tok identifikacije broja (po redosledu):
- Pretraga u
tblleads.phonenumber(normalizovano bez nenumeričkih znakova) - Pretraga u
tblcontacts.phonenumber - Pretraga u
tblstaff.phonenumber - Nema podudaranja → kreiranje lida (ako je auto_lead omogućen) ili ostaje kao
general
3. Konfiguracija bota (opciono)
Gde: /admin/whatsapp → Botovi → Novi bot
Tipovi okidača (reply_type):
| Vrednost | Okidač |
|---|---|
1 |
Tačno podudaranje poruke sa ključnom rečju trigger |
2 |
Poruka sadrži ključnu reč trigger |
3 |
Prva poruka u istoriji razgovora |
4 |
Podudaranje ključnih reči (uključujući sinonime) |
5 |
Poruka u toku radnog vremena (trigger = "09:00-17:00") |
6 |
Poruka van radnog vremena |
7 |
Prva poruka u tekućoj sesiji (prozor od 24h) |
8 |
Korisnik neaktivan X minuta |
9 |
Korisnik zahteva živog agenta |
10 |
Podudaranje sinonima |
11 |
Podsetnik za istek razgovora |
12 |
Nema odgovora zaposlenog X minuta |
13 |
Razgovor zatvoren + zahtev za ocenu |
Tipovi odgovora (bot_type):
| Vrednost | Odgovor |
|---|---|
1 |
Običan tekst |
2 |
Odobreni Meta šablon |
3 |
Meni liste (višestepeni, stanje se čuva u interaction_menu_state) |
4 |
Bot toka (JSON graf čvorova u flow_data) |
5 |
Medijski fajl |
6 |
GPS lokacija |
7 |
Interaktivna dugmad |
11 |
Kontaktna kartica |
12 |
AI odgovor (OpenAI / Gemini — zahteva konfigurisani API ključ) |
13 |
Ocena zvezdama |
Konfiguracija AI (za bot_type=12):
Gde: Podešavanja → kartica AI: izaberite provajdera (openai/gemini), unesite API ključ, postavite whatsapp_openai_status:
auto= AI automatski odgovara na sve poruke koje nemaju podudaranje na drugim botovimamanual= AI generiše predlog odgovora vidljiv zaposlenima, ali ne šalje automatski
4. Inbox i ručni odgovor
Gde: /admin/whatsapp (zahteva dozvolu whatsapp_chat → view)
Razgovori su grupisani po rel_type:
leads— razgovori povezani sa lidovimacontacts— razgovori povezani sa kontaktimastaff— razgovori sa zaposlenimageneral— neidentifikovani brojevi (auto_lead onemogućen)
Zaposleni mogu:
- Odgovoriti tekstom, fajlovima, Brzim odgovorima (
tblquick_replies) - Dodeliti razgovor drugom zaposlenom
- Ručno kreirati Tiket iz interfejsa (tiket se NE kreira automatski)
- Pregledati kompletnu istoriju poruka (
tblwhatsapp_interaction_messages)
5. Masovne kampanje
Gde: /admin/whatsapp → Kampanje → Nova kampanja
Preduslovi:
- Odobreni Meta šablon (
status = 'APPROVED'utblwhatsapp_interaction_templates) - Barem jedan konfigurisani broj telefona
Polja kampanje:
| Polje | Opis |
|---|---|
name |
Naziv kampanje |
rel_type |
Primaoci: leads · contacts · whatsapp_groups · whatsapp_contacts |
template_id |
Odobreni Meta šablon |
number_id |
Broj pošiljaoca (iz tblwhatsapp_numbers) |
campaign_type |
onetime · recurring · custom |
auto_reminder_days |
Dani između slanja (za recurring) |
scheduled_send_time |
Planirani datum/vreme |
send_now |
1 = pošalji odmah pri izvršavanju crona |
Statusi po primaocu (tblwhatsapp_campaign_data):
status |
Značenje |
|---|---|
0 |
Neuspešno (greška API-ja) |
2 |
Uspešno — poruka poslata |
3 |
Nevažeći broj |
Statusi isporuke (message_status): sent → delivered → read
Napomena: Kampanje izvršava cron, ne odmah. Ako CRM cron ne radi, planirane kampanje se ne šalju.
6. Automatska obaveštenja o CRM događajima (modul whatsapp_api)
Gde: /admin/whatsapp_api → Mapiranje šablona
Modul whatsapp_api se aktivira nezavisno od inboxa, na osnovu hook-ova:
| CRM Hook | Kategorija šablona |
|---|---|
lead_created |
leads |
web_to_lead_form_submitted |
leads |
contact_created |
contacts |
after_invoice_added |
invoice |
after_add_task |
task |
after_add_project |
project |
proposal_created |
proposal |
after_payment_added |
payment |
ticket_created |
ticket |
after_cron_run |
Planirani podsetnici |
Konfiguracija po obaveštenju:
- Sinhronizujte šablone: WhatsApp API → Šabloni → Učitaj
- Kreirajte mapiranje: WhatsApp API → Mapiranje šablona → Dodaj
- Odaberite šablon + kategoriju +
send_to(kontakt / lid / zaposleni) + parametre zaglavlja/tela/podnožja
Modul whatsapp_api deli Meta akreditive sa modulom whatsapp (isti access_token i phone_number_id), ali ih čuva odvojeno u sopstvenim opcijama.
Potrebne dozvole
| Dozvola | Pristup |
|---|---|
whatsapp_chat → view |
Pristup inboxu (čitanje + slanje poruka) |
whatsapp_bot → view/create/edit/delete |
Upravljanje botovima |
whatsapp_template → view / load_template |
Pregled i sinhronizacija šablona |
whatsapp_campaign → view/create/edit/delete |
Upravljanje kampanjama |
whatsapp_numbers → view/edit |
Pregled/izmena brojeva |
whatsapp_contacts → view/create/edit/delete |
Upravljanje WhatsApp kontaktima |
whatsapp_groups → view/create/edit/delete |
Upravljanje grupama |
whatsapp_log_activity → view/clear_log |
Pregled loga aktivnosti API-ja |
quickreplies → view/create/edit/delete |
Brzi odgovori |
| Podešavanja veze (Meta akreditivi) | Isključivo is_admin() |
| Podešavanja WhatsApp Chat vidžeta | Isključivo is_admin() |
Česte greške
| Problem | Uzrok | Rešenje |
|---|---|---|
| Meta webhook ne prima poruke | Netačan URL ili nepodudarajući token | Proverite da je {site_url}/whatsapp/webhook/getdata javno dostupan i da se token podudara |
| Lidovi se ne kreiraju automatski | whatsapp_auto_lead_settings je 'disable' (podrazumevano) |
Eksplicitno omogućite iz Podešavanja → Auto Lid |
| Bot ne odgovara | is_bot_active = 0 ili okidač se ne podudara |
Omogućite bota i proverite uslov okidača (tačno podudaranje vs. sadrži) |
| Kampanja nije poslata u zakazano vreme | CRM cron ne radi | Proverite /admin/misc/cron_jobs — cron mora biti aktivan |
| Šablon se ne pojavljuje u kampanji | Status u Meta nije APPROVED |
Proverite status u Meta Business Manageru; ponovo učitajte šablone |
Obaveštenja whatsapp_api se ne šalju |
phone_number_id nije postavljen u modulu whatsapp_api |
Konfigurišite akreditive odvojeno u WhatsApp API → Podešavanja |
| Tiket nije kreiran iz razgovora | Automatsko kreiranje nije implementirano | Zaposleni mora ručno da kreira tiket iz interfejsa za čet |
Reference modula
- WhatsApp — dokumentacija glavnog modula
- Lidovi — automatski kreirani lidovi
- Tiketi — ručno kreiranje tiketa
- Marketinške kampanje — email kampanje (odvojeno od WA)