Сайт может отображаться некорректно, поскольку вы просматриваете его с устаревшего браузера Internet Explorer (), который больше не поддерживается Microsoft.
Рекомендуем обновить браузер на любой из современных: Google Chrome, Яндекс.Браузер, Mozilla FireFox.

Работа с данными

Поддерживаем вывод разных данных.

Вывод в тексте специальных полей

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

Вывод в тексте запросов данных из БД

Рассмотрим пример: у нас есть следующий запрос данных с тегом «ИнфаПоЗаявке»:

Данный запрос возвращает информацию по заявке текущего пользователя бота (1 строка, 4 столбца).

Чтобы вывести в сообщении этот запрос, достаточно указать «[ИнфаПоЗаявке]» в поле «Текст сообщения».

Однако, выглядит это пока не очень понятно. Теперь в дело идут дополнительные параметры при выводе настраиваемого запроса:

  1. Номера столбцов (необязательно): номера столбцов из запроса через запятую. Пусто — все (по умолчанию).
  2. Разделитель столбцов (необязательно): символы, которые вставляются между столбцами (по умолчанию пробел).
  3. Разделить строк (необязательно): символы, которые вставляются между строками (по умолчанию новая строка).

Изменим текст сообщения на:

Совсем другое дело.

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

Вывод в тексте внешних запросов API

К этому моменту будем считать, что Вы уже настроили внешний запрос API. Допустим, что запрос возвращает следующий результат:

Первый список пользователей – список победителей, второй – проигравших.

Чтобы вывести именно то, что необходимо нам, опять нужны дополнительные параметры:

  1. Путь до элементов, содержащих строки данных в ответе на запрос.
  2. Путь до столбцов данных в каждой сроке.
  3. Номера столбцов (необязательно): номера столбцов из запроса через запятую. Пусто — все (по умолчанию).
  4. Разделитель столбцов (необязательно): символы, которые вставляются между столбцами (по умолчанию пробел).
  5. Разделить строк (необязательно): символы, которые вставляются между строками (по умолчанию новая строка)

Чтобы вывести поле status, нужно указать, что «status» – это строка и, так как это поле не массив, то оставить путь до столбца пустым. Итого: [ЗапросУчастников(status)()].

Чтобы вывести список победителей, нужно указать, что строки содержатся в result -> rows -> 0-й элемент, а столбцы пусть берутся все, что есть. Итого: [ЗапросУчастников(result.rows.0)()]

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

Если мы хотим сохранять из ответа API только отдельные столбцы, то нужно написать что-то в этом роде: [ЗапросУчастников(result.rows.0)(user_id,surname)]

Чтобы вывести абсолютно всех игроков, нужно указать, что в result -> rows каждый элемент содержит строки. Итого: [ЗапросУчастников(result.rows.*)()].

Наконец, чтобы вывести имя победителя, можно пойти разными путями:

  • [ЗапросУчастников(result)(0.0.user_id,0.0.name)] – мы указали, что все строки хранятся в поле «result». Там на самом деле только одна строка – поле «rows». Осталось указать, как добраться до необходимых столбцов.
  • [ЗапросУчастников(result.rows.0.0)()()()( )] – мы указали, что строки данных находятся там, где указаны поля surname,name,user_id. Таким образом будет создано три строки с одним столбцом. Чтобы вывести их через пробел, мы указали его в 5-м дополнительном параметре.
  • [ЗапросУчастников(#)(rows.0.0.user_id,rows.0.0.surname)] – символ «#» означает, что текущий элемент (то есть весь запрос) уже как раз содержит строки (а конкретно две – «status» и «result»). Так как в первой строки нет элементов по путям, указанных в списке столбцов, в итоге получится одна строка.

Циклы при выводе данных

Предположим, что у пользователя есть несколько оформленных заявок. В примере выше мы выводили лишь одну заявку. Теперь изменим запрос данных и выставим «максимальное количество строк», например, равным 10.

Вот как будет выглядеть сообщение, если ничего не менять в тексте сообщения:

Для корректного отображения здесь необходимо использовать цикл. Для этого нужно заключить желаемый блок текста в символы «{@» и «@}». BotManager сам поймет, что нужно вывести указанный блок текста для каждой строки из запроса (настраиваемого или даже API):