GithubHelp home page GithubHelp logo

amocrm-api-client's Introduction

amoCRM PHP API Client

Code Coverage Scrutinizer Code Quality Build Status Packagist

Библиотека для работы с АПИ amoCRM.

Установка

CLI:

composer require ddlzz/amocrm-api-client

composer.json:

{
  "require": {
    "ddlzz/amocrm-api-client": "0.*"
  }
}

Быстрый старт

<?php
require __DIR__ . '/../vendor/autoload.php';

$domain = 'testdomain';
$login = '[email protected]';
$hash = md5('test');

try {
   $credentials = new \ddlzz\AmoAPI\CredentialsManager($domain, $login, $hash);

   /** @var \ddlzz\AmoAPI\Client $request */
   $request = \ddlzz\AmoAPI\ClientFactory::create($credentials);

   // Если вы используете другой домен, например amocrm.com, или протокол http,
   // например работая с dev-сервером amocrm, можете указать эти параметры в настройках:

   // $settings = new \ddlzz\AmoAPI\SettingsStorage();
   // $settings->setScheme('http');
   // $settings->setDomain('amocrm.saas');

   // И передать объект SettingsStorage нашему клиенту
   // $request = \ddlzz\AmoAPI\ClientFactory::create($credentials, $settings);

   // Создадим модель сущности
   $lead = new \ddlzz\AmoAPI\Model\Amo\Lead();

   // Заполним модель данными. Формат заполнения такой:
   $lead['name'] = 'New lead';
   $lead['created_at'] = time(); // Обязательные поля created_at и modified_at будут заполнены
   // автоматически, если не указывать их явно
   $lead['sale'] = 150000; // Аналог из старого АПИ - price. Вы можете использовать как старые,
   // так и новые варианты названия поля. Старые будут преобразованы в новые далее при валидации.
   // Из-за того, что для добавления и редактирования разные поля будут являться обязательными,
   // валидация и заполнение сущности данными происходит позже, в методе клиента add либо update.

   $result = $request->add($lead);
   echo $result;
} catch (Exception $e) {
    echo $e->getFile() . ': ' . $e->getMessage();
}

Возможности

  • Библиотека работает с новым API, но понимает также названия полей из старой документации.
  • По умолчанию используется домен amocrm.ru, также вы можете указать домен amocrm.com или dev-сервер amocrm в настройках.
  • Пауза между запросами в рамках одного обращения к клиенту.

Сущности, с которыми на данный момент работает библиотека:

amocrm-api-client's People

Contributors

alyamovsky avatar griniv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

amocrm-api-client's Issues

#При добавлении лида и указании воронки происходит исключение

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

  'contacts_id' => [
        'type' => 'array|string', // [id => int, id => int]
        'required_add' => false,
        'required_update' => false,
    ],
    'pipeline' => [
        'type' => 'array', // [id => int, _links => array]
        'required_add' => false,
        'required_update' => false,
    ],
    'pipeline_id' => [
        'type' => 'int',
        'required_add' => false,
        'required_update' => false,
    ],

Это отрывок из класса Lead. У себя, в клиентском коде пишу следующее:

$lead['pipeline_id'] = intval(env('AMO_PIPELINE_ID'));

Казалось бы логично, правда? Но потом происходит сюрприз в этом методе (а он вызывается всегда):

 private function renameAliases(array $data)
  {
       foreach ($data as $key => $value) {
           if (in_array($key, $this->aliases, true)) {
                $newKey = array_search($key, $this->aliases, true);
                $data[$newKey] = $data[$key];
                unset($data[$key]);
           }
    }

    return $data;
}

Как видите, он заменяет некоторые наименования передаваемых полей на алиасы (видимо задумка для совместимости со старым апи). Сами алиасы в том же классе Lead:

/** @var array */
protected $aliasesAppend = [
    'is_deleted' => 'deleted',
    'main_contact' => 'main_contact_id',
    'company' => 'linked_company_id',
    'closed_at' => 'date_close',
    'closest_task_at' => 'closest_task',
    'sale' => 'price',
    'pipeline' => 'pipeline_id',
]; 

То есть, pipeline_id будет заменен на pipeline. А валидация требует, чтоб pipeline был массивом. Происходит исключение. Пробовал обойти это разными способами. Пытался использовать pipeline и передавать массив вида

['id' => тут id]

Но это не работает. Правильный json, который должен быть отправлен для генерации лида и установки его в воронку должен быть таким:

  {  
   "add":[  
      {  
         "created_at":1536747960,
         "name":"New pickup user lel",
         "custom_fields":[  
            {  
               "id":"544395",
               "values":[  
                  {  
                     "value":"lel"
                  }
               ]
            }
         ],
         "pipeline_id":1336759
      }
   ]
}

Помогите пожалуйста корректно указать воронку для нового лида.

Поддержка Digital Pipeline

Есть? Планируется?

Интересует работа с омниканальными чатиками с клиентами (при подключенных плагинах к мессенджерам).

Не авторизируется

Подключил как в мануале, но мне пишет 401 not avtorized
Я вставил в код свой хеш прямо из кабинета амоцрм $hash = 'хеш из ЛК'; - с функцией md5() не авторизировалось. о теперь пароблема в том что пишет An error occurred while creating the cookie file

Подключение апи без composer.

Добрый день. Неопытен, отсюда возник глупый вопрос.

Как мне правильно прикрепить апи клиент к проекту на codeigniter без composer? Какой самый простой способ подключить пакет, не дописывая обертку под library и не пользуя composer?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.