> For the complete documentation index, see [llms.txt](https://help.1msg.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.1msg.io/docs/russkii/api-1msg/shablony-waba/shablon-karusel.md).

# Шаблон Карусель

## Общее описание

Шаблон  «Карусель» имеет два формата отправки:

### **Карусель с карточками с произвольным заполнением**

Максимальная гибкость под ваш сценарий. Идеально, если важна кастомизация и маркетинговая свобода.

* Вы сами формируете карусель: количество карточек, тексты, переменные и кнопки
* При отправке подставляете изображения и значения переменных
* Подходит для нестандартных акций, спецпредложений и контента под конкретный сегмент
* Полный контроль над визуалом и смыслом каждой карточки

<figure><img src="https://lh7-us.googleusercontent.com/DynBlcrLwlnQ4zF6YbeK695-16sly_eON6hfS7f6xZu-Zrvez0_9E-kGAE8wzoEK9R2xe38OXZpvePW25A91TSoFPlMTsQKy5TF90gEiYtUmEDPGxTJriZvxTDf3Fp20aDASSvGjixGVja-pX23lCmY" alt=""><figcaption><p>Шаблон "Карусель" в WhatsApp</p></figcaption></figure>

### **Карусель с карточками товара  из каталога WhatsApp**&#x20;

Быстро, автоматически и без ошибок. Идеально для масштабных рассылок и регулярных продаж

* Карточки подтягиваются напрямую из каталога WhatsApp
* Не нужно вручную заполнять описания, загружать изображения и настраивать кнопки
* Данные всегда актуальны: цена, название товара, описание, картинки.&#x20;
* Меньше человеческого фактора и ошибок при отправке

<figure><img src="https://1775018921-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoCNwQHK1ya1FkEe495Vr%2Fuploads%2F0DXY0nEJpqP8XtJ4jp5Z%2Fimage.png?alt=media&amp;token=2d4b36a2-ec1b-4c5f-80c1-2f9361638e1f" alt=""><figcaption></figcaption></figure>

### **Описание**

Шаблоны карусели позволяют отправлять одно общее текстовое сообщение (1) в сопровождении набора из 10 карточек карусели (2) с горизонтальной прокруткой.

Шаблон пользователи могут просматривать как с мобильных устройств, так и  в веб-клиенте WhatsApp.

**Возможности шаблона Карусель**

* Подборки помогут показать разный ассортимент товаров или услуг либо рассказать об одной интересующей линейке, но с разными вариациями.  Это лучше удовлетворит запрос клиента, а вам увеличит конверсию.&#x20;
* Продвигайте новинки, специальные предложения, акции на праздники и т.д.
* С помощью кнопок ведите вашего клиента к действию - например, предложите записаться на услугу, сделать заказ,  открыть сайт и т.д.&#x20;

### **Способы отправки**

Carousel можно отправлять двумя способами:

* [**Через шаблон**](#kak-otpravit-shablon-karusel) **(Template message)** — используется для отправки **вне 24-часового окна**. Требует предварительного создания и утверждения шаблона WhatsApp. Отправка **платная**.
* [**Как сервисное сообщение** ](#kak-otpravit-shablon-karusel-kak-servisnoe-soobshenie)— используется **внутри 24-часового окна диалога**. Шаблон не требуется. Отправка **бесплатная**.

## **Создание шаблона**

Создание шаблона описано[ в документации API ](https://1msg-docs.web.app/ru#tag/Shablony/operation/addTemplate)в методе /addTemplate.

Отличие от базового создания шаблона в добавлении нового типа CAROUSEL в компоненты и массива cards. Полный пример добавления шаблона Карусель добавлен ниже.&#x20;

#### **Основные правила создания шаблона:**

1. Шаблон обязательно должен иметь  общее и объединяющее по контексту текстовое сообщение (1).
2. Шаблон может содержать от 1 до 10 карточек.
3. Формат медиа-заголовка и типы кнопок должны быть одинаковыми для всех карточек.
4. Медиа-заголовок (изображение или видео) и текстовое сообщение обязательны для каждой карточки.
5. В каждой карточке должно быть не менее 1 кнопки, максимум - две кнопки.
6. Поддерживаются следующие типы кнопок: "Быстрый ответ", "URL" и "Номер телефона". Кнопки могут быть одного типа или сочетать в себе кнопки быстрого ответа, кнопки телефонного номера или кнопки URL для каждой карточки.
7. Не забывайте указывать примеры переменных, если вы добавили их в body, ссылку URL кнопок. Иначе шаблон будет отклонен Meta\*.

<details>

<summary>Пример создания шаблона "Карусель"</summary>

Ссылки указаны тестовые, при копировании не забудьте указать верные.  Пример наполнения взят из источника 360Dialog

```json
POST https://api.1msg.io/{{channel}}/addTemplate
Content-Type: application/json
Body: {
  "name": "marceting_carousel_01_test",
  "allow_category_change": true,
  "category": "MARKETING",
  "language": "en",
  "components": [
    {
      "text": "Summer is here, and we have the freshest produce around! Use code {{1}} to get {{2}} off your next order.",
      "type": "BODY",
      "example": {
        "body_text": [
          [
            "15OFF",
            "15%"
          ]
        ]
      }
    },
    /* Карточки Карусели */
    {
      "type": "CAROUSEL" // новый тип для шаблона Карусель
      "cards": [ 
        {
        /* Первая карточка карусели */
          "components": [ 
            {
              "type": "HEADER",
              "format": "IMAGE", 
              "example": {
                "header_handle": [
                  "https://img.example.com/delicious-background-orange-slices_23-2148231462.jpg"
                ]
              }
            },
            {
              "type": "BODY", 
              "text": "Rare lemons for unique cocktails. Use code {{1}} to get {{2}} off all produce",
              "example": { //Примеры параметров. Количество значений должно соответствовать количеству переменных, включенных в строку.
                "body_text": [
                  [
                    "150FF",
                    "10%"
                  ]
                ]
              }
            },
            {
              "type": "BUTTONS",
              "buttons": [
                {
                  "type": "QUICK_REPLY",
                  "text": "Send more like this #1"
                },
                {
                  "type": "URL",
                  "text": "Buy now",
                  "url": "https://www.luckyshrub.com/shop?promo={{1}}",
                  "example": [
                    "summer_lemons_2023"
                  ]
                }
              ]
            }
          ]
        },
        /* Вторая карточка карусели */
        {
          "components": [
            {
              "type": "HEADER",
              "format": "IMAGE",
              "example": {
                "header_handle": [
                  "https://img.example.com/top-view-citric-fruit-slices-table_23-2148495686.jpg"
                ]
              }
            },
            {
              "type": "BODY",
              "text": "Exotic fruit for unique cocktails! Use code {{1}} to get {{2}} off all exotic produce",
              "example": {
                "body_text": [
                  [
                    "20OFFEXOTIC",
                    "20%"
                  ]
                ]
              }
            },
            {
              "type": "BUTTONS",
              "buttons": [
                {
                  "type": "QUICK_REPLY",
                  "text": "Send more like this #2"
                },
                {
                  "type": "URL",
                  "text": "Buy now",
                  "url": "https://www.luckyshrub.com/shop?promo={{1}}",
                  "example": [
                    "exotic_produce_2023"
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
```

</details>

<details>

<summary>Пример создания шаблона "Карусель"​ с карточкой товара из WhatsApp </summary>

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

```json
POST https://api.1msg.io/{{channel}}/addTemplate
Content-Type: application/json
Body: {
  "name": "marceting_carousel_01_test",
  "allow_category_change": true,
  "category": "MARKETING",
  "language": "en",
  "components": [
    {
      "type": "BODY",
      "text": "Hi, {{1}}! Summer is here, and we have the freshest produce around!",
       "example": {
        "body_text": [
          [
            "Anna"
          ]
        ]
      }
    },
    {
      "type": "CAROUSEL",
      "cards": [
      /* Первая карточка карусели c товаром, заполнение ID товара */
      /* будет при отправке шаблона */
        {
          "components": [
            {
              "type": "HEADER",
              "format": "PRODUCT"
            },
            {
              "type": "BUTTONS",
              "buttons": [
                {
                  "type": "SPM",
                  "text": "View"
                }
              ]
            }
          ]
        },
         /* Вторавя карточка карусели c товаром, заполнение ID товара */
         /* будет при отправке шаблона */
        {
          "components": [
            {
              "type": "HEADER",
              "format": "PRODUCT"
            },
            {
              "type": "BUTTONS",
              "buttons": [
                {
                  "type": "SPM",
                  "text": "View"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
```

</details>

<table><thead><tr><th width="218">Параметры</th><th width="337.3333333333333">Описание</th><th>Пример</th></tr></thead><tbody><tr><td><p>BUBBLE_TEXT</p><p><em>String</em></p></td><td><p><strong>Обязателен</strong>.</p><p></p><p>Текстовое сообщение, что выводится выше карточек</p><p></p><p>Максимум 1024 символов.</p></td><td>Summer is here, and we've got the freshest produce around! Use code {{1}} to get {{2}} off your next order.</td></tr><tr><td><p>BUBBLE_TEXT_VAR_EXAMPLE</p><p>Array of strings</p></td><td><p>Обязателен, если в  bubble text используются переменные</p><p><br>Массив примеров строк переменных. Количество значений должно соответствовать количеству переменных, включенных в строку.</p></td><td>"15OFF","15%"</td></tr><tr><td><p>CARD_BODY_TEXT</p><p>String</p></td><td><p><strong>Обязателен</strong>.</p><p>Описание карточки. Поддерживает переменные</p><p>Максимум 160 символов.</p></td><td>Rare lemons for unique cocktails. Use code {{1}} to get {{2}} off all produce.</td></tr><tr><td><p>CARD_BODY_TEXT_VAR_EXAMPLE</p><p>Array of strings</p></td><td>Обязателен, если в текст карточки  содержит переменные</td><td>"15OFF","15%"</td></tr><tr><td><p>CARD_HEADER_FORMAT</p><p>Enum</p></td><td><p><strong>Обязателен</strong>.<br>Медиа-формат заголовка </p><p>(IMAGE илиVIDEO)</p></td><td>IMAGE</td></tr><tr><td><p>CARD_HEADER_HANDLE</p><p>Media asset handle</p></td><td><p><strong>Обязателен</strong>.</p><p>Пример отправляемого медиа</p></td><td></td></tr><tr><td><p>QUICK_REPLY_BUTTON_TEXT</p><p>String</p></td><td><p>Обязателен, если используется быстрая кнопка</p><p></p><p>Текст кнопки</p><p></p><p>Максимум 25 символов.</p></td><td>Send more like this #2</td></tr><tr><td><p>TEMPLATE_CATEGORY</p><p>Enum</p></td><td><p><strong>Обязателен</strong>.</p><p></p><p>Категория MARKETING или UTILITY.</p></td><td>MARKETING</td></tr><tr><td><p>TEMPLATE_LANGUAGE</p><p>Enum</p></td><td><p><strong>Обязателен</strong>.</p><p><br></p><p>Язык шаблона</p></td><td>en</td></tr><tr><td><p>TEMPLATE_NAME</p><p>String</p></td><td><p><strong>Обязателен</strong>.</p><p><br></p><p>Наименование шаблона</p><p><br></p><p>Максимум 512 символов.</p></td><td>marceting_carousel_01_test</td></tr><tr><td><p>URL_BUTTON_TEXT</p><p>String</p></td><td><p>Обязателен, если используется URL кнопка </p><p></p><p>Текст URL-кнопки. </p><p></p><p>Максимум 25 символов.</p></td><td>Buy now</td></tr><tr><td><p>URL_BUTTON_URL</p><p>String</p></td><td><p>Обязателен, если используется URL кнопка </p><p></p><p>URL на веб-ресурс, куда будет попадать пользователь при нажатии на кнопку-ссылку.</p><p></p><p>Поддерживает одну переменную в конце строки </p><p></p><p>Максимум 2000 символов.</p></td><td><a href="https://www.luckyshrub.com/shop?promo=%7B%7B1%7D%7D">https://www.luckyshrub.com/shop?promo={{1}}</a></td></tr><tr><td><p>URL_BUTTON_VAR_EXAMPLE</p><p>String</p></td><td><p>Обязателен, если используется URL кнопка </p><p></p><p>Пример URL на веб-ресурс, куда будет попадать пользователь при нажатии на кнопку-ссылку.</p><p></p><p>Поддерживает одну переменную в конце строки </p><p></p><p>Максимум 2000 символов.</p></td><td><a href="https://www.luckyshrub.com/shop?promo=summer_lemons_2023">https://www.luckyshrub.com/shop?promo=summer_lemons_2023</a></td></tr></tbody></table>

## Отправить шаблон Карусель

Отправка шаблона описана в [документации API ](https://1msg-docs.web.app/ru#tag/Shablony/operation/sendTemplate)в методе /sendTemplate.

Вы также можете отправить шаблон через раздел в личном кабинете "Кабинет разработчика" →["Тестирование запросов". ](https://my.1msg.io/testing/test-requests)Чтобы отправить шаблон, необходимо знать namespace, name и language шаблона. Чтобы получить эти данные, вызовите метод "Получить список шаблонов" (/templates).&#x20;

Некоторые свойства, которые могут вызвать вопросы в методе /sendTemplate.

Шаблон Карусель:

* Имеет свой type - CAROUSEL
* Объект с типом CAROUSEL содержит массив cards. Используется только для данного типа шаблона
* Каждая карточка содержит card\_index - порядок появления карточек в карусели карточек.0 означает первую карту, 1 означает вторую карту и т. д

<details>

<summary>Пример как отправить шаблон "Карусель"​</summary>

Пример шаблона из 2-ух карточек. Каждая карточка содержит кнопку быстрого ответа и url-кнопку. Медиа-заголовок - картинка.

```json
POST https://api.1msg.io/{{channel}}/sendTemplate
Content-Type: application/json
Body: {
  "namespace": "{{namespace}}", // Вызовите список шаблонов через метод /templates и найдете namespace для нужного шаблона
  "template": "marceting_carousel_01_test", // name шаблона
  "language": {
    "policy": "deterministic",
    "code": "en" // код language из запроса /templates
  },
  "params": [
    {
   /* Общее текстовое сообщение. Можно опустить, если в тексте нет переменных. */
      "type": "body", 
      "parameters": [
        {
          "type": "text",
          "text": "21OFF" // переменная {{1}} для общего текстового сообщения
        },
        {
          "type": "text",
          "text": "21" // переменная {{2}} для общего текстового сообщения
        }
      ]
    },
    {
      "type": "carousel",
      "cards": [
        /* Первая карточка */
        {
          "card_index": 0,
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "image",
                  "image": {
                    "link": "https://img.freepik.com/free-photo/top-view-citric-fruit-slices-table_23-2148495686.jpg"
                  }
                }
              ]
            },
            {
              "type": "button",
              "sub_type": "url",
              "index": 1,  // положение кнопки, начинается с 0. Тут url-кнопка вторая в последовательности, поэтому index=1
              "parameters": [
                {
                  "type": "text",
                  "text": "summer" // параметр в url ссылке
                }
              ]
            },
            {
             /* Текст карточки. Можно опустить, если в тексте не будет переменных. */
              "type": "body",
              "parameters": [
                {
                  "type": "text",
                  "text": "10F" // переменная {{1}} в первой карточке
                },
                {
                  "type": "text",
                  "text": "10" // переменная {{2}} в первой карточке
                }
              ]
            }
          ]
        },
        /* Вторая карточка */
        {
          "card_index": 1, 
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "image",
                  "image": {
                    "link": "https://img.freepik.com/free-photo/delicious-background-orange-slices_23-2148231462.jpg"
                  }
                }
              ]
            },
            {
              "type": "button",
              "sub_type": "url",
              "index": 1, // положение кнопки, начинается с 0. Тут url-кнопка вторая в последовательности, поэтому index=1
              "parameters": [
                {
                  "type": "text",
                  "text": "winter" // параметр в url ссылке
                }
              ]
            },
            {
             /* Текст карточки. Можно опустить, если в тексте не будет переменных. */
              "type": "body",
              "parameters": [
                {
                  "type": "text",
                  "text": "30F" // переменная {{1}} во второй карточке
                },
                {
                  "type": "text",
                  "text": "30" // переменная {{2}}  во второй карточке
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "phone": "+556123122026"
}
```

</details>

<details>

<summary>Пример как отправить шаблон "Карусель"​ с карточкой товара из WhatsApp </summary>

Пример шаблона из 2-ух карточек товара из каталога WhatsApp&#x20;

```json
POST https://api.1msg.io/{{channel}}/sendTemplate
Content-Type: application/json
Body: {
  "namespace": "{{namespace}}", // Вызовите список шаблонов через метод /templates и найдете namespace для нужного шаблона
  "template": "marketing_carousel_01_test", // name шаблона
  "language": {
    "policy": "deterministic",
    "code": "en" // код language из запроса /templates
  },
  "params": [
    {
      "type": "body",
      "parameters": [
        {
          "type": "text",
          "text": "Anna"
        }
      ]
    },
    {
      "type": "carousel",
      "cards": [
        /* Первая карточка */
      {
          "card_index": 0,
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "product",
                  "product": {
                    "product_retailer_id": "0001",
                    "catalog_id": "{{catalog_id}}"
                  }
                }
              ]
            }
          ]
        },
          /* Первая карточка */
        {
          "card_index": 1,
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "product",
                  "product": {
                    "product_retailer_id": "0002",
                    "catalog_id": "{{catalog_id}}"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "phone": "{{phone}}"
}
```

</details>

## Отправить Карусель как сервисное сообщение&#x20;

Для отправки Карусель как сервисное сообщение используйте метол /[sendCarousel](https://1msg-docs.web.app/ru#tag/Obmen-soobsheniyami/operation/sendCarousel)

Для такого способа отправки заранее не надо создавать шаблон Meta.

Структура сообщения во многом аналогична отправке шаблона. Однако в данном случае необходимо **явно указывать все элементы**, которые при работе с шаблонами создаются заранее. Это связано с тем, что сообщение отправляется **без использования шаблона**.

В шаблоне могут быть либо 1 кнопка URL либо одна или несколько кнопок быстрого ответа.&#x20;

<details>

<summary>Пример как отправить "Карусель"​ </summary>

Пример шаблона из 2-ух карточек. Каждая карточка содержит кнопку 2 кнопки быстрого ответа. Медиа-заголовок - картинка.

```json
POST https://api.1msg.io/{{channel}}/sendCarousel
Content-Type: application/json
Body: {
  "phone": "{{phone}}",
  "params": [
    {
      "type": "BODY",
      "parameters": [
        {
          "type": "text",
          "text": "Text Body"
        }
      ]
    },
    {
      "type": "CAROUSEL",
      "cards": [
        {
          "card_index": 0,
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "image",
                  "image": {
                    "link": "https://test-pick.ru/38eff70e116842949fd3019b226d31db.jpg"
                  }
                }
              ]
            },
            {
              "type": "BODY",
              "parameters": [
                {
                  "type": "text",
                  "text": "Description card 1"
                }
              ]
            },
            {
              "type": "button",
              "sub_type": "quick_reply",
              "parameters": [
                {
                  "text": "Кнопка",
                  "id": "Buttons1"
                },
                {
                  "text": "Кнопка 2",
                  "id": "Buttons2"
                }
              ]
            }
          ]
        },
        {
          "card_index": 1,
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "image",
                  "image": {
                    "link": "https://test-pick.ru/38eff70e116842949fd3019b226d31db.jpg"
                  }
                }
              ]
            },
            {
              "type": "body",
              "parameters": [
                {
                  "type": "text",
                  "text": "Description card 2"
                }
              ]
            },
            {
              "type": "button",
              "sub_type": "quick_reply",
              "parameters": [
                {
                  "text": "Кнопка",
                  "id": "Button3"
                },
                {
                  "text": "Кнопка 2",
                  "id": "Button4"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
```

</details>

<details>

<summary>Пример как отправить "Карусель"​ с карточкой товара из WhatsApp </summary>

Пример шаблона из 2-ух карточек товара из каталога WhatsApp.

```json
POST https://api.1msg.io/{{channel}}/sendCarousel
Content-Type: application/json
Body: {
  "phone": "{{phone}}",
  "params": [
    {
      "type": "BODY",
      "parameters": [
        {
          "type": "text",
          "text": "Text body"
        }
      ]
    },
    {
      "type": "CAROUSEL",
      "cards": [
        {
          "card_index": 0,
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "product",
                  "product": {
                    "product_retailer_id": "0001",
                    "catalog_id": "{{catalog_id}}"
                  }
                }
              ]
            }
          ]
        },
        {
          "card_index": 1,
          "components": [
            {
              "type": "header",
              "parameters": [
                {
                  "type": "product",
                  "product": {
                    "product_retailer_id": "0002",
                    "catalog_id": "{{catalog_id}}"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
```

</details>
