API — это интерфейс программирования, который позволяет создавать, редактировать и управлять данными в Syenrgy CRM через ваше приложение. Интеграция СRМ по API помогает «связать» с нашей системой любой софт: программа будет сама синхронизироваться с приложениями и корпоративным ПО. Больше никакой рутины и переноса информации вручную!

Например, бухгалтерия оформит закрывающие документы по сделке в 1С, и это сразу отобразится в CRM, с которой работает отдел продаж. Вы избавитесь от ошибок, связанных с ручным копированием информации, и улучшите взаимодействие между подразделениями компании.

API Synergy CRM реализован на основе спецификации JSON API. Документация для разработчиков расположена по адресу api.syncrm.ru.
Примеры интеграции с CRM-системой по API
C 1C. Бухгалтерия
Синхронизируйте работу SYNEGRY CRM и программы бухгалтерского учета 1С. чтобы передавать данные между ними без промедления и ошибок.
С сайтом
Клиент зарегистрируется на сайте или добавит товар в корзину. А CRM-система сразу же создаст контакт и заявку. А также назначит менеджера и поставит ему задачу.
С мобильным приложением
Свяжите CRM и приложение, чтобы все заказы из него сразу попадали в систему. Удобно для такси, служб доставки и других сервисов.
С другими ПО
API - это универсальный инструмент. Он позволяет синхронизировать работу CRM с разными программами, в том числе и с корпоративным ПО.
В нашей CRM системе можно делать очень много, но при условии, что Вам действительно это нужно и Вы уже так работали.
Synergy CRM
Подключение телефонии через механизм
«Synergy telephony engine»
Интеграция подойдет тем, кто готов самостоятельно реализовать отправку данных (со своего сервера телефонии) о звонках в Synergy CRM и обработку запросов на заказ звонка от Synergy CRM.
1. Подключение на стороне Synergy CRM:
В настройках системы, в подразделе Интеграции выбираем интеграцию, "Synergy API", далее в появившемся окне указываем:
  • адрес заказа звонка (например https://my_telephony_host.ru/order/call)
  • token/ключ доступа (любой набор символов, по нему мы сможем проверить целостность данных)
  • включение проверки целостности данных (не обязательно)
После сохранения формы, в блоке с телефониями появится ваша интеграция. Кликнув вашей телефонии отобразится модальное окно, в котором будет указан URL уведомлений (вида https://telephony.app.syncrm.ru/telephony_external...), на который необходимо будет отправлять POST запросом информацию о звонках. Так же в этом окне необходимо будет указать каким сотрудникам какие внутренние номера соответствуют.

2. Заказ звонка из Synergy CRM
После того, как пользователям будут присвоены внут. номера, то любое нажатие на номер контакта/компании будет вызывать popover-окно, где можно будет инициировать заказ звонка. Технически в этот момент произойдет отправка POST-запроса на URL который указан в первом пункте, в теле POST-запроса будут указаны:
{
src_number: '200',
dst_number: '79999999999',
signature*: 'dac5f5967202b4cf6a0e075f4b9db3ce'
}

* Расчет поля signature был выполнен методом MD5 от строки: dst_number79999999999src_number200TOKEN
В качестве ответа на запрос, ожидается получение 200 серверного статуса. При многократном (5 попыток) получении статуса отличного от 200, интеграция клиента в SynergyCRM переводится из активного, в неактивный режим и указывается причина.
Signature поле заполняется только в случае, когда в настройках интеграции выставлен флаг "Проверка данных".
3. Уведомления о звонках из АТС в Synergy CRM
Для доставки информации о звонках в Synergy CRM необходимо на выданный URL (см 1 пункт) отправлять POST запросом следующие атрибуты звонка:
* обязательные поля
Уточнение по обязательным полям, в зависимости от направления звонка (взято из API, т.к. логика обработки запросов одна и та же)
Сценарий доставки уведомлений может быть двух видов:

  1. отправка уведомлений по мере их инициализации на сервере телефонии Например, как только поступил входящий звонок, то формируется запрос в котором указаны: src_number=79999999, dst_number=100 и started_at=2016-12-06…, call_id=MasOIEqwe1aq
Далее, как только была поднята трубка, то отправляется ещё один запрос с дополненными атрибутами: src_number=79999999, dst_number=100, started_at=2016-12-06…, call_id=MasOIEqwe1aq, status=answered, answered_at=2016-12-06….

Далее, звонок был завершен, повторяем отправку с новой информацией: src_number=79999999, dst_number=100, started_at=2016-12-06…, call_id=MasOIEqwe1aq, status=answered, answered_at=2016-12-06…, completed_at=2016-12-06…, duration=1000, recording=https://URL

Не забываем, что каждый запрос должен содержать рассчитанный хэш в поле signature (только если опция проверки данных включена в настройках интеграции).

  1. отправка уведомления (один звонок-одно уведомление) По окончанию звонка или по таймауту сервер телефонии делает отправку истории звонков.
В момент обработки уведомлений, на стороне SynergyCRM происходит следующее:

  1. Принимается POST запрос, инициализируются обработчики интеграции клиента
  2. Проверяется валидность и значение поля signature
  3. Создается звонок
  4. Если звонок входящий, то пользователям находящимся в онлайне отображается тостер (окно в нижнем правом углу), в котором перечислены ссылки на компании и контакты, которые имеют этот же самый номер, что и в звонке. Далее если пользователь нажмет на гиперссылку, то откроется миникарточка объекта.
  5. Формируется ответ SynergyCRM в ответ на POST запрос отвечает 200 серверным статусом, а так же в теле ответа содержится json с информацией по созданному объекту звонка.
Дополнение: Синхронный ответ с телом объекта, в ближайшее время будет заменен на ID звонка в очереди обработки звонков, узнать о статусе обработки можно будет воспользовавшись методами https://api.syncrm.ru/#telephony_calls.

Правило расчета подписи (signature)
Целостность запросов как в случае с заказом звонка так и в случае с уведомлениями, можно проверить по хэшу в поле signature. Для этого необходимо сгенерировать хэш алгоритмом md5 от строки параметров и значений, отсортированной в алфавитном поряке по имени ключа и добавленным токеном в конец этой строки.

Исходные параметры:
{
dst_number: '100',
src_number: '200',
direction: 'internal',
duration: '1000',
started_at: '2016-11-26T12:07:51.572+03:00'
}

Сортируем в алфавитном порядке по ключу:
{
direction: 'internal',
dst_number: '100',
duration: '1000',
src_number: '200',
started_at: '2016-11-26T12:07:51.572+03:00'
}

Преобразуем в строку и добавим в конец токен: directioninternaldst_number100duration1000src_number200started_at2016-11-26T12:07:51 .572+03:00TOKEN

Генерируем от полученной строки хэш: 4655a2c26466969e1c73f5ed4a8df503