Ответы пользователя по тегу API
  • Есть ли в возможность встраиваться в интерфейс битрикс 24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    есть ли возможность выводить кнопки ссылки в интерфейсе?


    В облачной версии вы имеете возможность встраиваться только туда где это разрешено системой.
    Полный список доступных мест встройки доступен в документации.

    В коробочной версии вы вольны изменять любой инструмент (но не без последствий). Например добавить кнопку в указанное место вы можете воспользовавшись отложенными функциями.
    Ответ написан
    Комментировать
  • Как зарезервировать переговорную комнату через API в Битрикс24 (коробка)?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Я не уверен в корректности данного решения, так как мало работаю с облаком и REST, однако вы можете попробовать метод calendar.event.add с использованием параметров is_meeting и location
    Ответ написан
  • Как отловить событие onCrmCompanyAdd в Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Примечание к коду ниже: если ИНН у вас поле компании (пользовательское, UF_*), то в методе handleCompanyAdd следует проверить его на уникальность и уже выполнить нужное вам действие.
    Если ИНН это поле реквизитов, то зарегистрировать агента, так как на момент создания компании реквизиты еще могут быть не сохранены.

    /**
     * Получаем объект менеджера событий.
     * Нужен для подписки на событие
     * @var Main\EventManager
     */
    $eventManager = \Bitrix\Main\EventManager::getInstance();
    
    /**
     * Подписка на событие "после создании компании"
     * постфикс Compatible нужен потому что событие из старого ядра 
     */
    $eventManager->addEventHandlerCompatible(
    	"crm",
    	"OnAfterCrmCompanyAdd",
    	[
    		CompanyHandler::class,
    		"handleCompanyAdd"
    	]
    );
    
    class CompanyHandler
    {
    	/**
    	 * Обработчик события crm::OnAfterCrmCompanyAdd
    	 * @param array &$arFields 
    	 * @return boolean
    	 */
    	public static function handleCompanyAdd( &$arFields )
    	{
    		/**
    		 * Тут создаешь агента для этой компании
    		 * См. примечание
    		 */
    		return true;
    	}
    }
    Ответ написан
  • Как в битриксе можно сделать запрос по задачкам?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Через REST выполнить такой запрос нельзя, т.к. в REST отсутствует сложная логика фильтрации.
    Для данного действия необходимо использовать batch запрос с тремя запросами внутри.
    Ответ написан
  • Как добавить свой js код в интерфейс облачного Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Все встраивание происходит исключительно в подключаемом iframe.
    В этой области вы можете делать практически все что угодно, но выйти за пределы области (из поля в карточку CRM) вы не можете.

    Т.е. изменить карточку сделки - нельзя
    Ответ написан
    Комментировать
  • Как получить все сделки в Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Если вас интересует выгрузка большого объема данных, то метод с start не самая лучшая идея.
    Битрикс описал в своей мануале как это лучше сделать (вместе с замерами производительности):
    https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php
    Ответ написан
    Комментировать
  • Как можно выгрузить из коробки Битрикс данные сделок и лидов в формате json?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Есть ли возможность выгрузить массив этих данных, сохраняя связи, используя методы АПИ Битрикс?


    Есть ли API для получения списка лидов, сделок и т.п.? Да, есть
    Есть ли выгружающее API? Нет.

    Либо проще сразу писать sql запрос, получать массив и уже работать с ним ?

    Длинный получиться запрос, ведь только чтобы выгрузить задачу без комментариев, но в треками времени, историей, пользователями потребуется минимум 5 таблиц использовать, а в CRM это еще больше.
    Ответ написан
    Комментировать
  • Из за чего возникает ошибка Internal server error при попытке отправить POST через CURL для оплаты частями от Privat Bank?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Окей.

    'partsCount' => 5,

    partsCount Integer notNull, min=2, max=25 Количество частей на которые делится сумма транзакции (Для заключения кредитного договора) Должно быть > 1.


    'amount' => 2,
    amount Да Double notNull, Min=300, Max=50 000 Окончательная сумма покупки

    Минимальная сумма 300, у вас 2.
    Далее, вы хотите чтобы 2 разделилось каким-то образом на 5?
    Правильно ли я понимаю, что вы хотите чтобы пользователь провел 5 транзакций по 40 копеек?

    Кроме того - у тебя еще и ошибка в сигнатуре:
    'signature' => base64_encode ( SHA1 ( '75bef16bfdce4d0e9c0ad5a19b9940df'.'4AAD1369CF734B64B70F'.'12211212121'.' 200'.' 5'.' PP'.'https://adsasd'.'https://saddsa'.' test1200'.' 75bef16bfdce4d0e9c0ad5a19b9940df' ))

    Если внимательно посмотришь - у тебя пробелы перед 200, 5 и PP стоят.
    Далее: у тебя есть параметр 'recipientId', который ты передаешь, но в хеш-сумме он остутствует, а по правилам должен быть. Либо убирай, либо добавляй в формирование.

    Поделаешь то что нужно и получишь другую ошибку:
    Array
    (
        [orderId] => 12211212121
        [signature] => +JYghcAp9oIQq3xR/Zn1PftEvQ8=
        [state] => FAIL
        [message] => bad value: Scheme not found for given store
        [storeId] => 4AAD1369CF734B64B70F
    )


    Но это все потому, что scheme - это Идентификатор схемы. Выделяется Банком. По умолчанию не передается.

    Удаляешь его и получаешь заветное:
    Array
    (
        [orderId] => 12211212121
        [signature] => S4cN/oBUIIJeHlcJgTTM+gcZddQ=
        [state] => FAIL
        [message] => bad value: Payment with sent orderId already exists
        [storeId] => 4AAD1369CF734B64B70F
    )


    А это потому, что кто-то уже прогнал твой запрос через api или через веб-морду. Меняешь orderid и получаешь заветное:
    Array
    (
        [orderId] => fdsa1
        [signature] => x2m4GaLFv3ptcxZLynRzwuy/t5g=
        [token] => ADFEDB2FB0C7485CB968148D4BFD6B5A
        [state] => SUCCESS
        [storeId] => 4AAD1369CF734B64B70F
    )
    Ответ написан
    1 комментарий
  • Какой синтаксис вебхука Bitrix содержащего array?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вы неверно трактовали документацию к соответствующему веб-хуку (task.commentitem.add).

    Ваш запрос на самом деле должен выглядеть так:
    /task.commentitem.add/?TASKID=xxx&FIELDS[POST_MESSAGE]=HELLO

    И никаких фигурных скобок как вы видите там нет, а единственный Array который там есть - это один ключ в FIELDS.
    Ответ написан
  • Как правильно задать параметры в REST API Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Например вот так:

    $queryUrl = 'https://***.bitrix24.ru/rest/161/***/crm.duplicate.findbycomm/';
    
    $order_shipping_phone = [
    	'89032365544'
    ];
    
    $queryData = [
    	'type'        => 'PHONE',
    	'values'      => $order_shipping_phone,
    	'entity_type' => 'CONTACT'
    ];
    
    $curl = curl_init();
    
    \curl_setopt_array(
    	$curl,
    	[
    		CURLOPT_SSL_VERIFYPEER => false,
    		CURLOPT_POST => true,
    		CURLOPT_HEADER => false,
    		CURLOPT_RETURNTRANSFER => true,
    		CURLOPT_URL => $queryUrl,
    		CURLOPT_POSTFIELDS => http_build_query($queryData)
    	]
    );
    
    $result = curl_exec($curl);
    curl_close($curl);
    
    var_dump($result);
    Ответ написан
    Комментировать
  • Как передать REST API параметр типа Integer?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Вы не правильно составляете запрос. Вы посылаете не TASKID = 2, а структуру из content которая содежит json от http_build_query и уже нужного массива.

    Замените:
    $data = array('TASKID' => $number);
    $curl_post_data = array(
        'content' => http_build_query($data)
    );
    $curl_post_data = json_encode($curl_post_data);


    На:
    $curl_post_data = array('TASKID' => $number);
    Ответ написан
    Комментировать
  • Как реализовать сервис уведомлений внутри Интранет сети?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Мне кажется, что вопрос изначально стоит не в том чтобы написать свой сервис, а в том чтобы отправить соответствующие уведомления.
    Опять же, уведомления отправляются куда-то - например в приложение или на почту, но тогда у всех сотрудников должно быть.
    А что есть в увсех сотрудников, которые работают на таком большом предприятии? Правильно - почта.

    В чем преимущества использовании почты перед остальными вариантами?
    1) Она есть у всех офисных сотрудников.
    2) Она кроссплатформенная. Т.е. и Android, iOS, Windows, Mac etc
    3) Она уже сохраняет отправленные уведомления (не нужно заботиться о хранении, т.к. всегда знаем кто, когда и кому отправил)
    4) У многих серверов уже есть прослойка в виде Web-API или готовых протоколов (smtp) и множество реализаций

    В чем недостатки:
    1) Не у всех сотрудников она может быть. Например у грузчиков ее может и не быть, но я не думаю что Вы им будете отправлять уведомления. В крайнем случае можно и завести
    2) Отправляет лишь текстовые сообщения (не push, не комманды и т.п.). Но вроде как Вам это и нужно.

    В итоге - не нужно ничего писать, просто заведите корпоративную почту и все.

    P.S. Если уж очень хочется написать свой неоптимальный дублирующий велосипед, то можете перед ней поставить буфером свое приложение, на которое все остальные будут ссылаться.
    Ответ написан
  • На чём следует писать высоконагруженное API - на "PHP" или "Node.JS"?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А что Ваше api будет делать? На чем у Вас уже написана логика (может быть Вы уже использовали symfony 3, тогда нет большого смысла ставить еще и nodejs) или ее тоже нет?
    Ответ написан
  • Как верно отрабатывать ошибки для ответа API?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А если используется rest, то можно возвращать просто текст и 400 ошибку.
    Ответ написан
    Комментировать