ufee / amoapi Goto Github PK
View Code? Open in Web Editor NEWAmoCRM PHP API/oAuth Client
Home Page: https://www.amocrm.ru/developers/content/platform/abilities
License: MIT License
AmoCRM PHP API/oAuth Client
Home Page: https://www.amocrm.ru/developers/content/platform/abilities
License: MIT License
При использовании Oauthapi::setOauthStorage(new \Ufee\Amo\Base\Storage\Oauth\FileStorage(['path' => $cachePath]));
Получаем ошибку
vendor/ufee/amoapi/src/Api/Oauth/Query.php
$expire_time = ($oauth['created_at']+$oauth['expires_in'])-time();
$lead = $amo->leads()->where('key', $val)->recursiveCall();
из примера не работает, пытаюсь сделать выборку по status_id, выдает всё равно абсолютно все сделки, пробовал даже по name, все равно не получается.
$lead = $amo->leads()->where('name', $name)->recursiveCall(); //выгружает все сделки
$lead = $amo->leads()->where('status_id', $idstatus)->recursiveCall(); //выгружает все сделки
$lead = $amo->leads()->where('id', $id)->recursiveCall(); //выгружает нужную сделку
этот код аналогичен $lead = $amo->leads()->find($id);, который тоже успешно выполняется.
Не понятно почему так происходит если вот по доп.полям выборка хорошо работает и выгружает только то, что подпадает под выборку.
$leads = $amo->leads()->searchByCustomField('Москва', 623425); // by CF id
`require_once 'vendor/autoload.php';
use \Ufee\Amo\Oauthapi;
use \Ufee\Amo\Base\Storage\Oauth\FileStorage;
$amo = Oauthapi::setInstance([
'domain' => 'poddomain.amocrm.ru',
'client_id' => '....',
'client_secret' => '.....',
'redirect_uri' => 'https://site.ru',
'zone' => 'ru',
'timezone' => 'Europe/Moscow',
'lang' => 'ru'
]);
//
$amo = Oauthapi::getInstance('......');
$first_auth_url = $amo->getOauthUrl($arg = ['mode' => 'popup', 'state' => 'amoapi']);
;
$code = '.......';
$oauth = $amo->fetchAccessToken($code);
print_r($oauth);`
print_r($oauth) вроде как должен вывести время, когда захешировались токены так? Ничего не приходит, может чего написал не так? Второй вопрос, в папке cache создается папка с названием домена, но в ней ничего нет, как мне посмотреть, что вообще сохранилось в итоге?
Не всегда удобно заполнять по названию поля, клиент может название чуть изменить и вся интеграция слетает) Было бы удобно использовать как название, так и айдишник нужного поля
$lead->cf(284441)->setValue($value);
Как обновить сделку?
Планируется ли поддержка OAuth2 аутентификации? В ближайшее время возможно закроют доступ по ключам.
Line 212 in ba10cfc
Стоит задача создать сделку со статусом неразобранное.
Будет ли реализовываться это часть API Неразобранное ?
Или есть другие методы добавления сделки в данный статус?
Приветствую, будет ли добавлена поддержка oAuth 2.0? в данный момент без кода авторизации амо бьет по лицу сапогом..., сам ответил на свои вопросы, не внимательно читал документацию
Часто возникает ошибка при обновлении
{"update":{"25063315":"Last modified date is older than in database"}}
Указывать update_at = time() + {second} как будто костыль, который не всегда помогает
В апи доке этот параметр необязательный, но если тут попытаться задать ему null - будет эксепшн, а по умолчанию в либе ему задается значение time(), зачем?
Насколько понимаю, если не передавать значение метки обновления, то все будет ок
Планируется ли дополнить/заменить методы из новой версии api?
Подскажите, пожалуйста.
Использую авторизацию oAuth и пытаюсь создать например контакт через новое API, обращаясь к '/api/v4/contacts', используя функцию произвольного запроса, но возникает ошибка валидации для данных типа Integer. С другими типами данных проблем нет. Как это можно решить? Создание контакта - это просто пример. Мне требуется работать с неразобранным, но эта ошибка повторяется и при создании контакта
// Пример кода
$input['contact'][] = [
'name' => 'test77',
'created_at' => time(),
];
$amo->ajax()->post($url = '/api/v4/contacts', $input['contact']);
// Пример ошибки:
{"validation-errors":[{"request_id":"0","errors":[{"code":"InvalidType","path":"created_at","detail":"This value should be of type int."}]}],"title":"Bad Request","type":"https://httpstatus.es/400","status":400,"detail":"Request validation failed"}
Выполнение произвольных запросов не работает:
$result = $this->ufeeamo->ajax()->post('/ajax/settings/custom_fields/', [
'action' => 'apply_changes',
'element_type' => 2,
'groups' => [
[
'name' => 'test Api',
'id' => ''
]
]
]);
403 ошибка
$query->setHeader('X-Requested-With', 'XMLHttpRequest') не отрабатывает должным образом, в результате заголовок не передается.
Дамп запроса:
* Hostname subdomain.amocrm.ru was found in DNS cache
* Trying 23.111.109.17...
* TCP_NODELAY set
* Connected to subdomain.amocrm.ru (23.111.109.17) port 443 (#0)
* ALPN, offering http/1.1
* ignoring certificate verify locations due to disabled peer verification
* NPN, negotiated HTTP1.1
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: OU=Domain Control Validated; CN=*.amocrm.ru
* start date: Jul 2 17:12:23 2019 GMT
* expire date: Aug 31 14:08:50 2020 GMT
* issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
* SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
> POST /ajax/settings/custom_fields/ HTTP/1.1
Host: subdomain.amocrm.ru
User-Agent: Amoapi v.8 (subdomain/ru)
Accept: */*
Cookie: session_id=****
Content-Length: 91
Content-Type: application/x-www-form-urlencoded
* upload completely sent off: 91 out of 91 bytes
< HTTP/1.1 403 Forbidden
< Server: nginx
< Date: Sat, 04 Apr 2020 08:55:32 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< Set-Cookie: user_lang=ru; expires=Fri, 04-Apr-2025 08:55:32 GMT; Max-Age=157766400; path=/; domain=.amocrm.ru
< X-Runtime-Generated: 0,0722
<
* Connection #0 to host subdomain.amocrm.ru left intact
Exception : Invalid response code: 403
Получаю следующую ошибку при попытке авторизоваться.
{
"title": "Некорректный клиент",
"type": "https://developers.amocrm.ru/v3/errors/OAuthProblemJson",
"status": 401,
"detail": "Авторизация клиента не прошла"
}
Шаги:
Подскажите, в чем может быть проблема и куда смотреть?
See: https://www.amocrm.ru/developers/content/digital_pipeline/site_visit
POST /api/v2/leads
{
"add" : [
{
"name" : "Заявка с сайта" ,
"status_id" : 142 ,
"visitor_uid" : "12345678-52d2-44c2-9e16-ba0052d9f6d6"
}
]
}
Now: Exception, Invalid Lead field: visitor_uid
RFC:
$lead = $amo->leads()->create();
$lead->visitor_uid = $visitorUid; //or $lead->setVisitor($visitorUid);
$lead->save(); //or $lead->save($visitorUid);
https://github.com/ufee/amoapi/blob/master/src/Base/Models/QueryModel.php#L81
ErrorException
Use of undefined constant CURL_SSLVERSION_TLSv1_2 - assumed 'CURL_SSLVERSION_TLSv1_2' (this will throw an Error in a future version of PHP)
Hotfix:
if (!defined('CURL_SSLVERSION_TLSv1_2')) {
define('CURL_SSLVERSION_TLSv1_2', 6);
}
Новые аккаунты выдают 401 ошибку при аутентификации. Api ключ у этих аккаунтов в 2 раза короче по длине.
При попытке получить данные из Amo выпадает Exception ругаясь на QueryCollection.php, строка 242 (serialize($query)
$response = $ufeeApi->ajax()->post('/ajax/merge/contacts/save', $query);
Стоит добавить поддержку 202 ответа
Не хватает возможность перехвата обновления токена
$amo->onAccessTokenRefresh(function($token) {
...
});
Привет!
Спасибо за отличную библиотеку, использую ее вместо стандартной амовской.
Правда сейчас наткнулся на одно ограничение.
Мне нужно отредактировать много сделок/контактов скопом.
Читая документацию, предполагал что подобный функционал есть
$contacts = [ $amo->contacts()->create(), $amo->contacts()->create() ]; $contacts[0]->name = 'Amoapi v7 - 1'; $contacts[1]->name = 'Amoapi v7 - 2'; $amo->contacts()->add($contacts);
Но, к сожалению нет, библиотека это отправляет двумя отдельными запросами.
Есть какое-то штатное решение для этой ситуации или же надо допиливать самостоятельно.
Спасибо!
$lead = $this->amo()->leads()->create();
$lead->name = 'Amoapi v7';
$lead->cf('Число')->setValue(5);
$lead->cf('Текст')->setValue('Test');
Выдает ошибку:
Exception 'Error' with message 'Call to a member function reset() on bool'
Для создания контактов работает
В документации у вас написан пример:
$task = $amo->tasks()->create();
$task->text = 'Amoapi v7';
$task->element_type = 1;
$task->element_id = 34762725;
$task->save();
Что такое element type и element_id? Для создания задачи в этой crm достаточно передать text и complete_till, зачем нужны остальные параметры?
Подскажите, пожалуйста, как избежать критической ошибки если пользовательское поле не найдено или не найдено значение для этого поля?
$lead->cf('field_name')->setValue('value1');
Спасибо.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.