# RetailCRM: Процедуры

## RetailCRM: Процедуры для настройки сценариев

***

* [Чат с оператором](#chat-s-operatorom)
* [Контакты](#rabota-s-kontaktami)
  * [Новый контакт](#sozdat-kontakt)
  * [Поиск контакта](#naiti-kontakt)
  * [Изменение контакта](#redaktirvoat-kontakt)
* [Сделки](#rabota-so-sdelkami)
  * [Новая сделка](#sozdat-sdelku)
  * [Поиск сделки](#naiti-sdelku)
  * [Изменение сделки](#redaktirovat-sdelku)

***

## Чат с оператором

Начать чат с оператором через RetailCRM.

```
{% retail.enable text=<Тест сообщения> %}
```

Параметры процедуры:

* `text` _(string)_ <mark style="color:red;">\*</mark> – Текст сообщения
* `team` _(string)_ – Название команды операторов в Fasttrack
* `operator_email` _(string)_ – Почта оператора в Fasttrack

\[ ⚠️ ] Ограничения:

* Нельзя одновременно указывать `team` и `operator_email`

\[ ✏️ ] Заметки:

* Если указать только `text`, то чат-сессия будет открыта с командой по умолчанию

## Контакты

Процедуры для работы с контактами в RetailCRM.

### Новый контакт

Процедура для создания нового контакта в RetailCRM:

```
{% retail.create_contact phone_number=<телефон> <поля контакта> as contact %}
```

* `phone_number` _(string)_ <mark style="color:red;">\*</mark> – Номер телефона

Поля для заполнения:

* `email` _(string)_ – Арес электронной почты
* `first_name` _(string)_ – Имя
* `last_name` _(string)_ – Фамилия
* `custom_fields` _(object)_ – Дополнительные поля

Методы для процедуры:

* `contact.id_done` – метод для проверки результата создания контакта. Возвращает `true`, если контакт успешно создан, и `false`, если произошла ошибка.

Примеры:

<details>

<summary>Пример 1: Создать контакт в RetailCRM (только телефон)</summary>

{% code overflow="wrap" %}
```
{# Создать контакт в RetailCRM #}
{% retail.create_contact phone_number="+79001234567" as contact %}
```
{% endcode %}

</details>

<details>

<summary>Пример 2: Создать контакт в RetailCRM (имя, телефон, почта)</summary>

{% code overflow="wrap" %}
```
{# Создать контакт в RetailCRM #}
{% retail.create_contact name="Олег" phone_number="+79991234567" email="name@example.com" as contact %}
```
{% endcode %}

</details>

<details>

<summary>Пример 3: Создать контакт в RetailCRM (имя, телефон, доп. поля)</summary>

{% code overflow="wrap" %}
```
{# Создать список доп. полей #}
{% createobj custom_fields %}
  {
    "field_1": "Значение 1",
    "field_1": "Значение 2"
  }
{% endcreateobj %}

{# Создать контакт в RetailCRM #}
{% retail.create_contact name="Олег" phone_number="+79991234567" custom_fields=custom_fields as contact %}
```
{% endcode %}

</details>

<details>

<summary>Пример 4: Проверка результата с помощью метода <code>is_done</code></summary>

{% code overflow="wrap" %}
```
{# Создать контакт в RetailCRM #}
{% retail.create_contact name="Олег" phone_number="+79991234567" as contact %}

{# Проверка результата #}
{% if contact.is_done %}
  {% send_text "Контакт создан." %}
{% else %}
  {% send_text "Что-то пошло не так..." %}
{% endif %}
```
{% endcode %}

</details>

### Поиск контакта

Ниже приведен список процедур для поиска информации о контакте в RetailCRM по одному из параметров: `Идентификатор`, `Телефон` или `Почта`.

#### Найти контакт по ID

```
{% retail.get_contact_by_uid uid=<ID контакта> as contact %}
```

* `uid` _(integer)_ <mark style="color:red;">\*</mark> – ID контакта в RetailCRM

#### Найти контакт по номеру телефона

```
{% retail.get_contact_by_phone_number phone_number=<Телефон> as contact %}
```

* `phone_number` _(string)_ <mark style="color:red;">\*</mark> – Номер телефона

#### Найти контакт по адресу эл. почты

```
{% retail.get_contact_by_email email=<Почта> as contact %}
```

* `email` _(string)_ <mark style="color:red;">\*</mark> – Арес электронной почты

### Изменение контакта

Изменить информацию о контакте в RetailCRM по его id, телефону или почте.

#### Редактировать контакт по ID

```
{% retail.edit_contact_by_uid uid=<ID контакта> <поля контакта> as contact %}
```

* `uid` _(integer)_ <mark style="color:red;">\*</mark> – ID сделки в RetailCRM

Поля для редактирования:

* `phone_number` _(string)_ – Номер телефона
* `email` _(string)_ – Арес электронной почты
* `first_name` _(string)_ – Имя
* `last_name` _(string)_ – Фамилия
* `custom_fields` _(object)_ – Дополнительные поля

#### Редактировать контакт по номеру телефона

```
{% retail.edit_contact_by_phone_number phone_number=<Телефон> <поля контакта> as contact %}
```

* `phone_number` _(string)_ <mark style="color:red;">\*</mark> – Номер телефона

Поля для редактирования:

* `email` _(string)_ – Арес электронной почты
* `first_name` _(string)_ – Имя
* `last_name` _(string)_ – Фамилия
* `custom_fields` _(object)_ – Дополнительные поля

#### Редактировать контакт по адресу эл. почты

```
{% retail.edit_contact_by_email email=<Почта> <поля контакта> as contact %}
```

* `email` _(string)_ <mark style="color:red;">\*</mark> – Арес электронной почты

Поля для редактирования:

* `phone_number` _(string)_ – Номер телефона
* `first_name` _(string)_ – Имя
* `last_name` _(string)_ – Фамилия
* `custom_fields` _(object)_ – Дополнительные поля

## Сделки

Процедуры для работы со сделками в RetailCRM.

### Новая сделка

Процедура создания сделки для контакта в RetailCRM.

```
{% retail.create_deal contact_id=<ID контакта> <поля сделки> as deal %}
```

* `contact_id` _(integer)_ <mark style="color:red;">\*</mark> – ID контакта в RetailCRM

Поля для редактирования:

* `number` _(string)_ – Номер сделки
* `custom_fields` _(object)_– Дополнительные поля

### Поиск сделки

Процедура получения информации о сделке в RetailCRM по ее идентификатору:

```
{% retail.get_deal uid=<ID сделки> as contact %}
```

`uid` _(integer)_ <mark style="color:red;">\*</mark> – ID сделки в RetailCRM

### Изменение сделки

Процедура изменения информации о сделке в RetailCRM по ее идентификатору:

```
{% retail.edit_deal uid=<ID сделки> <поля сделки> as deal %}
```

* `uid` _(integer)_ <mark style="color:red;">\*</mark> – ID сделки в RetailCRM

Поля для редактирования:

* `contact_id` _(integer)_ – ID контакта в RetailCRM
* `custom_fields` _(object)_ – Дополнительные поля
