Немного о интеграции с CRM AMO

15.11.19

Интеграция - WEB-интеграция

Немного информации о том, как настроить интеграцию с CRM AMO. Пример функций для подключения к АМО и обновления заказа. Пример на основе API авторизации.

Удобно, когда из одного места можно контролировать обмен с клиентами по множеству каналов связи. Какая-то двусмысленная фраза получилась ))) Поясню) Речь идет, конечно же, про АМО CRM. Годы идут, реклама рекламирует, директора и руководящий состав всё это впитывают, они (АМО) растут, у них появилось довольно неплохое API, а после недавних изменений OAUTH 2.0 (об этом подробнее в другой :-) ). Как с ним работать? Да легко)

Для начала создадим функцию для подключения:

Функция Подключение() Экспорт
	HTTPСоединение = Новый HTTPСоединение("XXX.amocrm.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
	HTTPЗапрос = Новый HTTPЗапрос("/private/api/auth.php"); 
	HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
	HTTPЗапрос.Заголовки.Вставить("USERAGENT", "amoCRM-API-client/1.0");
	HTTPЗапрос.Заголовки.Вставить("SSL_VERIFYPEER", 0);
	HTTPЗапрос.Заголовки.Вставить("SSL_VERIFYHOST", 0);		
	HTTPЗапрос.УстановитьТелоИзСтроки("USER_LOGIN=***ЛОГИН АМО***&USER_HASH=***ХЕШ ПАРОЛЬ***", КодировкаТекста.UTF8, ИспользованиеByteOrderMark.Авто);
    Попытка
		Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		Куки = Ответ.Заголовки.Получить("Set-Cookie");
		Возврат Куки
	исключение
		сообщить("Не смог подключиться к Amo!", СтатусСообщения.ОченьВажное);
		Возврат Неопределено
	КонецПопытки;
КонецФункции 

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

Например, мы хотим обновить заказ в АМО:


//ЗаказСсылка - ссылка на заказ, или массив заказов, если нужно несколько за раз отправить
//Подключение - наши ранее созданные куки подключением
//Транзакция - уникальный идентификатор, где то созданный ранее для удобного ведения/чтения логов
Функция ОбновитьЗаказ(ЗаказСсылка, Подключение = Неопределено, Транзакция="")	
	Если Подключение = Неопределено тогда
		Куки = Подключение();
	иначе
		Куки = Подключение;
	КонецЕсли;   
	Если Куки = Неопределено тогда
		Возврат Неопределено //какие то проблемы с подключением
	КонецЕсли; 		
	ВремФайл = ПолучитьИмяВременногоФайла("json");
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.ОткрытьФайл(ВремФайл, "UTF-8");
	ЗаписьJSON.ЗаписатьНачалоОбъекта();
	ЗаписьJSON.ЗаписатьИмяСвойства("update");
	ЗаписьJSON.ЗаписатьНачалоМассива();
	Если ТипЗнч(ЗаказСсылка) = Тип("ДокументСсылка.ЗаказПокупателя") тогда
		ДобавитьВМассив(ЗаписьJSON,ЗаказСсылка, Транзакция);//Заполняем телом заказа
	иначеЕсли ТипЗнч(ЗаказСсылка) = Тип("Массив") тогда
		для чч=0 по ЗаказСсылка.Количество()-1 цикл
			ДобавитьВМассив(ЗаписьJSON,ЗаказСсылка[чч], Транзакция); //Заполняем телами заказов
		КонецЦикла; 
	КонецЕсли; 
	ЗаписьJSON.ЗаписатьКонецМассива();
	ЗаписьJSON.ЗаписатьКонецОбъекта();
	ЗаписьJSON.УстановитьСтроку();
	ЗаписьJSON.Закрыть();
	Текст = Новый ТекстовыйДокумент;
	Текст.Прочитать(ВремФайл, "UTF-8");
	СтрокаJSON = Текст.ПолучитьТекст();
	HTTPСоединение = Новый HTTPСоединение("XXX.amocrm.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
	HTTPЗапрос = Новый HTTPЗапрос("/api/v2/leads"); ///api/v2/leads
	HTTPЗапрос.Заголовки.Вставить("RETURNTRANSFER", Истина);
	HTTPЗапрос.Заголовки.Вставить("USERAGENT", "amoCRM-API-client/1.0");
	HTTPЗапрос.Заголовки.Вставить("URL", "https://XXX.amocrm.ru/api/v2/leads");
	HTTPЗапрос.Заголовки.Вставить("CUSTOMREQUEST", "POST");
	HTTPЗапрос.Заголовки.Вставить("POSTFIELDS", КодироватьСтроку(СтрокаJSON,СпособКодированияСтроки.КодировкаURL));
	HTTPЗапрос.Заголовки.Вставить("HEADER", Ложь);
	HTTPЗапрос.Заголовки.Вставить("Cookie", Куки);
	HTTPЗапрос.Заголовки.Вставить("SSL_VERIFYPEER", 0);
	HTTPЗапрос.Заголовки.Вставить("SSL_VERIFYHOST", 0);		
	HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.Авто);
	Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	Если Ответ.КодСостояния = 200 тогда
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
		ОтветВСтруктуре1С = ПрочитатьJSON(ЧтениеJSON);
		Если ОтветВСтруктуре1С<>Неопределено тогда
			Возврат ОтветВСтруктуре1С._embedded.items[0].id;
		иначе
			Возврат Ложь // подключились, но что то пошло не так
		КонецЕсли; 		
	иначе
		Возврат Ложь // подключились, но что то пошло не так
	КонецЕсли; 			
КонецФункции

Вот и пригодились куки) А если в первый раз вызывается функция обновления заказа, ну ничего, вызовется функция подключения.

Код сокращен до минимума из первоначального моего варианта, чисто показать пример, кое что, кое где в этом варианте уже не очень логично.

Всем удачи! )

АМО интеграция обмен WEB

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2133    2    0    

9

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    1865    1    1    

4

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С. Бесплатный период Техподдержки - 1 месяц.

60000 руб.

07.05.2019    34171    63    45    

24

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    3370    3    2    

4

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18527    53    50    

29

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18773    20    22    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. xxxAndricxxx 66 15.11.19 10:29 Сейчас в теме
Вместо XXX.amocrm.ru указываете Ваш домен на амо
2. denic73 15.11.19 10:50 Сейчас в теме
А разве не "..Механизм oAuth авторизации пришел на смену устаревшему механизму API-ключей пользователей" ? И метод и адрес ресурса авторизации - POST /oauth2/access_token
3. xxxAndricxxx 66 15.11.19 11:00 Сейчас в теме
(2) да вроде "разве не" )) можно и так ))
4. denic73 15.11.19 11:04 Сейчас в теме
(3) по вашему методу новые пользователи, которые решат создать интеграцию, уже не авторизуются, потому как API ключа им уже не предоставляют. А есть у них client_id и client_secret для получения токенов.
xxxAndricxxx; +1 Ответить
5. xxxAndricxxx 66 15.11.19 11:15 Сейчас в теме
(4) ок, ну значит не всем подходит способ ) в принципе там не много переделать ) как нибудь расскажу с учетом Вашей поправки, спасибо )
6. Region102 18.11.19 08:41 Сейчас в теме
Лучше один раз увидеть https://www.youtube.com/watch?v=hDbZJFSARhU&list=PLkvJd0RKh5mn_BAUSplPBXrTLSeFgyNvP чем 100 раз прочитать )
maksa2005; AlbinaAAA; serg-lom89; bobnonga; RustIG; +5 Ответить
7. daab 02.12.20 20:34 Сейчас в теме
(6) уже не актуально
с 1 июля 2020 amocrm убрали апи ключ из профиля пользователя, предлагая перейти на авторизацию oauth.
9. Region102 03.12.20 17:10 Сейчас в теме
(7) Уже есть более актуальное видео на эту же тему https://infostart.ru/video/w1251268/
10. paxan 09.02.21 16:38 Сейчас в теме
11. romankoav 4 01.03.21 23:33 Сейчас в теме
(10) не битая от того же автора https://www.youtube.com/watch?v=KaS3drB1i4Y
Bassgood; cheburashka; +2 Ответить
12. paxan 17.03.21 14:35 Сейчас в теме
8. пользователь 02.12.20 21:12
Сообщение было скрыто модератором.
...
13. acesdjazzz999 20.06.23 15:26 Сейчас в теме
Вопрос на засыпку. Нет у меня сайта с SSL, а интеграцию с 1С хочется.
Что указывать в Редиректе URI при создании интеграции в amo?
Оставьте свое сообщение