Запись общих переменных

Функции и ограничения

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

Объем общих переменных в боте не должен превышать 3 мегабайта.
Общие переменные всегда актуальны на момент запроса. Если первый пользователь запросит общую переменную в то время когда второй пользователь будет менять ее значение, то первый пользователь получит старое значение, а не новое.

Работа с общими и индивидуальными переменными похожа — их объединяют, собирают в объект и так далее. Типы данных и Управление списками в Записи общей переменной и в обычной Записи переменной работают одинаково.

Создание списка в общих переменных

1. Добавьте компонент Запись общей переменной на экран.

2. Придумайте Имя переменной.

3. Тип поменяйте на Объект из JSON.

4. Добавьте в Значение список, например такой:

[
  "apples",
  "oranges",
  "bananas"
]

Использование списка из общей переменной

1. Добавьте компонент Прочитать общие переменные. Без добавленного и правильно заполненного компонента общая переменная не будет читаться.

2. Поменяйте или оставьте без изменений Имя переменной, куда записать результат.

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

В текст список выводится таким образом:

{{#each Us_list.fruits}}
{{this}}
{{/each}}

Более подробно о работе с массивами и списками можно узнать в этой статье →

Готово. Записанные общие переменные будут выводиться для всех пользователей бота.

Для работы общих переменных первый экран нужно запустить один раз у одного пользователя. После этого второй экран будет работать у всех пользователей без активации первого.

Если дополнить сценарий, то другие пользователи смогут влиять на значение переменной. Например, если один из пользователей пройдет экран с записью переменной с тем же именем, но с другим значением, то значение поменяется у всех.

Независимо от того, где выводятся или меняются переменные — рядом с изначальной записью или где-то отдельно в боте — перед сообщением с выводом всегда нужно добавлять компонент Прочитать общие переменные. Без этого переменные не будут выводиться.

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

Общие переменные отображаются по отдельности для каждой платформы.

Кнопка Заново загрузить общие переменные обновляет список общих переменных.

Кнопка Закрыть общие переменные закрывает таблицу общих переменных.

Через раздел Пользователи Общие переменные удалить нельзя. Они очищаются только с помощью специального компонента.

Очистка общих переменных

Общие переменные удаляются с помощью компонента Очистка общих переменных. Этот компонент работает также как Очистка переменных для обычных переменных пользователя.

Если нужно удалить общие переменные сразу у всех пользователей, то экран с очисткой общих переменных можно отправить Рассылкой. Если на этом экране больше ничего не будет, то такая рассылка будет для пользователей незаметна.

Примеры использования списков и массивов в общих переменных

Как разные пользователи бота могут отправлять данные в один список

Нужно составить список блюд в котором будут учитываться предпочтения всех гостей мероприятия. Для этого каждый человек должен написать боту что он хочет видеть в меню.

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

1. Создайте новый экран и добавьте на него компонент Запись общих переменных.

2. Придумайте Имя переменной. В примере переменная будет называться party_food.

3. Тип поменяйте на Пустой список.

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

Если этот экран запустить снова после получения каких-либо результатов от пользователей, то список обнулится и все результаты исчезнут без возможности восстановления.

4. Создайте второй экран и добавьте на него Сообщение.

5. Добавьте Ввод от пользователя и заполните Имя переменной, куда попадут введенные данные.

6. Добавьте Перемотку и создайте новый экран, куда эта перемотка будет вести.

7. Добавьте на новый экран компонент Запись общих переменных и нажмите кнопку Добавить переменную.

8. Придумайте любое Имя переменной.

9. В поле Тип оставьте Строка.

10. В Значении выведите переменную из Ввода от пользователя. В нашем случае данные от пользователя записались на прошлом экране в переменную favorite_food, поэтому в Значение добавляем {{favorite_food}}

Подробнее о том, как выводить переменные можно узнать по ссылке →

11. Откройте настройки компонента Запись общих переменных и поставьте галочку напротив пункта Собрать в объект.

12. В Имя объекта впишите имя переменной, которой был назван пустой список на первом экране. В нашем случае это party_food.

13. В Управлении списками выберите пункт Добавить в конец, чтобы каждое новое блюдо от каждого нового пользователя попадало в конец списка.

14. Добавьте на тот же экран компонент Прочитать общие переменные.

15. Придумайте Имя переменной, куда записать результат.

16. В Имена общих переменных, которые нужно прочитать добавьте переменную с первого экрана party_food. В этой переменной будет находиться список, который мы дальше выведем в текст.

17. Чтобы список блюд приходил в чат, добавьте Сообщение с таким текстом:

Мы добавили ваше любимое блюдо в общий список. Сейчас меню вечеринки выглядит так:

{{#each Us_list1.party_food}}
{{foods}}
{{/each}}

Более подробно о работе с массивами и списками можно узнать в этой статье →

Готово. Если добавлять разные блюда из разных аккаунтов, то они будут попадать в один список, который сможет увидеть каждый, кто запустит бота.

Как сделать доску объявлений в боте

Создадим сценарий для сервиса где заказчик и исполнитель смогут найти друг друга.

1. Создайте новый экран.

2. На этот экран добавьте компонент Запись общих переменных.

3. Придумайте Имя переменной. В нашем примере переменная будет называться specialists.

4. Тип данных поменяйте на Пустой список.

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

Если этот экран запустить снова после получения каких-либо сообщений от пользователей, то список станет пустым и все сообщения исчезнут без возможности восстановления.

С помощью Сообщения и Ввода от пользователя и создайте экран с анкетой, куда специалисты будут вносить свои данные. Подробнее о том как сделать анкету можно узнать в этой статье →

6. В конце экрана добавьте Перемотку.

3. Создайте новый экран и настройте на него переход с Перемотки.

4. На экран добавьте компонент Запись общих переменных.

5. Так как в этом примере добавляются сразу две переменные, нажмите два раза кнопку Добавить переменную.

6. Придумайте Имена переменных. В примере мы используем service и Us_contact. В переменной service выведите в Значение специализацию, в переменной Us_contact выведите контакт для связи со специалистом.

Эти данные выводятся из обычных переменных которые до этого специалист прислал через Ввод от пользователя. Чтобы вывести переменную в текст, ее нужно обернуть двойными фигурными скобками. То есть в нашем случае в Значения попадyт {{service}} и {{Us_contact}}

Более подробно о том как выводить переменные можно узнать тут →

7. Откройте настройки компонента и нажмите галочку Собрать в объект.

8. Впишите Имя объекта specialists или любое другое.

9. Создайте новый экран и добавьте на него компонент Прочитать общие переменные.

10. Поменяйте или оставьте без изменений Имя переменной куда записать результат.

11. В Имена переменных, которые нужно прочитать запишите название списка, в нашем примере это specialists.

12. Выведите в текст все данные из анкеты исполнителя:

Список исполнителей:
{{#each shared.specialists}}
Услуга: {{service}}, мой телефон для связи {{Us_contact}}
{{/each}}

Более подробно о работе с массивами и списками можно узнать в этой статье →

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

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

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

В начало ↑