Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • mysql - подключение к MySQL

  • mssql - подключение к MS SQL Server

  • pgsql - подключение к PostgreSQL (начиная с релиза 4.3.0)

  • при необходимости подключения к прочим СУБД соощите, пожалуйста, по адресу support@autofaq.ai

Сервис возвращает матрицу ответа СУБД построчно - каждая строка матрицы содержит строку ответа СУБД. Для разбора ответа можно использовать шаг выполнитьJs с JavaScript кодом.

...

Code Block
languagepy
// Пример сценария с использованием SQL запроса на получение данных о пользователе в СУБД PostgreSQL
// 
// Подготовка SQL запроса в JS коде для простоты редактирования
выполнитьJs("""

// тело запроса: строка подключения в формате RFC DB URI, SQL запрос, таймаут на ожидание ответа
var query = {
	db_url =: "pgsql://userName:secretPassword@autofaq.ai:5432/databaseName";, // строка SQL запроса с использованием логина пользователя из системной переменной {userLogin}
var 
	sql_query: = "SELECT * FROM \"bot-platform\".\"CHANNEL_USER\" WHERE \"SERVICE_ID\" = 'ХХХХХХ-ХХХХ1234' AND \"LOGIN\" = '{userLogin}'"
// время ожидания ответа СУБД
var timeout = 3;

// тело запроса
var query = {
	'db_url': db_url,

	'sql_query': sql_query,
	'timeout': timeout3
};

// на выходе строковое представление тела запроса
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_parsedexit = {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'УЗ'];

} elsecatch(e) {
	var state
= false; }

var exit.error = {'state':state};JSON.stringify({message: e.message, stack: e.stack});
}
exit;
""") +
если("state{error} =!= false"0).то(
	сообщениеПользователю.сШаблоном("Простите, но вы не прошли проверкуошибка {error}")+
	завершить
)+
сообщениеПользователю.сШаблоном("Вы прошли проверку.Балланс клиента {client_id}: {ballance}")+
завершить