Россия, Саратов +7(906)304-97-83 info@web-tolk.ru

Как добавить телефон или почту к существующему контакту Битрикс24 через REST API

Логотип Битрикс24 REST API, логотип Joomla, Как добавить телефон или почту к существующему контакту Битрикс24 через REST API

В процессе разработки интеграций Joomla с CRM Битрикс24 столкнулся с тем, что официальная документация по REST API для Битрикс24 неполная и не отражает всех возможных инструментов работы с CRM, к тому же разные версии документации содержат разные примеры, а порой и артефакты устаревшего синтаксиса. Поэтому немало способов решения задач находится эмпирически.

Для связи с Битрикс24 используем их PHP библиотеку CRest, предварительно настроенную.

Задача:
Проверить есть ли у контакта e-mail или номер телефона.
 $find_doubles = [
	            'find_doubles_by_phone' => [        //Поиск дублей по телефону
	                'method' => 'crm.duplicate.findbycomm',
	                'params' => [
		                "type" => "PHONE",
		                "values" => [+79000000000] //Это массив вида [0] - '+79000000000'
	                ],
	            ],
	            'find_doubles_by_email' => [        //Поиск дублей по email
		            'method' => 'crm.duplicate.findbycomm',
		            'params' => [
			            "type" => "EMAIL",
			            "values" => [info @123.ru]  //Это массив вида [0] - 'info @123.ru'
		            ]
	            ]
	        ];


	    $find_doublesBitrix24 = CRest::callBatch($find_doubles); //Пакетный вызов

На выходе получаем массив следующего вида:

Array
(
    [result] => Array
        (
            [result] => Array
                (
                    [find_doubles_by_phone] => Array
                        ( // Пустой массив означает, что совпадений нет
                        )

                    [find_doubles_by_email] => Array
                        (
                            [LEAD] => Array  //Список id лидов с этим email
                                ( 
                                    [0] => 1
                                    [1] => 5
                                    [2] => 7
                                    [3] => 9
                                    [4] => 11
                                    [5] => 13
                                    [6] => 15
                                    [7] => 17
                                    [8] => 19
                                    [9] => 21
                                    [10] => 23
                                    [11] => 27
                                    [12] => 29
                                    [13] => 31
                                    [14] => 33
                                )

                            [CONTACT] => Array //Список id контактов с этим email
                                (
                                    [0] => 15
                                )

                        )

                )

            [result_error] => Array
                (
                )

            [result_total] => Array
                (
                )

            [result_next] => Array
                (
                )

            [result_time] => Array
                (
                    [find_doubles_by_phone] => Array
                        (
                            [start] => 1588045394.5629
                            [finish] => 1588045394.5661
                            [duration] => 0.003209114074707
                            [processing] => 0.0031490325927734
                            [date_start] => 2020-04-28T06:43:14+03:00
                            [date_finish] => 2020-04-28T06:43:14+03:00
                        )

                    [find_doubles_by_email] => Array
                        (
                            [start] => 1588045394.5661
                            [finish] => 1588045394.5676
                            [duration] => 0.0015058517456055
                            [processing] => 0.0014550685882568
                            [date_start] => 2020-04-28T06:43:14+03:00
                            [date_finish] => 2020-04-28T06:43:14+03:00
                        )

                )

        )

    [time] => Array
        (
            [start] => 1588045394.5317
            [finish] => 1588045394.5677
            [duration] => 0.035916090011597
            [processing] => 0.0048708915710449
            [date_start] => 2020-04-28T06:43:14+03:00
            [date_finish] => 2020-04-28T06:43:14+03:00
        )

)

Метод crm.duplicate.findbycomm позволяет ограничить область поиска, если указать параметр entity_type. 

Задача №2
Добавить к контакту новый email или телефон.
$b24contact_id = $find_doublesBitrix24["result"]["result"]["find_doubles_by_phone"]["CONTACT"][0]

$req_crm_contact_fields = CRest::call(
		 "crm.contact.update",[
		 'ID'    => $b24contact_id,
		 'fields'=>[
			 'PHONE' => [
				    'n0' => [
					 'VALUE' => $new_phone, //В этой переменной находится собственно номер телефона, строка
					 'TYPE' => 'WORK'
				    ]
			    ]
		    ]
		 ]
	 );

Параметр ID (контакта) должен быть указан за пределами "fields". Обратите внимание на строку 6: при редактировании лида таким образом не нужно вычислять порядковый номер телефона или почты n0, n1, n2. Достаточно просто передать массив с контактными данными так же, как при создании лида. В документации Битрикс24 для изменения данных контакта обязательно требовалось указывать внутренний ID изменяемого поля, для получения которого создавался дополнительный запрос. В нашем случае этого поля еще нет, поэтому его ID получить невозможно. А значит и нет необходимости указывать порядковый номер телефона или почты.

Сергей Толкачев

Full stack разработчик (разработчик полного цикла): HTML5, CSS3, jQuery, PHP, СЕО. Специализируюсь на CMS Joomla. C 2010 года делаю сайты для клиентов.