amocrm-php icon indicating copy to clipboard operation
amocrm-php copied to clipboard

Дубли

Open romanenkosergio opened this issue 7 years ago • 4 comments

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

romanenkosergio avatar Dec 05 '18 11:12 romanenkosergio

$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']);

Smok07 avatar Jan 30 '19 16:01 Smok07

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

max-kut avatar Jun 29 '19 14:06 max-kut

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

godfathernn avatar Dec 15 '19 18:12 godfathernn

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

max-kut avatar Feb 19 '20 06:02 max-kut