# retailCRM

## Описание

Данная инструкция поможет вам настроить отправку клиентов из [retailCRM](https://retailcrm.ru) в InSkill с выдачей доступа в личный кабинет.&#x20;

Отправка данных может происходить при определенных условиях: смена статуса заказа, изменение статуса оплаты и др.

### Как это работает

Интеграция работает на основе следующих функций:

* **Триггеры** retailCRM ([подробнее в документации](https://help.retailcrm.ru/Users/Triggers))
* **API** InSkill ([документация по API](https://docs.inskill.ru/api/))

#### Схема работы

1. При смене статуса заказа (или другом условии) происходит срабатывание триггера.
2. Триггер отправляет HTTP-запрос в сторону API InSkill.
3. Запрос содержит контактные данные клиента (email, телефон, ФИО). Также в запросе может быть указан ID продукта, который нужно выдать клиенту.
4. Происходит выдача доступа клиенту (генерация пароля и отправка приветственного письма на email клиента).

### Что нужно для настройки

* У вас должен быть доступ в retailCRM (в раздел "Администрирование -> Коммуникации").
* У вас должен быть API-ключ InSkill ([как получить ключ](https://docs.inskill.ru/api#dostup-k-api)).
* Вы должны знать адрес своего проекта в InSkill, например: `https://onegym.inskill.ru`

## Настройка

### Создание триггера

**1.** Зайдите в свой аккаунт retailCRM.

**2.** Перейдите в раздел "Администрирование - Коммуникации - Триггеры":

![Раздел "Триггеры"](https://571855547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXbwPhYilh-a8-Qmi0v%2F-Lirw4m56VkZBmMJDiEq%2F-Lirzpj-IlY6_CClgysI%2Fimage.png?alt=media\&token=29565029-7b52-45e4-9d20-16f944c9e7a2)

**3.** Нажмите "Добавить +" для создания нового триггера:&#x20;

![](https://571855547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXbwPhYilh-a8-Qmi0v%2F-Lirw4m56VkZBmMJDiEq%2F-Lis-j7L5lUSYrf-MEbN%2Fimage.png?alt=media\&token=53c90db5-6647-430b-b5c8-d74634003183)

**4.** Укажите название триггера, например "Выдача доступа в InSkill".

**5.** Выберите из списка подходящее событие, при котором будет срабатывать триггер:

![Обязательно заполните название и выберите событие](https://571855547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXbwPhYilh-a8-Qmi0v%2F-Lirw4m56VkZBmMJDiEq%2F-Lis03eEuxJ078RxGT1o%2Fimage.png?alt=media\&token=396309f7-e505-4bc6-98a1-5968f194af9d)

**6.** Настройте фильтр (при необходимости). Фильтр нужен, если вы хотите применить триггер только к некоторым объектам.&#x20;

Например, если триггер должен срабатывать только для заказов суммой больше 1 000 рублей, тогда фильтр будет выглядеть так:

```
order.getSumm() > 1000
```

Подробности ищите в [синтаксисе](https://help.retailcrm.ru/Developers/ExpressionLanguage) и [справочнике объектов](https://help.retailcrm.ru/Developers/ObjectsReference).

**7.** Настройте условие применения триггера. Это поле необходимо заполнить,  чтобы триггер срабатывал только для при определенных событиях: например, изменение статуса - переход в статус "Выполнен" (complete):

```
changeSet.hasChangedField("status") and 
changeSet.getNewValue("status").getCode() == "complete"
```

Примеры некоторых выражений можно посмотреть [здесь](https://help.retailcrm.ru/Developers/TriggerRules?from=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B8.%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B8%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80%D0%BE%D0%B2).

**8.** Добавьте действие "Выполнить HTTP-запрос":&#x20;

![](https://571855547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXbwPhYilh-a8-Qmi0v%2F-Lirw4m56VkZBmMJDiEq%2F-Lis4QLjNqOznjMKT9au%2Fimage.png?alt=media\&token=01f0d772-01bd-4efd-a3bc-d5f1c4d64aa1)

**9.** Заполните поле "Адрес" следующим образом:

```
https://ХХХХХХ.inskill.ru/api/v3/students
```

где **ХХХХХХ** - поддомен вашего проекта.

{% hint style="warning" %}
Внимательно проверьте адрес: он должен указывать на поддомен вашего проекта.

Пример адреса для проекта "**onegym**":

**<https://onegym.inskill.ru/api/v3/students>**
{% endhint %}

**10.** Укажите HTTP-заголовки для авторизации запросов.&#x20;

Нажмите "Добавить заголовок",  заполните поля:

* В поле "Заголовок" введите: `Authorization`
* В поле "Значение" введите: `Bearer {token}`, где `{token}` - ваш [ключ от API InSkill](https://docs.inskill.ru/integrations/retailcrm/#chto-nuzhno-dlya-nastroiki).\
  **Обратите внимание:** после слова `Bearer` обязательно должен быть пробел.

![Вот что должно получиться ](https://571855547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXbwPhYilh-a8-Qmi0v%2F-Lirw4m56VkZBmMJDiEq%2F-Lis6EPIHX3XAtTl-2tG%2Fimage.png?alt=media\&token=3c04f9f5-5823-43e9-aac4-472504aac2ed)

**11.** Выберите HTTP метод отправки запросов: **POST**.

**12.** Выберите  способ передачи параметров запроса.&#x20;

В поле "Передавать параметры" выберите: **В строке запроса**.

**13.** Добавьте параметры запроса.

Список доступных параметров:

| Параметр    | Обязательный | Описание                                                                                                                                        |
| ----------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **email**   | **Да**       | Электронная почта клиента, на которую будет выдан доступ.                                                                                       |
| **product** | Нет          | ID продукта из личного кабинета InSkill, который будет присвоен клиенту.                                                                        |
| **force**   | Нет          | Определяет, присваивать ли продукт, если клиент уже есть в InSkill. Если force НЕ указан или равен **0**, то продукт НЕ будет добавлен клиенту. |
| **name**    | Нет          | ФИО клиента.                                                                                                                                    |
| **phone**   | Нет          | Телефон клиента.                                                                                                                                |

Подробнее о доступных параметрах - см. [документацию по API InSkill](https://docs.inskill.ru/api/students#create).

В поле "Значение" вы можете использовать шаблоны из [справочника объектов retailCRM](https://help.retailcrm.ru/Developers/ObjectsReference).

Пример заполнения:

![Пример заполнения параметров запроса](https://571855547-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXbwPhYilh-a8-Qmi0v%2F-Lis6ttpH2yxifwEdujQ%2F-Lis9ZT78G6idV6oKSPp%2Fimage.png?alt=media\&token=b7225864-153b-4d56-9020-c276c673aa10)

**14.** Сохраните триггер.

### Проверка триггера

Чтобы проверить работу триггера, вы должны смоделировать событие, которое приводит к запуску триггера.&#x20;

Например, если условие применения вашего триггера - это смена статуса заказа на "Выполнен" то вы можете создать тестовый заказ, указав свой email в качестве почты клиента и вручную перевести этот заказ в статус "Выполнено". При этом, должен сработать триггер и в личном кабинете InSkill будет добавлен новый клиент.

## Решение проблем

### Журнал

Чтобы посмотреть результаты работы вашего триггера, воспользуйтесь разделом "Настройки -> Журнал" в панели retailCRM.

Если в журнале есть записи о срабатывании вашего триггера, но клиент не был добавлен в личный кабинет InSkill - напишите нам на <support@inskill.ru> и приложение ошибку из журнала триггеров.
