Задать вопрос

Заполнение мульти полей в Amo crm api?

Здравствуйте я использую обертку api amo crm отсюда
Все прекрасно работает . Все поля обновляются кроме мульти полей. Вот основной код c пояснениями
use \AmoCRM\Handler;
use \AmoCRM\Request;
use \AmoCRM\Lead;
use \AmoCRM\Contact;
use \AmoCRM\Note;
use \AmoCRM\Task;

require('autoload.php');

/* Предположим, пользователь ввел какие-то данные в форму на сайте */
$name = $_POST['name'];
$phone = $_POST['phone'];

$test = $_POST['test']; // С формы сайта мульти поля. Подстановка успеха не имела в само поле с api amo crm.
$city = $_POST['city'];
//$city2 = $_POST['city'][1];
//$city3 = $_POST['city'][2];
$email = 'user@user.com';
$utm_source = $_POST['utm_source'];
//$message = $_POST['help'];

//$ma = array('4110502','','4110502');
  $message = implode(', ',$test);
 //Попытка подставить коды полей из amo crm из value тоже успехом не увенчалась он просто выбирает первое поле и все
 $rty1 =4110502; 
 $rty2 =4110504;
 $rty3 =4110506;


/* Оборачиваем в try{} catch(){}, чтобы отлавливать исключения */
try {
    $api = new Handler('domain, 'admin@mail.ru',true);


    /* Создаем сделку,
    $api->config содержит в себе массив конфига,
    который вы создавали в начале */
    $lead = new Lead();
		
    $lead
        /* Название сделки */
        ->setName('Заявка тест q') 
        /* Назначаем ответственного менеджера */
        ->setResponsibleUserId($api->config['ResponsibleUserId'])
        /* Кастомное поле */
        ->setCustomField(
           $api->config['LeadFieldCustom2'],$utm_source // ID поля			  
        ) 
		->setCustomField(		
           $api->config['LeadFieldCustom3'],$city // ID поля				  
        )
  /*Кастомное мульти поле.   */
		->setCustomField(		
        $api->config['LeadFieldCustom1'],
                 $api->config['LeadFieldCustom1Value1'],$rty1,	
		 $api->config['LeadFieldCustom1Value2'],$rty2,
		 $api->config['LeadFieldCustom1Value3'],$rty3
		
    )
	
	
        /* Теги. Строка - если один тег, массив - если несколько */
        ->setTags(['тег 1', 'тег 2'])
        /* Статус сделки */
        ->setStatusId($api->config['LeadStatusId']);

    /* Отправляем данные в AmoCRM
    В случае успешного добавления в результате
    будет объект новой сделки */
    $api->request(new Request(Request::SET, $lead));

    /* Сохраняем ID новой сделки для использования в дальнейшем */
    $lead = $api->last_insert_id;


    /* Создаем контакт */
    $contact = new Contact();
    $contact
        /* Имя */
        ->setName($name)
        /* Назначаем ответственного менеджера */
        ->setResponsibleUserId($api->config['ResponsibleUserId'])
        /* Привязка созданной сделки к контакту */
        ->setLinkedLeadsId($lead)
        /* Кастомные поля */
        ->setCustomField(
            $api->config['ContactFieldPhone'],
            $phone, // Номер телефона
            'MOB' // MOB - это ENUM для этого поля, список доступных значений смотрите в информации об аккаунте
        ) 
        ->setCustomField(
            $api->config['ContactFieldEmail'],
            $email, // Email
            'WORK' // WORK - это ENUM для этого поля, список доступных значений смотрите в информации об аккаунте
        ) 
        /* Теги. Строка - если один тег, массив - если несколько */
        ->setTags(['тег контакта 1', 'тег контакта 2']);

    /* Проверяем по емейлу, есть ли пользователь в нашей базе */
    $api->request(new Request(Request::GET, ['query' => $phone], ['contacts', 'list']));

    /* Если пользователя нет, вернется false, если есть - объект пользователя */
    $contact_exists = ($api->result) ? $api->result->contacts[0] : false;

    /* Если такой пользователь уже есть - мержим поля */
    if ($contact_exists) {
        $contact
            /* Указываем, что пользователь будет обновлен */
            ->setUpdate($contact_exists->id, $contact_exists->last_modified + 1)
            /* Ответственного менеджера оставляем кто был */
            ->setResponsibleUserId($contact_exists->responsible_user_id)
            /* Старые привязанные сделки тоже сохраняем */
            ->setLinkedLeadsId($contact_exists->linked_leads_id);
    }


    /* Создаем заметку с сообщением из формы */
    $note = new Note();
    $note
        /* Привязка к созданной сделке*/
        ->setElementId($lead)
        /* Тип привязки (к сделке или к контакту). Смотрите комментарии в Note.php */
        ->setElementType(Note::TYPE_LEAD)
        /* Тип заметки (здесь - обычная текстовая). Смотрите комментарии в Note.php */
        ->setNoteType(Note::COMMON)
        /* Текст заметки*/
        ->setText('Проблема: '.$message);



    /* Создаем задачу для менеджера обработать заявку */
    $task = new Task();
    $task
        /* Привязка к созданной сделке */
        ->setElementId($lead)
        /* Тип привязки (к сделке или к контакту) Смотрите комментарии в Task.php */
        ->setElementType(Task::TYPE_LEAD)
        /* Тип задачи. Смотрите комментарии в Task.php */
        ->setTaskType(Task::CALL)
        /* ID ответственного за задачу менеджера */
        ->setResponsibleUserId($api->config['ResponsibleUserId'])
        /* Дедлайн задачи */
        ->setCompleteTill(time() + 60 * 2)
        /* Текст задачи */
        ->setText('Обработать заявку');


    /* Отправляем все в AmoCRM */
    $api->request(new Request(Request::SET, $contact));
    $api->request(new Request(Request::SET, $note));
    $api->request(new Request(Request::SET, $task));
} catch (\Exception $e) {
    echo $e->getMessage();
}

Кто знает как заставить работать эт обертку с мульти полями, что надо настроить?
  • Вопрос задан
  • 1797 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@temposys
я использовала эту библиотеку: https://github.com/dotzero/yii-amocrm
может и вам подойдет
Ответ написан
Комментировать
blackseabreathe
@blackseabreathe
brackets
Для тех, кто не юзает библиотеки:

Например, на сайте есть select со значениями и такие же значения нужно добавить в amo в соответствующие select-"ы" в сделке, (внимание, если значения с сайта и в amo будут отличаться, то сделка не добавиться) тогда массив со сделкой будет выглядеть так:

$lead = [
array(
'name' => $form['cfg']['subject'],  // название сделки
'status_id' => 46799449, // этап
'pipeline_id' => 5200315, // воронка
'price' => 0, // цена
'responsible_user_id' => 7982008, // id ответственного

'custom_fields_values' => array( // доп поля
array(
'field_id' => 301273, // id поля, можно посмотреть нажав сделка->настройки->нужное поле
'values' => array(
array(
'value' => $_POST['radio1'] // добавили значение
)
),
),
array(
'field_id' => 301109,
'values' => array(
array(
'value' => $_POST['radio2']
)
),
),
array(
'field_id' => 301395,
'values' => array(
array(
'value' => $_POST['radio3']
)
),
),
),

'_embedded' => array(
'contacts' => array(
'0' => array(
'id' => $contact_id
)
),
'tags' => array(
'0' => array(
'id' => 14069
)
),
)
),
];
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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