Przejdź do treści
Intum

Scalanie zdublowanych kontaktów po adresie e-mail

Aktualizacja: Wyświetleń: 579 5 min czytania

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 z fields.merged kontaktu 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).