// Пример сценария с использованием SQL запроса на получение данных о пользователе в СУБД PostgreSQL
//
// Подготовка SQL запроса в JS коде для простоты редактирования
выполнитьJs("""
// строка подключения в формате RFC DB URI
var db_url = "pgsql://userName:secretPassword@autofaq.ai:5432/databaseName";
// строка SQL запроса с использованием логина пользователя из системной переменной {userLogin}
var sql_query = "SELECT * FROM \"CHANNEL_USER\" WHERE \"SERVICE_ID\" = 'ХХХХХХ-ХХХХ1234' AND \"LOGIN\" = '{userLogin}'"
// время ожидания ответа СУБД
var timeout = 3;
// тело запроса
var query = {
'db_url': db_url,
'sql_query': sql_query,
'timeout': timeout
};
// на выходе строковое представление тела запроса
var exit = {'query': JSON.stringify(query)};
exit;
""") +
// запрос в СУБД коннектор
вызвать.внешнийСервис("http://bot-platform-db-adapter:80/api/v1/query", "POST").сЗаголовками(("Content-Type", "application/json")).сТеломСообщения("{query}").сохранитьРезультатКакСтроку("answer")+
// обработка ошибок
если("{http_code} > 200").то(
комментарий("Ошибка SQL запроса: {http_code}, {answer}")+
сообщениеПользователю.сШаблоном("Произошла ошибка. Попробуйте спросить немного позже.")+
завершить
)+
// разбор ответа
выполнитьJs("""
var answer_parsed exit = {error: 0}
try {
var response = JSON.parse(answer);
if (answer_parsedresponse.lengthstatus > 0!= 'ok') {
var state = answer_parsed
throw Error(JSON.stringify(response))
}
var rows = response.result
exit.ballance = rows[0][9'Баланс']
== Undefined ? true : answer_parsedexit.client_id = rows[0][9'УЗ'];
} elseexit.rows {
var state = false;
}
var exit = {'state':state};= JSON.stringify(rows)
} catch(e) {
exit.error = 'error' + JSON.stringify({message: e.message, stack: e.stack});
}
exit;
""") +
если("stateerror !== false"0).то(
сообщениеПользователю.сШаблоном("Простите, ноошибка вы не прошли проверкусервиса {error}")+
завершить
)+
сообщениеПользователю.сШаблоном("Вы прошли проверку.Балланс клиента {client_id}: {ballance}")+
завершить |