Как добавить контакт через amocrm api?

авторизация проходит, но контакты не добавляются. вроде код тот же, что в API и ID свои подставлены. выдает 400 ошибку

<?php

$user=array(
    'USER_LOGIN'=>'***', #Ваш логин (электронная почта)
    'USER_HASH'=>'***' #Хэш для доступа к API (смотрите в профиле пользователя)
);

#Формируем ссылку для запроса
$link='***/private/api/auth.php?type=json';


$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($user));
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);

$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE); #Получим HTTP-код ответа сервера
curl_close($curl); #Завершаем сеанс cURL

$code=(int)$code;
$errors=array(
    301=>'Moved permanently',
    400=>'Bad request',
    401=>'Unauthorized',
    403=>'Forbidden',
    404=>'Not found',
    500=>'Internal server error',
    502=>'Bad gateway',
    503=>'Service unavailable'
);
try
{
    #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
    if($code!=200 && $code!=204)
        throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error',$code);
}
catch(Exception $E)
{
    die('Ошибка: '.$E->getMessage().PHP_EOL.'Код ошибки: '.$E->getCode());
}
/**
 * Данные получаем в формате JSON, поэтому, для получения читаемых данных,
 * нам придётся перевести ответ в формат, понятный PHP
 */
$Response=json_decode($out,true);
$Response=$Response['response'];
if(isset($Response['auth'])){#Флаг авторизации доступен в свойстве "auth"
    echo 'uspeshno';
} else{
    echo 'ne uspeshno';
    die();
}




$contacts['request']['contacts']['add']=array(
    array(
        'name'=>'Roman Feygenberg', #Имя контакта
        'linked_leads_id'=>array(),
        'company_name'=>'amoCRM', #Наименование компании
        'tags' => 'Important, USA', #Теги
        'custom_fields'=>array(
            #Должность
            array(
                'id'=>5021,
                'values'=>array(
                    array(
                        'value'=>'CEO'
                    )
                )
            ),
            array(
                #Телефоны
                'id'=>5022, #Уникальный индентификатор заполняемого дополнительного поля
                'values'=>array(
                    array(
                        'value'=>'415.874.3275',
                        'enum'=>'MOB' #Мобильный
                    ),
                    array(
                        'value'=>'415.374.3278',
                        'enum'=>'OTHER'
                    ),
                    array(
                        'value'=>'415.374.3279',
                        'enum'=>'FAX' #Факс
                    ),
                    array(
                        'value'=>'415.874.3274',
                        'enum'=>'HOME' #Домашний
                    )
                )
            ),
            array(
                #E-mails
                'id'=>5023,
                'values'=>array(
                    array(
                        'value'=>'test@mail.com',
                        'enum'=>'WORK', #Рабочий
                    ),
                    array(
                        'value'=>'mymail@gmail.com',
                        'enum'=>'PRIV',
                    ),
                    array(
                        'value'=>'myaccount@amocrm.ru',
                        'enum'=>'OTHER',
                    )
                )
            ),
            array(
                #Адрес
                'id'=>5026,
                'values'=>array(
                    array(
                        'value'=>'505 Montgomery St., Suite 1016, San Francisco, CA 94111'
                    )
                )
            ),
            array(
                #Web-site
                'id'=>5024,
                'values'=>array(
                    array(
                        'value'=>'amocrm.com'
                    )
                )
            ),
            array(
                #Icq, skype, jabber, IM, gtalk, etc...
                'id'=>5025,
                'values'=>array(
                    array(
                        'value'=>'987654321',
                        'enum'=>'ICQ'
                    ),
                    array(
                        'value'=>'ander_test',
                        'enum'=>'JABBER'
                    )
                )
            ),
        )
    ),
    array(
        'name'=>'Anders Fridden',
        //'last_modified'=>1298904164, //optional
        'linked_leads_id'=>array(),
        'company_name'=>'amoCRM',
        'custom_fields'=>array(
            array(
                'id'=>5022,
                'values'=>array(
                    array(
                        'value'=>'415.874.3467',
                        'enum'=>'WORK'
                    ),
                    array(
                        'value'=>'415.374.3439',
                        'enum'=>'OTHER'
                    ),
                )
            ),
            array(
                'id'=>5023,
                'values'=>array(
                    array(
                        'value'=>'anders_test@mail.com',
                        'enum'=>'WORK',
                    )
                )
            ),
            array(
                'id'=>5026,
                'values'=>array(
                    array(
                        'value'=>'234 Montgomery St., Suite 1021, San Francisco, CA 94111'
                    )
                )
            ),
            array(
                'id'=>5024,
                'values'=>array(
                    array(
                        'value'=>'amocrm.com'
                    )
                )
            ),
            array(
                'id'=>5025,
                'values'=>array(
                    array(
                        'value'=>'987654321',
                        'enum'=>'ICQ'
                    ),
                    array(
                        'value'=>'anders_test',
                        'enum'=>'JABBER'
                    )
                )
            ),
        )
    )
);
$link='***/private/api/v2/json/contacts/set';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($contacts));
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);

$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);

$code=(int)$code;
$errors=array(
    301=>'Moved permanently',
    400=>'Bad request',
    401=>'Unauthorized',
    403=>'Forbidden',
    404=>'Not found',
    500=>'Internal server error',
    502=>'Bad gateway',
    503=>'Service unavailable'
);
try
{
    #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
    if($code!=200 && $code!=204)
        throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error',$code);
}
catch(Exception $E)
{
    die('Error: '.$E->getMessage().PHP_EOL.'Error code: '.$E->getCode());
}

/**
 * Данные получаем в формате JSON, поэтому, для получения читаемых данных,
 * нам придётся перевести ответ в формат, понятный PHP
 */
$Response=json_decode($out,true);
$Response=$Response['response']['contacts']['add'];

$output='ID kontaktov:'.PHP_EOL;
foreach($Response as $v)
    if(is_array($v))
        $output.=$v['id'].PHP_EOL;
print_r ($output);


?>
  • Вопрос задан
  • 2997 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ash22
@Ash22
разработчик CRM
У вас ссылки содержат private - это не из документации amoCRM
правильно будет как здесь https://www.amocrm.ru/developers/content/crm_platf...
api amoCRM ожидает массива контактов, поэтому надо быть аккуратнее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы