Перейти к содержанию

Расширенные настройки

В настройках бота на вкладке "Дополнительные" можно указать расширенные настройки скрипта. Эти настройки задаются в виде структурированного объекта в текстовом виде в формате JSON или YAML:

image

Объект с расширенными настройками бота доступен в любом скрипте в поле context.input.settings.properties. Например:

TypeScript
const axios = require('axios');

const apiUrl = context.input.settings.properties.url as string;
const apiToken = context.input.settings.properties.token as string;

const request = {
    method: 'post',
    url: apiUrl,
    data: { /* ... */ },
    headers: {
        'X-Token': apiToken,
    },
};

var response = axios(request);

Объект с расширенными настройками экспортируется и импортируется вместе с другими данными при экспорте и импорте бота.

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

Объект с расширенными настройками может содержать вложенные объекты и массивы, например:

YAML
1
2
3
4
5
6
data:
  message: Извините, я не понял вас. Выберите необходимое действие.
  textArray:
    - Меню
    - Помощь
    - Оператор

Пример использования этих настроек в скрипте:

TypeScript
onUtteranceUnrecognized("*", async (botEvent) => {
  const scriptData = (context.input.settings.properties.data as { message: string; textArray: string[] });

  const activity: ScriptActivity = {
    text: {
      content: scriptData.message,
      format: TextFormatTypes.Plain,
    },
    type: ScriptActivityTypes.Message,
    suggestions: scriptData.textArray.map(text => {
      return {
        text: text,
        title: text,
        type: 'imBack',
      }
    })
  };

  context.output.activities.push(activity);
  context.output.settings.activityProcessed = true;
});

Ограничения

  • Размер объекта с расширенными настройками не должен превышать 10 КБ
  • Максимальный уровень вложенности свойств объекта не должен превышать 28
  • Корневой элемент объекта не может быть массивом:

Вместо массива на верхнем уровне объекта:

JSON
1
2
3
4
5
[
  "Меню",
  "Помощь",
  "Оператор"
]

Используйте внутреннее поле для массива:

JSON
1
2
3
4
5
6
7
{
  "menuItems": [
    "Меню",
    "Помощь",
    "Оператор"
  ]
}