Versions Compared

Key

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

...

Получение списка открытых инцидентов


Отправляем запрос в базы знаний через API

Сценарий отправляет запрос в БЗ AF через API QUERY, в зависимости от уровня уверенности переводим на оператора или отдаем ответ пользователю

Code Block
breakoutModewide
languagejs
//Устанавливаем переменную реплики, которую будем отправлять в БЗ
установитьПеременную("queryText","{qwery}")+
//адрес  метода query
установитьПеременную("kb_qna_xplain_enpoint", "https://адрес_системы/core-api/query/api/v1/query")+
//токен из таблицы Services БД платформы
установитьПеременную("autorizationToken", "bd411bd849fa1238978cfb57dbeba060")+
//id БЗ
установитьПеременную("kb_id", "10")+
//токен из настроек БЗ
установитьПеременную("kb_token", "494125ce201f471234839f3a485ff237")+
//устанавливаем переменную с попрогом уверенности
установитьПеременную("minScoreXplain", "0.6")+
//собираем тело запроса
выполнитьJs("""
var tags = {"service_id":kb_id,"service_token":kb_token,"query":queryText,"top_k":"1"};
var exit = {'query_text': JSON.stringify(tags)};
exit;
""")+
комментарий("{queryText}")+
//вызов внешнего сервиса
вызвать.внешнийСервис("{kb_qna_xplain_enpoint}","POST").сЗаголовками(("Content-Type", "application/json"),("charset", "utf-8"),("AUTOFAQ-User-Token", "{autorizationToken_clear}")).сТеломСообщения("{query_text}").сохранитьРезультатКакСтроку("answer")+
//проверям ответ на ошибки
если("{http_code} != 200").то(  
  комментарий("При запросе на классификацию возникла ошибка {http_code}, текст ошибки {answer}")
)+
//парсим ответ от БЗ
выполнитьJs("""
var clearQuestion = '';
var score = '';
try {
    var answerParsed = JSON.parse(answer);
} catch(err) {    
    var answerParsed = {};
}
//забираем сам ответ
if (answerParsed.hasOwnProperty('results') && answerParsed.results.length > 0) {
  clearQuestion = answerParsed.results[0].answer;
  scoreXplain = answerParsed.results[0].score;
}
var exit = {'clearQuestion':clearQuestion, 'scoreXplain':scoreXplain};
exit;
""")+
если("{clearQuestion} == ").или("{scoreXplain}<{minScoreXplain}").то(
  комментарий("нет ответа")+
  //Сообщение если нет ответа в xplain
  сообщениеПользователю.сШаблоном("Не нашел ответа на Ваш вопрос, перевожу диалог на оператора.<br>К сожалению, сейчас мы не работаем. Наши операторы ответят Вам в рабочее время с понедельника по пятницу с 9:00 до 18:00 по Московскому времени.")+
  завершитьИПеревестиНаОператора
)+
задатьПользователюВопрос("{clearQuestion}").сВариантамиОтвета("Мой вопрос решен","Нужен оператор").сохранитьРезультат("end_said")+
	если("{end_said} == Мой вопрос решен").то(
		сообщениеПользователю("Благодарим за обращение!")+
		завершитьИЗакрытьДиалог()
	)+
	если("{end_said} == Нужен оператор").то(
		сообщениеПользователю("Перевожу диалог на оператора, ожидкайте")+
		завершитьИПеревестиНаОператора
	)+
завершитьСНовымЗапросом("{end_said}")

Получение баланса по карте лояльности через SOAP вызов

...