Coder Social home page Coder Social logo

andrey-tech / bitrix24-api-php Goto Github PK

View Code? Open in Web Editor NEW
84.0 11.0 27.0 386 KB

Обертка на PHP7+ для работы с REST API Битрикс24 с использованием механизма входящих вебхуков, троттлингом запросов к API и логированием в файл.

License: MIT License

PHP 100.00%
bitrix24 bitrix php api throttling logging webhook api-wrapper php7

bitrix24-api-php's People

Contributors

andrey-tech avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitrix24-api-php's Issues

Ограничение выдачи результата в методе fetchLeadList

Добрый день.
Получаю список лидов за вчерашний день методом fetchLeadList.
В ответе возвращается не более 50 лидов. Это заложено вашей библиотекой или это ограничение метода API Битрикса?
Можно ли его обойти?
Не нашел нигде свойства next или подобного.

Долгая доставка ответа при запросе

Добрый день.
Через вашу библиотеку получаю лиды из битрикса для сведения статистики.
Возникла проблема со временем. Очень долго получаю ответ, если делаю выборку за срок больше одного дня.

Например при запросе:
$generator = $bx24->fetchLeadList(array('>DATE_CREATE' => '2022-02-01T00:00:00', '<DATE_CREATE' => '2022-02-04T23:59:59'),array('TITLE','STATUS_ID'),array('DATE_CREATE'));

Время ответа занимает 1,5-2 минуты и в ответе лежит 160 лидов.

Получение справочника

Еще раз добрый день.
Пытаюсь получить список элементов справочника Источники (находится в лидах, существует по умолчанию - cid SOURCE_ID).

Пробовал по-разному, последний вариант вот такой. Но в ответ ничего.

  public function getBitrixReferences($reference)
  {
    try {
        $webhookURL = 'https://***/rest/20/97bcowzs8vinxzye/';
        $bx24 = new Bitrix24API($webhookURL);

        $bx24->http->debugLevel = HTTP::DEBUG_NONE;
        $bx24->http->throttle = 0.5;
        $bx24->http->curlTimeout = 30;

        $filter = [
          'ENTITY_ID' => 'SOURCE',
        ];

        $generator = $bx24->fetchList('crm.status.list',array(array('filter' => $filter)));

        $response = array();
        foreach ($generator as $refs) {
          foreach ($refs as $ref) {
            array_push($response,$ref);
          }
        }

    } catch (Bitrix24APIException $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    } catch (Exception $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    }

    return $response;
  }

Не направите? Что не так?

Загрузка файлов на диск

Добрый день.
Возможно ли как-то оптимизировать загрузку больших файлов на диск? У меня обучающие видео на примонтированном диске, которые нужно копировать в папку в битрикс, средним размером по 1,5 Гб.

как добавить телефон к контакту?

Приветствую, пробовал по разному добавить телефон и просто передать телефон в поле phone и массив:

$contactId = $bx24->addContact([
    'NAME'        => 'Иван',
    'SECOND_NAME' => 'Васильевич',
    'LAST_NAME'   => 'Петров',
    'HAS_PHONE'=>'Y',
    'PHONE'=> ["VALUE"=> "555888", "VALUE_TYPE" => "WORK"]
]);

и массив в массиве: [["VALUE"=> "555888", "VALUE_TYPE" => "WORK"]] , никак не выходит, так как же правильно передавать телефон контакту?

Поиск по массиву значений

Здравствуйте, как организовать поиск по массиву значений?

https://dev.1c-bitrix.ru/rest_help/crm/auxiliary/duplicates/crm_duplicate_findbycomm.php
В оф. документации есть такой метод, но позволяет по 20 элементов, что такое себе...

Может можно как то поиск организовать в батчи на = в фильтре? Или как лучше искать? Возможно ли как то проще с этой библиотекой?

Спасибо!

Консультация

Можно с Вами как-то связаться, по поводу использования библиотеки Bitrix24 API или консультации по улучшению своего скрипта?

Получение списка лидов

Добрый день.
Пытаюсь использовать Вашу библиотеку для формирования статистики получения лидов и сделок.
Застопорился практически в самом начале.

Пытаюсь получить список лидов, отфильтровав их по дате.

    try {
        $webhookURL = 'Webhook URL';
        $bx24 = new Bitrix24API($webhookURL);

        // Устанавливаем максимальный уровень вывода отладочных сообщений в STDOUT
        $bx24->http->debugLevel = HTTP::DEBUG_URL |  HTTP::DEBUG_HEADERS | HTTP::DEBUG_CONTENT;

        // Устанавливаем троттлинг запросов на уровне не более 1 запроса в 2 секунды
        $bx24->http->throttle = 0.5;

        // Устанавливаем таймаут обмена данными в 30 секунд
        $bx24->http->curlTimeout = 30;

        // Получаем компанию по ID
        $filter = array();
        $filter[htmlentities('>DATE_CREATE')] = date('Y-m-d\T00:00:00');
        $filter[htmlentities('<DATE_CREATE')] = date('Y-m-d\T23:59:59');

        $generator = $bx24->fetchLeadList($filter);
        foreach ($generator as $leads) {
            foreach($leads as $lead) {
              print_r($lead);
            }
        }

    } catch (Bitrix24APIException $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    } catch (Exception $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    }

В итоге получаю в ответе все лиды нашей CRM. Ничего не могу понять, что не так.

Warning при установке через composer: Ambiguous class resolution, "App\AppException"

Добрый день!

Спасибо за нормальную API к Битрикс24!

Есть и маленькая проблемка: При установке с помощью композера появляется предупреждение:
Warning: Ambiguous class resolution, "App\AppException" was found 2x: in "D:/L/OneDrive/Dev/MyWebSites/Profadmin/b24api.profadmin.ru.loc/vendor/andrey-tech/http-client-php/src/App/AppException.php" and "D:/L/OneDrive/Dev/MyWebSites/Profadmin/b24api.profadmin.ru.loc/vendor/andrey-tech/debug-logger-php/src/App\AppException.php", the first will be used.

Я так понимаю, для работы оно мешать не будет, но лучше бы пофиксить в будущих релизах.

Еще вопрос - планируется ли добавление методов для работы с лидами? Очень востребовано...

Работа со счетами (смарт процессами) (feature request)

Столкнулся с тем что нужны счета из сделки
в принципе если бы вы добавили то было бы круто там всего-то и делов
1 добавить класс для работы со счетами(а в принципе со смарт процессами)
2 в параметры добавить идентификатор процесса
image

Появится ли реквизиты в библиотеке?

Хочу поблагодарить за отличную проделанную работу. Документация и реализация на высшем уровнем!!!

Очень не хватает реквизитов,например создал компании и хочу прикрепить ИНН. Будет ли дорабатываться решение?

Спасибо Вам за труды! =)

Ошибка #77 curl после 300 запроса

Добрый день.
Для обновления контактов использую метод getContactsByPhone.
Контактов много и запросов приходится делать много. Но после 300 запроса вылетаю в ошибку
HTTP: Ошибка cURL #77 (https://bitrix.autocity-finance.ru/rest/20/**/crm.contact.list.json):

Предложение. Добавление методов работающих с информационными блоками Б24 (не CRM)

аналогично тикету по js обертке

Добрый день.
с модулем CRM и его методами все понятно - все работает...
но модуль этот в свою очередь 'собран/построен' из инфоблоков Б24 которые имеют свою структуру и свои методы - отличные от CRM...

в частности:

  1. по каталогу, catalog.product.list в результатах, отдается именованный объект products содержащий массив данных (в CRM сразу массив)
  2. сам синтаксис полей идет в нижнем регистре (в CRM в верхнем)

судя по всему (по состоянию на 2023 год) Б24 оптимизирует инфоблоки добавляя новые методы..., - для того же каталога пошла градация на
catalog.product.sku.list
catalog.product.offer.list
catalog.product.service.list
с оптимизацией запросов
...
развиваются короче куда-то

Просьба: - добавьте пожалуйста в PHP обертку функционал позволяющий работать с данными методами (не обязательно адресный в плане для каждого метода/сущности конкретный, можно просто в 'ядро'... не знаю как лучше)

ps
хотя если смотреть в целом:
1- модуль CRM это только частный случай в общей структуре данных Б24...
2- много людей уже используют Вашу обертку...
как поступить - переделать все или 'пофиксить' часть... - не знаю )))

Спасибо

Фильтрация списка

Добрый день.
Получаю с Вашей библиотекой список элементов из нужной категории. Полный список без проблем получаю.
Не понимаю, как получить список с набором фильтров (из блока поиска в списке).

Сейчас вывожу в бэк массив с элементами поиска:

Array
(
    [0] => stdClass Object
        (
            [attribute] => NAME
            [value] => рог
        )

)

Но не могу понять, как его добавить в общий сбор элементов:

        $webhookURL = 'https://bitrix.autocity-crm.ru/rest/20/***/';
        $bx24 = new Bitrix24API($webhookURL);

        $bx24->http->debugLevel = HTTP::DEBUG_NONE;
        $bx24->http->throttle = 0.5;
        $bx24->http->curlTimeout = 30;

        $generator = $bx24->getList(
                    'lists.element.get',
                    [ 'IBLOCK_ID' => 46, 'IBLOCK_TYPE_ID' => 'bitrix_processes' ]
                );

        $response = array();
        $total = 0;
        foreach ($generator as $els) {
          foreach ($els as $el) {
            $obj = (object)array();
            $obj->name  = $el['NAME'];
            $obj->sum   = $el['PROPERTY_273'];
            $total      += reset($obj->sum);
            array_push($response,$obj);
          }
        }

        $response['total'] = $total;

    } catch (Bitrix24APIException $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    } catch (Exception $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    }

Не поможете разобраться?

Работа с методом getContactsByPhone

Добрый день.

Пробую методом getContactsByPhone получить контакт,
но возвращается пустой массив:

    try {
      $webhookURL = 'https://***/rest/20/***/';
      $bx24 = new Bitrix24API($webhookURL);

      $contacts = $bx24->getContactsByPhone($clientPhone,['ID','NAME']);

      print_r($contacts);

    } catch (Bitrix24APIException $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    } catch (Exception $e) {
        printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
    }

Проверяю тот же номер в Битриксе, есть клиент.

Ошибка при установке версии 1.5

Добрый день!
При чистой первоначальной установке версии 1.5 - не находит пакет:

>composer require andrey-tech/bitrix24-api-php:"^1.5"

[InvalidArgumentException]
  Could not find package andrey-tech/bitrix24-api-php in a version matching ^1.5

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.