Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Дубли #81

Open
romanenkosergio opened this issue Dec 5, 2018 · 4 comments
Open

Дубли #81

romanenkosergio opened this issue Dec 5, 2018 · 4 comments

Comments

@romanenkosergio
Copy link

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

@Smok07
Copy link
Contributor

Smok07 commented Jan 30, 2019

$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
Copy link

max-kut commented Jun 29, 2019

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

@godfathernn
Copy link

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

@max-kut
Copy link

max-kut commented Feb 19, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants