dotzero / amocrm-php

:sparkles: Удобный и быстрый клиент для работы с API amoCRM
https://dotzero.github.io/amocrm-php/
MIT License
221 stars 109 forks source link

Дубли #81

Open romanenkosergio opened 5 years ago

romanenkosergio commented 5 years ago

Подскажите пожалуйста, как избавится от дублей. Необходимо сделать фильтр по номеру телефона(касмотное поле получается) и если такое контакт уже создан, то обновить его

Smok07 commented 5 years ago
$this->_contact = $this->_amo->contact->apiList([
    'query' => +123456789,
    'limit_rows' => 1
]);

если найдет контакт значит можно обновлять

$contact = $this->_amo->contact;
$contact['phone'] = +123456789;
$contact->addCustomField( $this->_field_phone, [[ $this->_phone, 'WORK']] );
$contact->apiUpdate((int)$this->_contact['id']);
max-kut commented 5 years ago

1) вырезаешь из телефона код страны (+79995551122 и 89995551122 - разные номера для системы) - ищешь по query=9995551122 2) полученный массив результатов проверяешь на соответствие поля телефона (именно поле телефона), т.к. поиск исуществляется по всем полям и с низкой долей вероятности (на основе моей практики) может прилететь несколько результатов, где искомый номер будет не в поле телефона. 3) если после второго шага есть результат - обновляешь его (при необходимости), если результатов нет - создаешь контакт

godfathernn commented 4 years ago

Подскажите, пожалуйста, что именно нужно добавить в код чтобы была проверка существует ли контакт с указанным номером телефона? Код выше у мня не работает. Добавляю с помощью $contact->addCustomField(245689, $_POST['phone'], 'WORK');

max-kut commented 4 years ago

Алгоритм такой 0> пришла заявка 1> делаешь запрос списка контактов $amoContacts = $amoClient->contact->apiList(['query'=>'9612211333']). В ответ тебе придет массив контактов (или пустой), у которых в ЛЮБОМ (!) поле есть искомое значение (чаще всего телефон, но не обязательно, может быть любое поле, например с каким-либо идентификатором внешнеей системы) 2> фильтруешь полученные результаты на соответствие именно поискового значения по полю телефона 3> (не обязательно) можешь повторить шаги 1-2 для любого другого поля (емейл, идентификатор клиента и т.д.) 4> если после фильтра контакт найден - запоминаешь его идентификатор, обновляешь поля, если надо 5> если контакт не найден - создаешь новый 6> ... (следующие действия - добавить примечание, задачу, сделку ...)