ManyChat Help Portal
Submit a ticket

Для сложных случаев мы реализовали новый тип данных — массив.

Этот тип данных позволяет создавать более мощные автоматизации и обходиться в сценариях без повторяющихся узлов, не затрагивая их функционирование.

В этой статье мы рассмотрим создание и изменение массивов, а также некоторые реальные юзкейсы.

Создание массивов

Массивы ManyChat могут содержать текстовые и числовые значения.

Существует два способа создания массивов:

  1. В пользовательском интерфейсе — внутри продукта
  2. Через API

Для создания массива в пользовательском интерфейсе необходимо выполнить следующие действия:

  • Перейдите в раздел «Настройки → Поля».
  • Нажмите на кнопку «+ Новое пользовательское поле». Укажите имя поля и выберите «array» в раскрывающемся списке, затем нажмите на кнопку «Создать».

На данный момент массивы поддерживаются только в пользовательских полях (но не в полях данных бота).

Для создания массивов программным способом используется метод /createCustomField с указанием типа array:

{
"caption": "Мой массив",
"type": "array",
"description": "В этом поле можно хранить массив"
}

Чтение массивов

К пользовательским полям типа «массив» можно обращаться:

  1. В пользовательском интерфейсе — внутри продукта
  2. Через API

Чтобы получить список уже существующих пользовательских полей, перейдите в раздел «Настройки», затем откройте меню «Пользовательское поле». Откроется таблица всех пользовательских полей. Тип поля указан в столбце «Тип»:

Тот же самый список можно вызвать методом /fb/page/getCustomFields

В каждом объекте пользовательского поля есть ключ type 

Значения пользовательских полей, связанные с определенным контактом, хранятся в карточке контакта. В следующем примере можно видеть, что по умолчанию ManyChat показывает количество элементов, а нажав на массив, можно работать с отдельными элементами:

Эквивалентная конечная точка API — /fb/subscriber/getInfo

В ответ включаются все пользовательские поля с их типами и значениями 

Изменение массивов

Существуют следующие способы изменения данных в пользовательских полях типа «массив»:

  1. Сопоставление внешнего запроса
  2. Сопоставление действия приложения
  3. API
  4. Пользовательский интерфейс ManyChat

Механизм сопоставления одинаков. Указывается JSON-путь к массиву, и ManyChat сохраняет этот массив в пользовательское поле. Ниже приведен пример, основанный на реальном сервисе/API: 

Это JSON-ответ от API заказов Shopify. Каждый заказ уникален и может содержать переменное количество позиций. Массивы позволяют сохранять все позиции в одном пользовательском поле. В результате отпадает необходимость парсить объект заказа и сохранять каждую позицию в отдельном пользовательском поле.

Конечные точки API setCustomField и setCustomFields также позволяют сохранять массивы. Ниже приведен ряд примеров:

  • присвоение непустого массива
{
"subscriber_id": {{subscriber_id}},
"field_id": {{field_id}},
"field_value": [1, 2, 3, "apples"]
}
  • присвоение пустого массива
{
"subscriber_id": {{subscriber_id}},
"field_id": {{field_id}},
"field_value": []
}
  • очистка пользовательского поля типа array
{
"subscriber_id": {{subscriber_id}},
"field_id": {{field_id}},
"field_value": null
}

Возможности пользовательского интерфейса несколько более ограничены, однако при необходимости сбросить пользовательское поле можно в меню аудитории.

Выберите контактов, которых требуется изменить, нажмите на кнопку «Массовые действия», затем выберите «Сбросить пользовательское поле контакта». После применения действия пользовательское поле очищается.


Юзкейсы

Существует несколько распространенных юзкейсов для применения массивов. Их объединяет одно: массивы удобно использовать при работе с данными, содержащими заранее неизвестное число элементов. Вот некоторые примеры:

  1. Электронная коммерция — каждая корзина и каждый заказ уникальны. В заказах может быть любое количество позиций. Вы можете предположить, что в среднем заказе 2 или 3 позиции, и сопоставить каждой из них отдельное поле, однако в таком случае вы потеряете часть данных, если клиент закажет больше данных, чем вы предусмотрели.
  2. Боты, основанные на интерпретации/обработке естественных языков (NLU/NLP) — такие сервисы, как [wit.ai] (http://wit.ai), которые анализируют ввод пользователя и возвращают намерения и сущности. И опять-таки, каждый экземпляр пользовательского ввода уникален. Массивы работают одинаково хорошо, сколько бы сущностей не возвратил сервис.
  3. Вопросы с вариантами выбора — если вы используете для квалификации контактов формы или опросы, вы, вероятно, хорошо знакомы с вопросами с вариантами выбора. Разные контакты могут выбрать разное количество вариантов. Проще сохранять их в массивах, чем парсить данные и создавать отдельное пользовательское поле для каждого поля.

Ниже приведены два сценария, демонстрирующие несложный юзкейс электронной коммерции.

В сценарии «Array», как можно предположить, используется пользовательское поле типа «массив». Сопоставление и блок условия проще и быстрее настраивается, отсутствует риск потери данных, поскольку массивы могут хранить любое количество элементов.

Нажмите здесь, чтобы посмотреть этот сценарий


В сценарии «Multiple CUFs» тот же самый сценарий реализован без массивов, а с несколькими пользовательскими полями для отдельных элементов. Составление такого сценария занимает больше времени (больше элементов для сопоставления, больше настроек узла условия) и при его работе возможна потеря части данных.

Нажмите здесь, чтобы посмотреть этот сценарий