Перейти к публикации

Пример Интеграции С 1С


Malfarion

Рекомендованные сообщения

8 часов назад, Igor сказал:

По интеграциям есть подробная инструкция: https://zadarma.com/ru/support/instructions/crm-zadarma/

Основная часть интеграции работает на вебхуках, для их приема нужен свой https сервер, который тоже не бесплатен обычно :)

Так что ни за что не платить боюсь не выйдет.

Мы не делаем своей интеграции, так как поддерживать все версии и варианты сборок 1С у нас нет возможности, это точно не работа телефонного оператора.

 

 

Все верно, конфигураций много так как и движков сайтов и срм.  На PHP пример у вас есть, и успешно запущен. Я про другое, неплохо бы было простой пример с авторизацией и отправкой запросов.
С вебхуками - разобрался, все ок. А от формирования подписи - проблема. Не проходит авторизация для отправки запросов.(((

 

Ссылка на комментарий

Именно разработчиков по 1С у нас нет, но спросил у других, вот написали ответ:

 

функций 1С должно хватать

Подпись составляется по следующему алгоритму:

1. массив из передаваемых параметров (GET, POST, PUT, DELETE) сортируется по названию ключа по алфавиту;
2. из полученного массива формируется строка запроса (например, функция http_build_query в PHP), пример "from=DATEFROM&to=DATETO…";
3. и далее - соединяется по формуле: строка = имя_метода строка_запроса md5( строка_запроса ), где "имя_метода" - строка запроса, начиная от домена (с указанием версии АПИ), до начала перечисления параметров, например - '/v1/sip/'
4. полученная строка хешируется по алгоритму sha1 с секретным ключом пользователя: хеш = hash( строка, секретный_ключ )
5. и далее хеш кодируется в base64 подпись = base64_encode( хеш )

Для 1С что-то вроде
1. В 1С нет ассоциативных массивов вроде. поэтому как вариант сделать массив сразу в том формате, который нужен в подписи. Например, первый элемент массива Параметр1=Значение1
Сортируется потом как-то так массив
Список = Новый СписокЗначений; // Подготовительные действия: создание списка значений
Список.ЗагрузитьЗначения(Массив); // Этап 1
Список.СортироватьПоЗначению(НаправлениеСортировки.Возр); // Этап 2
Массив = Список.ВыгрузитьЗначения(); // Этап 3


2. циклом по массиву расставить параметры в нужном порядке в строке, которая должна иметь вид
параметр1=значение1&параметр2=значение2&...&параметрN=значениеN то есть между каждым элементом массива из предыдущего цикла добавить символ &

3. далее получить строку, объединив ИМЯ_МЕТОДА (например, /v1/balance), строку из пункта 2, md5 строки из пункта 2
MD5ХешСтрока

4. далее получение хэша sha1 следующей строки, которая объединяет два параметра: строка из предыдущего пункта и секретный ключ апи клиента
Хеширование = Новый ХешированиеДанных(ХешФункция.SHA1);
Хеширование.Добавить("МояСтрока");
Хеш = Хеширование.ХешСумма;

5. закодировать строку из пункта 4 в base64
примеры функции есть в сети

Функция Base64(ВходящаяСтрока)

   ВременныйФайл = ПолучитьИмяВременногоФайла("base64_txt");
   
   ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл, "CESU-8");
   ЗаписьТекста.Записать(ВходящаяСтрока);
   ЗаписьТекста.Закрыть();
   
   ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
   СтрокаBase64 = Base64Строка(ДвоичныеДанные);
   
   УдалитьФайлы(ВременныйФайл);
   
   Возврат СтрокаBase64;

КонецФункции 

 

Ссылка на комментарий
  • 2 месяца спустя...

Имеем 1с УНФ (на базе облака 1c fresh). Хотим интегрировать с телефонией zadarma, но не понятно как. Думали через simplit.io, но у них решение только для коробки (локальная или серверная), в облаке не работает :(

Есть еще какие-то варианты по интеграции?

Ссылка на комментарий
  • 1 месяц спустя...
  • 1 месяц спустя...

Привет,

Странная ситуация - УНФ поддерживает больше 60 операторов телефонии, а вас не поддерживает) 

 

https://its.1c.ru/db/metod81#content:7056:hdoc

 

Спасение утопающих, дело самих утопающих) 

Сервисы в целом есть по интеграции, но не хочется за них платить абонентку))) 

 

Итак удалось частично победить

1) Из Задарма делаются исходящие звони

2)Загружается статистика и звонки. 

 

https://infostart.ru/public/1231876/ вот рабочая интеграция без абонентской платы. Единственное, что в ней нет, это входящих звонков - открытая конфигурация

Как раз сейчас над ними работаю 

Что не выходит с входящими звонками. 

Не могу пройти авторизацию 

 

Для того, чтобы система приняла ссылку, необходимо добавить проверочный код вначале скрипта.

Пример на PHP:

<?php if (isset($_GET['zd_echo'])) exit($_GET['zd_echo']); ?>

 

на 1С это выглядит вот так 

Функция EventPostPOST(Запрос)
    ТелоЗапроса = РаскодироватьСтроку(Запрос.ПолучитьТелоКакСтроку(), СпособКодированияСтроки.КодировкаURL);
    
    Если НЕ ЗначениеЗаполнено(ТелоЗапроса) Тогда // Проверочный запрос при первом подключении webhook в личном кабинете.
        Возврат НовыйHTTPСервисОтветZadarma(Запрос.Заголовки, 200);
    КонецЕсли;
КонецФункции
 

Функция НовыйHTTPСервисОтветZadarma(ЗаголовкиВходящегоЗапроса, КодСостояния)
    
    Ответ = Новый HTTPСервисОтвет(КодСостояния);
    
    ПодписьКлюч = "zd_echo";
    ПодписьЗначение = ЗаголовкиВходящегоЗапроса.Получить(ПодписьКлюч);
    Если ПодписьЗначение <> Неопределено Тогда
        Ответ.Заголовки.Вставить(ПодписьКлюч, ПодписьЗначение);
    КонецЕсли;
    
    Возврат Ответ;
    
КонецФункции

 

Однако проблема, в том что Задарма не шлет запросы, при добавлении УРЛ, пишет ссылка не валидирована. Проверяю Онлайн генератором запросов, механизм рабочий. 

В режиме отладчика отлавливаю запросы - с тестовых страниц идут, отладчик видит. С задармы не одного запроса не идет, при этом ссылка не валидирована1609363890_56456.thumb.JPG.ab2791194a904ecf94603936c612cf57.JPG

 

 

 

Ссылка на комментарий

Победил я авторизацию первую моей ссылки Вебхук. 

Смысл такой, у меня все было сделано под POST запрос, а первый раз Задарма АПИ шлет ГЕТ))) А я ждал ПОСТ. 

По факту, нужно сделать первый раз ГЕТ HTTP Сервис в 1С. Прописать в КОДЕ

обработку как GET , после прохождения валидации ссылки, уже переписать на POST обработку

 

Функция EventGET(Запрос)
    
    //По факту это пост будет запрос
    
    //Первый раз валидация ссылки, надо ответить GET запросом 
    
    ПервыйРАзЗадарма=Ложь;
    
    Если ПервыйРАзЗадарма тогда
        Ответ = Новый HTTPСервисОтвет(200);
        
        Параметр1=Запрос.ПараметрыЗапроса.Получить("zd_echo");
        Ответ.УстановитьТелоИзСтроки(Параметр1);
        Возврат Ответ;
        
    Иначе
     /// Обработка как POST запроса     
        
    КонецЕсли;
    
КонецФункции
 

 

 

https://zadarma.com/ru/support/instructions/crm-zadarma/ вот тут это было написано

 

Валидация ссылки происходит после нажатия кнопки “Добавить”, на ссылку отправляется произвольный набор символов, например 1234567, согласно вышеуказанному коду ссылка должна вернуть отправляемое значение, без дополнительных символов, пробелов, BOM-последовательностей и т.д. Если валидация ссылки не проходит проверьте какое значение возвращает ссылка, отправьте curl запрос на вашу ссылку добавив к ней ?zd_echo=1234567


 curl https://mybestcrm.com/zadarma?zd_echo=1234567

В ответ ссылка должна вернуть отправляемое значение 1234567

Если там пусто или другое значение отличное от 1234567 - валидация не пройдет.

Для увеличения безопасности, рекомендуем разрешить доступ к вашей ссылке только с IP 185.45.152.42 В каждом запросе на Вашу ссылку будет приходить дополнительный заголовок "Signature", по которому также сможете сверять целостность и подлинность данных. Подробнее тут

 

Буду смотреть, как теперь хуки приходят и что с ними делать

 

 

 

Сним213123123ок.JPG

Ссылка на комментарий
05.06.2021 в 20:56, rassigor сказал:

 

Странная ситуация - УНФ поддерживает больше 60 операторов телефонии, а вас не поддерживает) 

Мы им писали на этот счет, и не просто "с улицы" а через предоставленные партнерами контакты. Увы ответа не последовало.

Ссылка на комментарий
  • 1 месяц спустя...

Я не силен в 1С, но если УНФ работает в браузере, вы можете установить плагин для chrome: https://zadarma.com/ru/support/instructions/click-to-call-chrome/

Как минимум звонить на любой номер он даст без проблем и в один клик.

Ссылка на комментарий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...