Задать вопрос
  • Как добавить Тег к сделке AMO CRM по API?

    Михаил Р., это указанно в доке по созданию/редактированию сделок/контактов/компаний/покупателей.
    А почему лучше его использовать написано в чейнжлоге от 25 марта 2024
  • Как добавить Примечание в сделку / API AmoCRM?

    Elena_11, можете и в свой интегрировать, но у вас как пример лишние параметры в curl CURLOPT_COOKIEFILE/CURLOPT_COOKIEJAR - это еще со времен когда была авторизация по api ключу
    Так же у себя вы не закрываете соединение curl после запроса - отсутствует curl_close($curl);
    Так же под каждый запрос вам приходилось бы дублировать часть кода отвечающие за запросы.

    Я лишь дал пример с более "правильной" структурой кода. А пользоваться этой реализацией или переписать под то как вам удобно уже на ваше усмотрение.
    Написано
  • Как добавить Примечание в сделку / API AmoCRM?

    Elena_11,
    $amoClient = createAmoClient('https://subdomain.amocrm.ru', 'Тут access token');
    тут вам надо заменить https://subdomain.amocrm.ru на свой адрес amo например https://test23032025.amocrm.ru, и вместо Тут access token подставить ваш access token
    Написано
  • Как добавить Примечание в сделку / API AmoCRM?

    Elena_11, Конечно, это интерполяция. Код проверял - сделка и примечание создавались.
    Попробуйте после создания сделки вывести через var_dump, что находится в response
    А так же добавить $response для создания примечания и так же вывести
    Как-то так

    <?php
    
    function createAmoClient($domain, $accessToken)
    {
        $headers = [
            'Content-Type: application/json',
            'Authorization: Bearer ' . $accessToken,
        ];
    
        return function ($method, $url, $data = null) use ($domain, $headers) {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $domain . $url);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
            if ($data !== null) {
                curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
            }
            $response = curl_exec($curl);
            $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    
            curl_close($curl);
    
            return [
                'content' => is_bool($response) ? $response : json_decode($response, 1),
                'status_code' => $httpcode
            ];
        };
    }
    
    $amoClient = createAmoClient('https://subdomain.amocrm.ru', 'Тут access token');
    
    $response = $amoClient('POST', '/api/v4/leads/complex', [
        [
            'name' => 'Название сделки',
        ]
    ]);
    var_dump($response);
    $response = $amoClient('POST', "/api/v4/leads/{$response['content'][0]['id']}/notes", [
        [
            'note_type' => 'common',
            'params' => [
                'text' => 'Примечание'
            ]
        ]
    ]);
    var_dump($response);

    Написано
  • Как добавить Примечание в сделку / API AmoCRM?

    Elena_11,
    Накидал по быстрому пример, надеюсь поможет
    <?php
    
    function createAmoClient($domain, $accessToken)
    {
        $headers = [
            'Content-Type: application/json',
            'Authorization: Bearer ' . $accessToken,
        ];
    
        return function ($method, $url, $data = null) use ($domain, $headers) {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $domain . $url);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
            if ($data !== null) {
                curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
            }
            $response = curl_exec($curl);
            $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    
            curl_close($curl);
    
            return [
                'content' => is_bool($response) ? $response : json_decode($response, 1),
                'status_code' => $httpcode
            ];
        };
    }
    
    $amoClient = createAmoClient('https://subdomain.amocrm.ru', 'Тут access token');
    
    $response = $amoClient('POST', '/api/v4/leads/complex', [
        [
            'name' => 'Название сделки',
        ]
    ]);
    
    $amoClient('POST', "/api/v4/leads/{$response['content'][0]['id']}/notes", [
        [
            'note_type' => 'common',
            'params' => [
                'text' => 'Примечание'
            ]
        ]
    ]);
    Написано
  • Как добавить Примечание в сделку / API AmoCRM?

    Elena_11, я не согласен с вами. У них довольно хорошая документация. Вам просто нужно понять, что всё, что вы создаёте в amo, является сущностью. В документации описаны практически все сущности и принципы работы с ними.
    Пример я вам дать не могу так как не знаю вашу реализацию работы с API. Но концепт будет такой
    1. Вы используете Комплексное добавление сделок, то есть отправляете запрос на POST /api/v4/leads/complex в ответе вам должен придти массив объектов (если вы передаете на создания лишь одну сделку, то и массив будет из одного объекта). Предположим вы записываете ответ в переменную $response.
    2. Вам надо использовать запрос на добавление примечания POST /api/v4/{entity_type}/{entity_id}/notes соответственно вам надо заменить {entity_type} на leads так как примечание добавляется в сделку и заменить {entity_id} на id созданной вами сделки - он у вас будет в $response[0]['id']

    Если нужны уточнения - спрашивайте
    Написано
  • Как из API amoCRM получить все причины отказа (loss_reason_id)?

    Вы также при получении сделки можете добавить параметр ?with=loss_reason, тогда вместе с сделкой придет расширенная информация по причине отказа
    Написано
  • Как получить список типов задач в amoCRM через api?

    Роман Лыжов, через API не знаю. Можно через интерфейс используя Инструменты разработчика.
    (Правый клик по нужной иконки задачи - Исследовать элемент - id будет в атрибуте data-icon-id. https://disk.yandex.ru/i/quE6ePf1NsmTHw)
    Написано
  • Как получить uuid загруженного в amoCRM файла по API?

    Роман Лыжов, надо именно передавать содержимое файла (байтовое представление)
    fread в php или read в Python
    Написано
  • Как получить uuid загруженного в amoCRM файла по API?

    Роман Лыжов, Никаких параметров запрос не принимает. Надо лишь передавать данные файла (или часть их) в теле запроса в Postman это будет как то так
    https://disk.yandex.ru/i/dU3aLHc1fQ7LkA
    Написано
  • Как получить uuid загруженного в amoCRM файла по API?

    Создаете сессию для загрузки, получаете ответ в котором содержатся max_part_size и upload_url
    Делите свой файл по байтово на части которые не превышают значение в max_part_size
    Первую часть файла отправляете через POST на ссылку которую получили из upload_url, в теле запроса должна быть первая часть файла
    В ответ получите либо uuid файла если часть всего одна (там ряд еще параметров, смотрите в доке) либо next_url на которую надо отправлять таким же способом следующую часть файла. Повторять до передачи всех частей. В конце получите uuid
    Написано
  • Почему одинаково-написанный curl запрос отдает разные ответы?

    danilapon, смог добиться такого же состояния. Причина как раз в новой строке в заголовке. Из-за него не правильно читается тело запроса и не уходит в амо, амо как раз и отвечает, что тело не может быть пустым.
    Добился я этого добавив переход на новую строку в токене. Попробуйте добавить trim в переменной с заголовками:
    $AMOheader = [
        'Content-Type: application/json',
        'Authorization: Bearer ' . trim(file_get_contents($AMOtoken))
    ];
    Написано
  • Почему одинаково-написанный curl запрос отдает разные ответы?

    danilapon, в отдельном файле так же заголовки формируйте вытягивая токен из файла?
    Написано
  • Почему одинаково-написанный curl запрос отдает разные ответы?

    Одним словом думаю проблема в передаче id - скорее всего оно у вас является строкой id' => $_POST['leads']['status']['0']['id'] так как $_POST содержит строки, а амо надо давать int
    Попробуйте вот так
    $data = [
                [
                    'entity_id' => (int)$_POST['leads']['status']['0']['id'],
                    'note_type' => 'common',
                    'params' => [
                        'text' => 'Пароль перезаписан...'
                    ]
                ]
            ];

    $data = [
                [
                    'id' => (int)$_POST['leads']['status']['0']['id'],
                    'custom_fields_values' => [
                        [
                            'field_id' => 1151761,
                            'values' => [
                                [
                                    'value' => $OAID
                                ]
                            ]
                        ],
                        [
                            'field_id' => 1151755,
                            'values' => [
                                [
                                    'value' => $OAPass
                                ]
                            ]
                        ]
                    ],
                    'status_id' => 65941234
                ]
            ];
    Написано
  • Почему одинаково-написанный curl запрос отдает разные ответы?

    Приложите дамп тела запроса из основного кода
    Написано
  • Как в Vue 3 корректно работать с pinia вне компонента?

    Можете попробовать вынести const pinia = createPinia() в отдельный файл например в pinia.js как то так
    export const pinia = createPinia()
    В main.js и i18n соответственно
    import {pinia} from "@/.../pinia.js";
    app.use(pinia)


    import  { createI18n } from "vue-i18n";
    import en from "./en.json"
    import ru from "./ru.json"
    import {useSettingsStore} from "@/store/SettingsDataStore";
    import {pinia} from "@/.../pinia.js";
    
    const settingsStore = useSettingsStore(pinia);
    export default createI18n({
      locale: settingsStore.locale,
      fallbackLocale: 'ru',
      messages: {
        en, ru
      },
      legacy: false,
      globalInjection: true
    
    })
  • Как настроить получение webhook от Notion?

    Когда последний раз делал подобную задачу вебхуков точно не было. Решал периодическим опросом по апи с фильтрацией по last_edited_time
  • Как по API добавить файл в таб файлы в сделке в amoCRM?

    Попробуйте загрузить файл повторно и уже его добавить в таб
    /** Привязка файла со счетом к сделке */
    if (!empty($this->invoiceFileName)) {
        // Загружаем файл счета в amocrm
        $file = $this->uploadFile();
    
        $lead = $this->apiClient->leads()->getOne($lead->getId());
        $leadCustomFieldsValues = new CustomFieldsValuesCollection();
        $leadCustomFieldsValues->add(self::addFile($this->config['app']['lead_file'], $file));
        $lead->setCustomFieldsValues($leadCustomFieldsValues);
        $this->apiClient->leads()->updateOne($lead);
    
        $file = $this->uploadFile();
        $this->apiClient->entityFiles(EntityTypesInterface::LEADS, $lead->getId())->add(
            (new FileLinksCollection())
                ->add(
                    (new FileLinkModel())
                        ->setFileUuid($file->getUuid())
                )
        );
    }
  • Как связать сделку и товар в AmoCRM через Api?

    s7fkcu, одним запросом не выйдет. Сначала создаете сделку, а потом связываете товары