Scalanie kontaktów po e-mailu - API
Aplikacja uruchamia flow o kodzie crm_contacts_merge_1 (kind crm/contacts_merge) i zapisuje wyniki do bazy Noe crm-contacts-merge. Wszystko jest dostępne przez standardowe API Intum, więc podgląd i scalanie można zlecać także z zewnątrz (np. cyklicznie po dużym imporcie). Autoryzacja: Authorization: Bearer TOKEN z uprawnieniem do flow (flows) i baz Noe.
Powtórzone kontakty w koncie (na żywo)
GET /crm/contacts/duplicates.json?limit=50
Bieżący stan duplikatów bez uruchamiania przebiegu - ten endpoint zasila panel “Powtórzone kontakty w koncie” na górze aplikacji. Odpowiedź:
{ "groups": 12, "contacts": 27, "top": [ { "email": "jan@firma.pl", "count": 3, "contacts": [ { "id": 1, "name": "Jan Kowalski", "email": "jan@firma.pl", "phone": "600100200", "external_id": "erp-77", "client_id": 5, "client_name": "Firma Sp. z o.o." } ] } ] }
groups to liczba adresów z powtórzeniami, contacts - łączna liczba kontaktów pod nimi. top zawiera najczęściej powtórzone adresy (malejąco po count) ze skrótami kontaktów. limit domyślnie i maksymalnie 50.
Powtórzone e-maile w klientach (na żywo)
GET /crm/clients/duplicates.json?limit=50
Analogiczny endpoint dla klientów - zasila panel “Powtórzone e-maile w klientach”. Panel jest informacyjny, scalania klientów przez ten endpoint nie ma (klientów łączy się ręcznie na liście). Odpowiedź:
{ "groups": 4, "clients": 9, "top": [ { "email": "biuro@firma.pl", "count": 3, "clients": [ { "id": 11, "name": "Firma Sp. z o.o.", "email": "biuro@firma.pl", "phone": "600100200", "external_id": "erp-11" } ] } ] }
limit domyślnie i maksymalnie 50.
Uruchomienie przebiegu
POST /connect/flows/:flow_id/start.json
Content-Type: application/json
{
"mode": "preview",
"merge_name_conflicts": false,
"merge_external_id_conflicts": false,
"max_groups": 20,
"emails": ["jan@firma.pl", "anna@biuro.pl"]
}
| Pole | Wymagane | Opis |
|---|---|---|
mode |
tak |
preview (nic nie zapisuje w CRM) albo merge
|
merge_name_conflicts |
nie | scalaj też grupy z różnymi nazwiskami (default false) |
merge_external_id_conflicts |
nie | wchłaniaj też kontakty z external_id (default false) |
max_groups |
nie | limit grup w jednym przebiegu; pominięte grupy nie liczą się do limitu |
emails |
nie | tylko wskazane adresy (tak działa “Scal zaznaczone”) |
flow_id pobierzesz z GET /connect/flows.json?code=crm_contacts_merge_1. Odpowiedź startu zawiera flow_process.id.
Postęp
GET /connect/flow_processes/:id.json
W config.status_details: stage (running / finished / error), run_id, processed, total_groups, merged, previewed, skipped, errors, removed_contacts, stats, error (przy błędzie, np. gdy inny przebieg jeszcze trwa).
Wyniki w bazie Noe crm-contacts-merge
GET /noe/dbs/crm-contacts-merge/search.json?table_name=runs&sort=-id&limit=30
GET /noe/dbs/crm-contacts-merge/search.json?table_name=groups&filter[run_id]=RUN_ID&filter[status]=preview&limit=100&offset=0
GET /noe/dbs/crm-contacts-merge/search.json?table_name=logs&filter[run_id]=RUN_ID
-
runs- jeden rekord na przebieg:mode,status(running/finished/error),flow_process_id,user_name, flagi,max_groups,emails_count,total_groups,stats,errors_count,started_at,finished_at,error -
groups- jedna grupa e-mail:run_id,email,status(preview,merged,skipped_name,skipped_external_id,error),master/absorbed/kept(skróty kontaktów:id,name,email,phone,external_id,client_id,client_name),conflict_names,lost_external_ids,merged_emails,merged_phones(dodatkowe adresy i telefony zfields.mergedkontaktu głównego),message -
logs-run_id,level(info/error),message,email
Wyniki starsze niż 30 dni są kasowane przy starcie kolejnego przebiegu. Historia scalenia zostaje w polach merged kontaktu głównego (GET /crm/contacts/:id.json).