AMO CRM - решение бага с получением токена авторизации.
Первое получение токена авторизации к компоненте AMO CRM пожалуй самый распространенная проблема, с которой сталкиваются все пользователи компонента.
Да действительно механизм первого подключения сайта к AMO CRM получился неудачным, еще на стадии архитектуры. Когда-нибудь я обязательно выпущу обновление, а пока хотел бы поделиться скриптом упрощающим жизнь.
Чтобы гарантировано подключиться к AMO CRM вам необходимо выполнить всего два пункта.
1. Корректно заполнить все системные настройки, указав все данные для интеграции. Это подробно описано в документации
2. Установите компонент modalConsole для выполнения PHP кода в админке и запустите один раз вот такой скрипт
Этот код обменивает код авторизации (который выдается на 20 минут) на постоянный токен авторизации, которым впоследствии будут подписаны все запросы в CRM.
Собственно на этом все. Система должна нормально работать. Заказы отправляются в CRM. А для отправки форм вам нужно добавтиь несколько параметров для ajaxForm согласно документации
Да действительно механизм первого подключения сайта к AMO CRM получился неудачным, еще на стадии архитектуры. Когда-нибудь я обязательно выпущу обновление, а пока хотел бы поделиться скриптом упрощающим жизнь.
Чтобы гарантировано подключиться к AMO CRM вам необходимо выполнить всего два пункта.
1. Корректно заполнить все системные настройки, указав все данные для интеграции. Это подробно описано в документации
2. Установите компонент modalConsole для выполнения PHP кода в админке и запустите один раз вот такой скрипт
$amocrm = $modx->getService('amocrm', 'amoCRM', MODX_CORE_PATH . 'components/amocrm/model/amocrm/');
$link = $amocrm->tools->prepareLink('/oauth2/access_token');
$data = [
'client_id' => $amocrm->tools->config['client_id'],
'client_secret' => $amocrm->tools->config['client_secret'],
'code' => $amocrm->tools->config['client_code'],
'grant_type' => 'authorization_code',
'redirect_uri' => $amocrm->tools->config['site_url']
];
$accessToken = $amocrm->tools->sendCURL($link, $data, 'POST');
if ($accessToken) {
$accessToken['expires_in'] = time() + $accessToken['expires_in'];
$lifetime = strtotime('3 month');
$accessToken['refresh_token_lifetime'] = $lifetime;
$setting = $modx->getObject('modSystemSetting', array('key' => 'amocrm_token_field'));
$setting->set('value', json_encode($accessToken));
$setting->save();
$setting = $modx->getObject('modSystemSetting', array('key' => 'amocrm_client_code'));
$setting->set('value', '');
$setting->save();
}
Этот код обменивает код авторизации (который выдается на 20 минут) на постоянный токен авторизации, которым впоследствии будут подписаны все запросы в CRM.
Собственно на этом все. Система должна нормально работать. Заказы отправляются в CRM. А для отправки форм вам нужно добавтиь несколько параметров для ajaxForm согласно документации
Поблагодарить автора
Отправить деньги
Комментарии: 14
Спасибо большое, Николай, за решение! О нем мечтали, его ждали, про него спрашивали, потом его просили, и вот оно здесь!
P.S Столько обновлений здесь в последнее время, аж глаза разбегаются и такую ценную заметку банально не заметил… А может, потому что картинки в анонсе нет!? Но это не в укор, а просто попытка самоанализа.
P.S.2 А просто Console не подойдет? Просто он почти везде уже есть…
P.S Столько обновлений здесь в последнее время, аж глаза разбегаются и такую ценную заметку банально не заметил… А может, потому что картинки в анонсе нет!? Но это не в укор, а просто попытка самоанализа.
P.S.2 А просто Console не подойдет? Просто он почти везде уже есть…
Дим, лично для тебя разрешаю Console. Сам не пользуюсь ей давно.
Доброго времени суток! Вопрос по компоненту — amocrm.
у меня работает в режиме хука для Formit — ajaxform.
Проблема — не создается контакт в вмо, телефон пишется просто в доп полях, он приходит но контакта нет.
Создается на сколько я понял, только когда авторизован в modx.
Поковырял исходники. Там вроде как контакт создается на событие — OnUserFormSave (создание, обновление юзера).
Мне надо бы для анонимов сделать.
у меня работает в режиме хука для Formit — ajaxform.
Проблема — не создается контакт в вмо, телефон пишется просто в доп полях, он приходит но контакта нет.
Создается на сколько я понял, только когда авторизован в modx.
Поковырял исходники. Там вроде как контакт создается на событие — OnUserFormSave (создание, обновление юзера).
Мне надо бы для анонимов сделать.
Николай добрый день, настраиваю интеграцию, при отправке заявок с сайта они приходят в amocrm, но не создаются сделки, хотя параметр amocrm_form_as_lead включен.
В консоли появляются ошибки:
В консоли появляются ошибки:
[2023-09-26 10:58:07] (ERROR @ /home/d/dreamt74/dreamt74.beget.tech/public_html/core/components/amocrm/model/amocrm/controllers/auth.php : 38) [amoCRM] Auth error
[2023-09-26 10:58:07] (ERROR @ /home/d/dreamt74/dreamt74.beget.tech/public_html/core/components/amocrm/model/amocrm/amocrmtools.class.php : 487) Array
(
[0] => [AmoCrm] Ошибка запроса
[1] => Undefined error Код ошибки: 0
[2] => https://https://houseforest.amocrm.ru.amocrm.ru/oauth2/access_token
[3] => Array
(
[client_id] => 154488b4-a0c4-442b-8e80-c25d123a9ba3
[client_secret] => yh1f14en9vKGjlub54YkMYzYcvDsOqTKiXM6KmssHaknZweIrGygCXVyWO5plnlx
[code] => def502002497f2a7a9d513c07d6026dfd234585d031cdc706c60ffdc842a95b68e6aca2b48203648a145cc2d3a39650877cb2600c5cda61589e109496f22ea95b7bf14c1539b3f16812f5e18a0a036dc51926d30b0ca1120eee880822f27166f0ca232d5d92c6ff35075a3d8c47eb1678dd00de47f7fce150b94ec6bab42a64353e22654ed1000f8f548069d2a83cf26c49cc27f0ad62bd9505056560cc258259345a32ea27981d1fb34a975195030cf5950fbe70a6aae52479abc2262cb448a25ab8473fd5ae27cd40bec39198bc581c03b92cbd287eeede187b55817dbf2a1ef11815951a481ee511dade7047bb6f955c8acdda644ad249381a760eb844ea3cb1fbb9e2967e0d40a96b7a555a72648634924f03c0c6a6e28647a5ba9c5d2f9f93848b3e9e1c2bb60d61517704cd4bb343b7bfb6ab9070de0b86df83d448a78f340f624dfb5d7564121ab9a8248695a918c01d532548207431a35fdc2ea9f17a972ddb1a6cf164cab42027326fd305910e884dd5b2dd69a924751e6aacf2f177ad586ed24cc8eb7772348f499001d18549321a13ee1967414f4abe3ed6937ff8482725b9afe9bc55a5357be228f6aabcea4aab5f6d2a263f64600816f377ded09e6f1db09b8baa30755ba56d002a68298713ece4e952e653bed21bb9b07e7a71d9ec7b3b95cbc
[grant_type] => authorization_code
[redirect_uri] => https://houseforest.ru/
)
[4] =>
)
[2023-09-26 10:58:07] (ERROR @ /home/d/dreamt74/dreamt74.beget.tech/public_html/core/components/amocrm/model/amocrm/controllers/auth.php : 38) [amoCRM] Auth error
При выполнении данного скрипта так же возникает ошибка:[2023-09-26 11:01:24] (ERROR @ /home/d/dreamt74/dreamt74.beget.tech/public_html/core/components/amocrm/model/amocrm/amocrmtools.class.php : 487)
Array
(
[0] => [AmoCrm] Ошибка запроса
[1] => Undefined error Код ошибки: 0
[2] => https://https://houseforest.amocrm.ru.amocrm.ru/oauth2/access_token
[3] => Array
(
[client_id] => 154488b4-a0c4-442b-8e80-c25d123a9ba3
[client_secret] => 5Wnwafs7TS1Shayn2nj1cQ5fw7tsQ8cD3Z5D6UTwpIQrWPCJrVcOqKlGRueGcGVD
[code] => def502002497f2a7a9d513c07d6026dfd234585d031cdc706c60ffdc842a95b68e6aca2b48203648a145cc2d3a39650877cb2600c5cda61589e109496f22ea95b7bf14c1539b3f16812f5e18a0a036dc51926d30b0ca1120eee880822f27166f0ca232d5d92c6ff35075a3d8c47eb1678dd00de47f7fce150b94ec6bab42a64353e22654ed1000f8f548069d2a83cf26c49cc27f0ad62bd9505056560cc258259345a32ea27981d1fb34a975195030cf5950fbe70a6aae52479abc2262cb448a25ab8473fd5ae27cd40bec39198bc581c03b92cbd287eeede187b55817dbf2a1ef11815951a481ee511dade7047bb6f955c8acdda644ad249381a760eb844ea3cb1fbb9e2967e0d40a96b7a555a72648634924f03c0c6a6e28647a5ba9c5d2f9f93848b3e9e1c2bb60d61517704cd4bb343b7bfb6ab9070de0b86df83d448a78f340f624dfb5d7564121ab9a8248695a918c01d532548207431a35fdc2ea9f17a972ddb1a6cf164cab42027326fd305910e884dd5b2dd69a924751e6aacf2f177ad586ed24cc8eb7772348f499001d18549321a13ee1967414f4abe3ed6937ff8482725b9afe9bc55a5357be228f6aabcea4aab5f6d2a263f64600816f377ded09e6f1db09b8baa30755ba56d002a68298713ece4e952e653bed21bb9b07e7a71d9ec7b3b95cbc
[grant_type] => authorization_code
[redirect_uri] => https://houseforest.ru/
)
[4] =>
)
Ссылка вида houseforest.amocrm.ru.amocrm.ru ничем не смущает?
Сергей подсказал решение, сработало, но теперь ошибка с кодом 400
В настройках amo компонента, в параметре «amocrm_account», пропиши просто — houseforest
Спасибо, теперь в консоли другая ошибка
[2023-09-26 12:14:19] (ERROR @ /home/d/dreamt74/dreamt74.beget.tech/public_html/core/components/amocrm/model/amocrm/amocrmtools.class.php : 487) Array
(
[0] => [AmoCrm] Ошибка запроса
[1] => Bad request Код ошибки: 400
[2] => https://houseforest.amocrm.ru/oauth2/access_token
[3] => Array
(
[client_id] => 154488b4-a0c4-442b-8e80-c25d123a9ba3
[client_secret] => 5Wnwafs7TS1Shayn2nj1cQ5fw7tsQ8cD3Z5D6UTwpIQrWPCJrVcOqKlGRueGcGVD
[code] => def502002497f2a7a9d513c07d6026dfd234585d031cdc706c60ffdc842a95b68e6aca2b48203648a145cc2d3a39650877cb2600c5cda61589e109496f22ea95b7bf14c1539b3f16812f5e18a0a036dc51926d30b0ca1120eee880822f27166f0ca232d5d92c6ff35075a3d8c47eb1678dd00de47f7fce150b94ec6bab42a64353e22654ed1000f8f548069d2a83cf26c49cc27f0ad62bd9505056560cc258259345a32ea27981d1fb34a975195030cf5950fbe70a6aae52479abc2262cb448a25ab8473fd5ae27cd40bec39198bc581c03b92cbd287eeede187b55817dbf2a1ef11815951a481ee511dade7047bb6f955c8acdda644ad249381a760eb844ea3cb1fbb9e2967e0d40a96b7a555a72648634924f03c0c6a6e28647a5ba9c5d2f9f93848b3e9e1c2bb60d61517704cd4bb343b7bfb6ab9070de0b86df83d448a78f340f624dfb5d7564121ab9a8248695a918c01d532548207431a35fdc2ea9f17a972ddb1a6cf164cab42027326fd305910e884dd5b2dd69a924751e6aacf2f177ad586ed24cc8eb7772348f499001d18549321a13ee1967414f4abe3ed6937ff8482725b9afe9bc55a5357be228f6aabcea4aab5f6d2a263f64600816f377ded09e6f1db09b8baa30755ba56d002a68298713ece4e952e653bed21bb9b07e7a71d9ec7b3b95cbc
[grant_type] => authorization_code
[redirect_uri] => https://houseforest.ru/
)
[4] => Array
(
[hint] => Redirect URI is not associated with client
[title] => Некорректный запрос
[type] => https://developers.amocrm.ru/v3/errors/OAuthProblemJson
[status] => 400
[detail] => В запросе отсутствует ряд параметров или параметры невалидны
)
)
Посмотрите, пожалуйста, в документацию вот сюда
404 Not Found!
Не то вставил ))
Исправил ссылку.
Исправил ссылку.
И почему-то журнал ошибок кишит такими ошибками, хотя отправка формы производится 1 раз…
Все проделал по пунктам, такая ошибка сейчас, похоже та же самая…
[2023-09-26 13:21:14] (ERROR @ /home/d/dreamt74/dreamt74.beget.tech/public_html/core/components/amocrm/model/amocrm/amocrmtools.class.php : 487) Array
(
[0] => [AmoCrm] Ошибка запроса
[1] => Bad request Код ошибки: 400
[2] => https://houseforest.amocrm.ru/oauth2/access_token
[3] => Array
(
[client_id] => 154488b4-a0c4-442b-8e80-c25d123a9ba3
[client_secret] => 5Wnwafs7TS1Shayn2nj1cQ5fw7tsQ8cD3Z5D6UTwpIQrWPCJrVcOqKlGRueGcGVD
[code] => def5020096aa491fa204bf53ee35ac5b8e1af5b1d6b8bd132a557cae0c2fdabec21d4374fd58a07b7e3dc3c7cec5771b9ddc0de534f4273f79cb48f7cb4debe366b05d34904cf2823bd3ea0326babd5d6720f5936d1839915f08b52b7b3c59d9df25483e558f103047f48566f8fc52f5c09ef71f04f6e8424d9e94808e25b2bed0fc44606c927e1f8e9d8999fa91839d8624e193b7e3b518db7c99e8d197a4a6cd6e1e67fae626b395edee3dc31a6c4c56c83b2e3d59941261a021e8a47dc84921e985048d5eca4c405232fb30fe294498942c32bd4460a73860800d76f3b07bb2af6d226f477f9cd61867b63dbb7588a947370a479f380597b6415e310b85b942f18cb50f0df2eb0206a254a8ec9fc3977613155d8ddfa216ff20dd6422753655f5bf4afd4fd80ceeecc5795d0e2a2b4f5425cbfee51ac3b4fc3b908d0b74b5c7fe6497bf97c7915224a17b9ff4ecb00e7b50b723bee2839e8d03fe83c08234e38691ba5341318858ff43af9c8a983a518c6a09674c2deb80f9fedd9d418ddcdb4d376d394fbd5b37ae965c5344d065649367ce898e0d1d0d24bf535de4458c1d23c8481b71f314b4e7e812280fc6e7b1934f29cbd6809bf8293728e66cde3cb0073130f900ff16e0ee045350776fa0b9c981695fcb96dc1bd896bd0f48cad374978fa76ce4c656e2
[grant_type] => authorization_code
[redirect_uri] => https://houseforest.ru/
)
[4] => Array
(
[hint] => Redirect URI is not associated with client
[title] => Некорректный запрос
[type] => https://developers.amocrm.ru/v3/errors/OAuthProblemJson
[status] => 400
[detail] => В запросе отсутствует ряд параметров или параметры невалидны
)
)
Эта ошибка возникает в любой непонятной ситуации. Возможно токен отвалился. Попробуй заново сгенерировать ключ
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.