Контекст
Контекст скрипта предоставляет следующие возможности:
- Чтение и запись значений переменных бота/сценария.
- Сохранение и загрузка файлов.
- Кэширование данных.
Переменные
Входные переменные
Скрипту доступны для чтения текущие переменные бота и сценария.
Доступ для чтения осуществляется через поле context.input.variables
.
Переменные доступны как по коду, так и по имени.
Пример использования:
TypeScript |
---|
| const axios = require('axios');
const request = {
method: 'post',
url: context.input.variables.url,
data: {
context: {
chto_nuzhno_sdelat: context.input.variables.whatdo,
}
},
headers: {
'X-Token': context.input.variables.xtoken
}
}
var response = axios(request);
|
Выходные переменные
Скрипт также может записывать значения в текущие переменные.
Для записи новых значений в переменные бота следует использовать context.output.variables
.
Переменные доступны как по коду, так и по имени.
Пример использования:
TypeScript |
---|
| const axios = require('axios');
const host = 'api.openweathermap.org';
const app = '5bcd77753b5172d562152257e2552bb8';
const url = `https://${host}/data/2.5/weather?lat=35&lon=139&appid=${app}`;
const response = await axios.get(url);
const temperature = response.data.main.temp - 273.15;
context.output.variables["Температура"] = temperature;
|
Файлы
Передача в base64
Используя кодировку base64, скрипт может использовать для передачи файлов обычные строковые переменные:
TypeScript |
---|
| const axios = require('axios');
const polzovatelskie_faili = context.input.variables.polzovatelskie_faili;
// В этом примере загружаем только один файл
const file = Array.isArray(polzovatelskie_faili)
? polzovatelskie_faili[0]
: polzovatelskie_faili;
const request = {
method: 'get',
url: file.contentUrl,
responseType: 'arraybuffer',
};
const response = await axios(request);
const base64Content = Buffer
.from(response.data, 'binary')
.toString('base64');
const base64 = `data:${file.contentType};base64,${base64Content}`;
context.output.variables.nazvanie_faila = file.name;
context.output.variables.tip_faila = file.contentType;
context.output.variables.soderzhimoe_faila = base64.substring(0, 30);
|
Сохранение файла
Также файл можно сохранить в локально изолированное хранилище.
Для передачи файлов используются файловые переменные.
В этом случае достаточно передать ссылку на файл.
Работать с хранилищем файлов можно через поле context.utils.files
.
Пример использования:
TypeScript |
---|
| const base64Content
= 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAA'
+ 'RnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJ7SURBVDhPhVNLTxNR'
+ 'GJ3EsFB/gb/AlWhgIRsXxo0LExWCBoyaiAsSSVgYTYxRShEwigguiFofERWNic9gas'
+ 'QUWvCRIEqkFJBXEZyWmQ7ttJ2hnc7M8bt3RESNnOQmc8+dc77zfXdGACEXDiN1zQOl'
+ 'qhrS7hJEt21HZEsRpF0bkfXmwQisg9G3Abn+ApjD5bBED2AoTArBGB2DXHYQYn4hxE'
+ '0FzmLPm7dCLs5H9hWJu9fA8AnLqzsP5kgFVVYhJNz1XDS/YycSrjqkb7dDf+lFxt+L'
+ '7OB7WLEuWPIzqnoL1nQtzKG9MHrWwvCvJ/4pBOVoJTdQz1/kkVYFRc/1F/Ik1mwLBL'
+ 'XxAjdINrf+fGMVmEnkPhY5Bt8uQ7CTSaRcbqRbrvDz6aiBrk8aZNXke4aZ+RznpIRF'
+ 'BimYvxuEdKBvJoGJgRAWszbOtMewxy3iulfl4oxho/a+wrm2ThU5Q0di+BTMYCnsWC'
+ 'eEhimgbAh4EKWhmjaan8SxvzGCR4EUN2Bc6/M49jVE0NGThJax4fHGMSlm+LlQTwbl'
+ 'X4COCN9D1SyMfzd4miUw7itxOnGMP3lTxnGPjDC19pfBamAJTtyQeUsvPqQhXAo7Bq'
+ 'yVIKWeo2SKAaRphssZHLAEvkEdh5qiKK4T8XpAgxBYACqCjslhmkVlCKgeBeomASnr'
+ 'CFnV3qCOs3cVlNIsWPXqqxLmZGqBhgwffdauCeDYCHCEzA6QGTMao2sLDOk4fSeG0n'
+ 'pHyAxc9xSMzDru/GdiUXW64ihx4xowSK34JRs1DxdQck78Jawh4dvQIk+0BG7wLyTS'
+ 'FqraJF6ZfQfvSMhm8Cf+a9D0OI43n7UVFVcC+AEwdnXoIYNkcgAAAABJRU5ErkJggg'
+ '=='
const fileName = 'картинка.png';
const contentType = 'image/png';
const file = Buffer.from(base64Content, 'base64');
const fileId = await context.utils.uploadBotTemporaryFile(
fileName,
contentType,
file);
const contentUrl = context.utils.getBotTemporaryFileUrl(fileId);
context.output.variables.fail_dlya_otpravki = {
contentType: contentType,
contentUrl: contentUrl,
name: fileName,
};
|