dev-master
9999999-dev https://github.com/leshgancomp/AmoCRM_WrapОбёртка для простого взаимодействия с Api AmoCRM
MIT
The Requires
- php >=5.3.0
by Alexey Morilov
by Dmitry Drill
crm amocrm wrap amo leshgancomp
Обёртка для простого взаимодействия с Api AmoCRM
Текущая версия: 1.0.0, (*1)
Перед использованием обёртки, нужно подключить файл автозагрузки классов 'autoload.php'. Путь к файлу конечно же может отличаться от примера ниже. Или вы можете включать этот компонент в свой автозагрузчик., (*2)
<?php require_once 'AmoCRM_Wrap/autoload.php'; ?>
Для начала нужно произвести авторизацию. Для этого создаётся экземпляр класса AmoCRM в конструктор которого необходимо передать:, (*3)
- 'test' нужно заменить на свой поддомен, (*4)
Так как в обёртке предусмотрены Исключения (Exception) которые вызываются в случаях всевозможных ошибок, то их необходимо олавливать т.е. весь код работы с обёрткой следует помещать в try catch., (*5)
Пример авторизации:, (*6)
<?php try { $amo = new \leshgancomp\AmoCRM_Wrap\AmoCRM('test', 'test@test.ru', '011c2d7f862c688286b43ef552fb17f4'); // work with Аmo api } catch (\leshgancomp\AmoCRM_Wrap\AmoWrapException $e) { die($e->getMessage()); } ?>
Важно!!! Все списки сортируются от самого ранее изменённого. Сортировку поменять нельзя =( $limit = 0 — Отсутствие ограничения., (*7)
Параметры: $query - произвольная строка, $limit - лимит количества объектов в результате, $offset - отступ от начала списка, $responsibleUsersIdOrName - один элемент или массив ответственных (принимает как id так и имена или часть имени), $modifiedSince - дата и время после которых контакт был изменён, $isRaw - если true то возвращает массив сырых данных, а не массив объектов, (*8)
На этом классе базируются все другие основные классы. Все методы присутствующие в нём можно использовать в других классах., (*9)
Возможные варианты: WORK - Рабочий, WORKDD - Прямой, MOB - Мобильный, FAX - Факс, HOME - Домашний, OTHER - Другой * delPhone($phone) — Удаляет телфон у сущности. Не учитывает формат телефона. Учитывает начинается телефон с 7 или 8 * getEmails() — Возвращает нумерованый массив email'ов * addEmails($email, $enum = 'OTHER') — Добавляет почту к сущности, не обязательны пораметр тип почты, по умолчанию "Другой". Проверяет имеется ли уже такая почта у контакт и не добавляет дубликат, (*10)
Возможные варианты: WORK - Рабочая, PRIV - Личная, OTHER - Другая * delEmail($email) — Удаляет почту у сущности * addCustomField($name, $type) — Создаёт кастомное поле у текущей сущности с именем $name и типом $type., (*11)
Типы: 1. Обыное текстовое поле 2. Текстовое поля с возможностью записывать только цифры 3. Поле обозначающее только наличие или отсутствие свойства (например: "да"/"нет") 4. Поле типа список с возможностью выбора одного элемента 5. Поле типа список c возможностью выбора нескольких элементов списка 6. Поле типа дата в формате (Год-Мес-День Час:Мин:Сек) 7. Обычное текстовое поле предназначенное URL адресов 8. и 9. Поле содержащее большое количество текста 10. Поле типа переключатель 11. Поле короткой записи адреса 12. Поле адрес (в интерфейсе является набором из нескольких полей) 13. Поле типа дата поиск по которому осуществляется без учета года т.е. день рождение. Формат (Год-Мес-День Час:Мин:Сек). Возвращает id поля * delCustomField($nameOrId) — Удаляет кастомное поле у текущей сущности, принимает как id поля так и его имя * getCustomFieldValue($nameOrId) — Возвращает значение кастомного поля в виде строки. Принимает его имя или id. Если значений несколько, то они должны перечисляться через точку с запятоу (;) * getCustomFieldsValue() — Возвращает все значения кастомных полей в виде ассоциативного массива (имя поля => его значение). Если у поля несколько значений, то они перечесляются через точку с запятоу (;) * setCustomField($customFieldNameOrId, $value = null) — Задаёт значение кастомного поля. Первым аргументов можно передать как id поля, так и его название в црм. Если не передавать значение ($value) или задать его пустым, то при сохранении поле в црм так же будет очищено. В поле типа мультисписок значения вносятся с разделителем точка с запятоу (;) т.е. "первое; второе; третье" * addNote($text) — Добавляет примичание для текущей сущности * addSystemNote($text, $serviceName) — Добавляет системное(нестираемое) примечание для текущей сущности * addTask($text, $responsibleUserIdOrName = null, $completeTill, $typeId = 3) — Добавляет задачу для текущей сущности. $text - текст задачи. $responsibleUserIdOrName(не обязательный) - ответственный, принимает как id так и имя, если не установлен то ответственный тот же что и у текущей сущность. $completeTill(не обязательный) - дата и время, в виде объекта класса DateTime, до которого нужно завершить задачу, если не указан то время устанавливается текущее. $typeId(не обязательный) - тип задачи см. варианты в црм, принимает только имя типа, если не установлен принимает тип 3 - письмо. * addFile($pathToFile) — прикрепляет файл к сущность (Сделка, Контакт или Компания). $pathToFile - путь до файла * backup($directory) — Создаёт полный бэкап всей црм в директории $directory. Возможны проблемы с лимитом памяти, (*12)
Все методы базовые, (*13)
Возможные значения: 1 - Контакт, 2 - Сделка, 3 - Компания, 4 - Результат задачи * setElementType($elementType) — Устанавливает тип сущности к которой будет привязана заметка или задача. Воможные варианты таке же как выше * getType() — Возвращает тип задачи или заметки * setType($type) — Задаёт тип задачи или заметки. Варианты см. в црм * getText() — Возвращает текст задачи или заметки * setText($text) — Задаёт текст задачи или заметки, (*14)
Созданы как вспомогательные по этому описывать их не буду), (*15)
<?php try { $amo = new \leshgancomp\AmoCRM_Wrap\AmoCRM('test', 'test@test.ru', '011c2d7f862c688286b43ef552fb17f4'); $contacts = $amo->searchContact('79998887766', 'test@test.ru'); //Ищем контакт по телефону и почте $contact = current($contacts); //Берём первый найденый контакт $contact->setName("{$contact->getName()} лучший") //Меняем имя дописывая в текущее строчку ->addPhone('78889998887766', 'MOB') //Добавляем мобильный телефон ->addEmail('test2@test.ru', 'WORK') //Добавляем рабочую почту ->delEmail('test@test.ru') //Удаляем почту ->setResponsibleUser('Пётр Иванович') //Меняем ответственного ->save() //Сохраняем все изменение на сервере црм ->addTask('Позвонить клиенту', 'Саша'); //Прикрепляем задачку, и назначаем ответственным за неё Сашу } catch (\leshgancomp\AmoCRM_Wrap\AmoWrapException $e) { die($e->getMessage()); //Прерывем работу скрипта и выводим текст ошибки } ?>
<?php try { $amo = new \leshgancomp\AmoCRM_Wrap\AmoCRM('test', 'test@test.ru', '011c2d7f862c688286b43ef552fb17f4'); $contact = new \leshgancomp\AmoCRM_Wrap\Contact(); $contact->setName('Петя') ->addPhone(79998887766); //Создаём контакт, который будет создан в црм после принятия заявки в неразобранном $contact2 = new \leshgancomp\AmoCRM_Wrap\Contact(); $contact2->setName('Ваня') ->addPhone(79998887755); //Создаём второй контакт $lead = new \leshgancomp\AmoCRM_Wrap\Lead(); $lead->setName('Тестовая сделка') ->setSale(2500); //Создаём сделку, которая будет создана в црм после принятия заявки в неразобранном $unsorted = new \leshgancomp\AmoCRM_Wrap\Unsorted('Супер-Форма', $lead, array($contact, $contact2), 'Вторые продажи'); $unsorted->addNote('Клиент сложный') ->save(); // Сохраняем всё в неразобранное в црм } catch (\leshgancomp\AmoCRM_Wrap\AmoWrapException $e) { die($e->getMessage()); //Прерывем работу скрипта и выводим текст ошибки } ?>
Плюсом небольшая фишка с дозаполнением данными контакта, (*16)
setName("Заявка с формы '$form'") ->setCustomField('roistat', isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : null) ->setCustomField('roistat-marker', isset($_COOKIE['roistat_marker']) ? $_COOKIE['roistat_marker'] : 'Прямой визит') ->setCustomField('Форма захвата', $form) ->setCustomField('utm_source', $_COOKIE['utm_source']) ->setCustomField('utm_medium', $_COOKIE['utm_medium']) ->setCustomField('utm_campaign', $_COOKIE['utm_campaign']) ->setCustomField('utm_term', $_COOKIE['utm_term']) ->setCustomField('utm_content', $_COOKIE['utm_content']) ->setResponsibleUser($responsibleUserId) ->save() ->addNote($comment); $contacts = $amo->searchContact($phone, $email); if (!empty($contacts)) { $contact = current($contacts); } else { $contact = new \leshgancomp\AmoCRM_Wrap\Contact(); $contact->setName($name); } $contact->addPhone($phone) ->addEmail($email) ->addLead($lead) ->save(); } catch (\leshgancomp\AmoCRM_Wrap\AmoWrapException $e) { echo $e->getMessage(); }?>
Обёртка для простого взаимодействия с Api AmoCRM
MIT
crm amocrm wrap amo leshgancomp