Как использовать API Bitrix для фильтрации контактов с использованием нескольких значений для одного ключа?

#javascript #bitrix

Вопрос:

Я пытаюсь вернуть список контактов, которые могли бы соответствовать нескольким значениям «ТЕЛЕФОН». Прямо сейчас я могу получить список, который соответствует одному значению телефона, но не массиву значений телефона. Вот что у меня есть:

 let contactList = await bitrix.call('crm.contact.list', {
        "filter": {
            "PHONE": phoneArray,    //example ["1112223344","5556651234"]
        },
        "select": ["*","EMAIL","PHONE"]
    });
 

Я основываю это на их документации по API, в которой показано, как сопоставить одно значение телефона здесь

Я также нашел еще одну статью, в которой упоминается использование «ЛОГИКИ»:»ИЛИ» в фильтре, который потенциально может работать. Он написан на PHP, поэтому я не совсем уверен, как он переводится на javascript.

Ответ №1:

Вы можете использовать crm.duplicate.findbycomm (https://training.bitrix24.com/rest_help/crm/auxiliary/duplicates/crm.duplicate.findbycomm.php):

 BX24.callMethod(
    "crm.duplicate.findbycomm", 
    {
        entity_type: "CONTACT",
        type: "PHONE",
        values: [ "8976543", "11223355" ],
    }, 
    function(result) 
    {
         if(result.error())
              console.error(result.error());
         else
         {
              console.dir(result.data());          
         }
    }
);
 

но есть и ограничения:

Массив, содержащий до 20 электронных писем или телефонных номеров

Может быть, он будет использовать пакетное (https://training.bitrix24.com/rest_help/js_library/rest/callBatch.php)

К сожалению crm.contact.list , не удается сопоставить несколько значений «ТЕЛЕФОН»

Комментарии:

1. Мне не нужно превышать лимит в 20 адресов электронной почты/телефонных номеров, так что это должно быть идеально. Спасибо!

2. Я, наконец, приступаю к реализации этого ответа, и кажется, что api ищет только точные совпадения для телефона. Если я дам параметру «значения» массив частичных телефонных номеров (пример [«123456″,»1234567»]) есть ли способ вернуть частичные совпадения CRM?

3. @thefastlane, похоже, нет