Простая интеграция веб-чата с Microsoft QnAMaker с использованием Node.js.

2020-11-29

Чат-боты — это революция в общении с клиентами. В настоящее время компании в значительной степени полагаются на чат-ботов для автоматизации и снижения рабочей нагрузки на людей. По имеющимся данным, более 80 процентов предприятий рассматривают возможность внедрения чат-ботов на своих веб-сайтах в ближайшем будущем. 

Доступно множество замечательных платформ для ботов, таких как Amazon Lex, Microsoft Azure AI LUIS, Google DialogFlow, IBM Watson и т. д. В этом блоге мы покажем, как использовать эту платформу BOT для создания чат-бота на веб-сайте с помощью Easiio на примере Microsoft QnAMaker.

Интеграция чата веб-сайта Microsoft QnAMaker Easiio с node.js

Microsoft QnAMaker

Microsoft Производитель качества — это облачная служба обработки естественного языка (NLP), которая позволяет вам создать естественный разговорный слой над вашими данными. Он используется для поиска наиболее подходящего ответа на любой ввод из вашей пользовательской базы знаний (КБ) информации. Это часть технологии Microsoft Azure AI.

Microsoft QnA Maker обычно используется для создания диалоговых клиентских приложений, в том числе приложений для социальных сетей, чат-ботов и настольных приложений с поддержкой речи.

Когда использовать Microsoft QnA Maker:

  • статическая информация
  • дать один и тот же ответ на запрос, вопрос или команду
  • фильтровать статическую информацию на основе метаинформации
  • управлять разговором с ботом, который включает статическую информацию

Easiio Интеграция веб-чата и чат-бота с QnAMaker

Easiio предоставляет облачный колл-центр, чат-бот на веб-сайте и службу живого чата. Для чат-бота сайта и интерфейса живого чата. Он обеспечивает очень гибкую платформу приложений для интеграции с любым сторонним приложением с использованием API. Например, он может интегрироваться с CRM, программным обеспечением поддержки клиентов и практически с любым сервисом, обеспечивающим доступ к API, включая API чат-бота, такой как Amazon Lex, как в предыдущем блоге и Microsoft QnAMaker.

Теперь давайте начнем с реализации бота Microsoft QnAMaker с веб-чатом Easiio.

Сначала мы создадим экземпляр Microsoft QnAMaker, а затем предоставим функциональные возможности с помощью API. Во-вторых, мы создадим модуль node.js для обработки запроса от платформы веб-чата Easiio и возвращаемого значения API Microsoft QnAMaker. В-третьих, мы настроим веб-чат Easiio для использования Microsoft QnAMaker.

Создайте и протестируйте экземпляр QnAMaker.

Следуйте документу Microsoft "Создайте новую службу QnA Maker.", чтобы создать экземпляр QnAMaker. Я создал экземпляр под названием easiioqna. После создания экземпляра службы вы можете начать настройку сведений QnAMaker. Он поддерживает импорт QnA с URL-адреса веб-сайта, если у вас уже есть веб-страница для QnAMaker.

QnAMaker Страница моей базы знаний

Вы можете ввести вопросы и ответы для вашего QnA. Для каждого вопроса вы можете ввести несколько альтернатив для лучшего соответствия вашим вопросам.

Microsoft QnAMaker редактирует базу знаний «Вопросы и ответы».

После ввода списка ваших QnA в системы вы можете протестировать его, сначала нажав «Сохранить и обучить», а затем нажать кнопку «+Тест» в правом углу консоли. Теперь вы вводите вопрос в текстовое поле, а затем нажимаете Enter, и вы должны увидеть, как QnAMaker ответит на ваш вопрос.

Сохраните и протестируйте содержимое QnAMaker.

После мы тестируем QnAMaker внутри консоли и довольны им. Следующий шаг — протестировать его вне консоли с помощью инструмента командной строки Curl.

На вкладке «Мои базы знаний» консоли QnAMaker нажмите «Просмотреть код». Вы можете скопировать команду Curl и протестировать ее из командной строки.

Получите команду Curl, чтобы протестировать QnAMaker из командной строки.

В командной строке запустите команду Curl. Вы должны получить ответ от службы Microsoft QnAMaker.

При этом это означает, что наш QnAMaker работает с запросом на завивку HTTP POST. Теперь мы готовы к следующему шагу — созданию службы node.js для соединения веб-чата Easiio с QnAMaker.

Создайте код Node.js для Microsoft QnAMaker.

Чтобы преобразовать формат ответного сообщения API Microsoft QnAMaker в формат, который работает для веб-чата Easiio, мы реализуем простой сервис Node.js для выполнения преобразования. Он принимает запросы HTTP POST от веб-чата Easiio и отправляет их в Microsoft QnAMaker. После ответа QnAMaker он извлечет текст ответа и отправит его в Easiio в соответствующем формате. См. пример кода ниже.

//////////////////////////////////////////////////////////////////
// Easiio, Inc, Call Center https://www.easiio.com
// Sample code to send email. This could be use with Easiio
// IITR with ms qnamaker_chatbot API.
// 
///////////////////////////////////////////////////////////////////

const http = require('http');

var url = require( "url" );
var queryString = require( "querystring" );

var sess = {};
"use strict";

var formOutput = '<html><body>'
  + '<h1>Zendesk support ticket example</h1>'
  + 'Please use post for the API request.</body></html>';

const server = http.createServer(function (request, response) {
  try {
   if(request.method === "GET") {
    console.log ("Get request url ." + request.url );
    
  } else if(request.method === "POST") {
    if (request.url === "/azure_qnamaker_chatbot") {
      var requestBody = '';
      console.log("post inbound 1.0");
      request.on('data', function(data) {
        requestBody += data;
        if(requestBody.length > 1e7) {
          response.writeHead(413, 'Request Entity Too Large', {'Content-Type': 'text/html'});
          response.end('<!doctype html><html><head><title>413</title></head><body>413: Request Entity Too Large</body></html>');
        }
      });
      
      request.on('end', function() {
        console.log("post end", requestBody);
        var formData = JSON.parse( requestBody );
        var request1 = require("request");
        if (formData == null || formData.uuid == null || formData.text == null) {
          response.write('[ { "id": 1, "action": "play", "text": "missing to, from, uuid or text" }]');
          response.end('');
          return;
        }
        console.log("send qnamaker", formData.uuid , " ", formData.text);

        var options ={
          url: 'https://easiioqna.azurewebsites.net/qnamaker/knowledgebases/your_urlkey/generateAnswer',
          method:'POST',

          headers:{
            'Authorization': 'EndpointKey your_endpoint_key',
     
            'Content-Type':'application/json'
          },
          body: JSON.stringify({'question': formData.text })
        };

        request1(options, function (error, response1, body) {
          if (error) throw new Error(error);
          console.log("send azure message", formData.uuid , " ", response1, " ", body);
          var responseJson = JSON.parse (body);
          if (responseJson != null && responseJson.answers != null)
            console.log("send azure message 1.0"); 
          if (responseJson.answers[0] != null)
            console.log("send azure message 1.1"); 
        if (responseJson != null && responseJson.answers != null && responseJson.answers[0] != null && responseJson.answers[0].answer != null)
          response.write('[ { "id": 1, "action": "play", "text": "' + responseJson.answers[0].answer + '" }]');
        else
          response.write('[ { "id": 1, "action": "play", "text": "incorrect response." }]');
          response.end('');
        });
        
      });
    } 
    
  } else {
    response.writeHead(405, 'Method Not Supported', {'Content-Type': 'text/html'});
    return response.end('<!doctype html><html><head><title>405</title></head><body>405: Method Not Supported</body></html>');
  }
  } catch (err){
    console.log(err);
  }
});

const port = process.env.PORT || 1340;
server.listen(port);

console.log("Server running at http://localhost:%d", port);

Обязательно измените URL-адрес на URL-адрес вашей службы и замените ключ конечной точки авторизации своим. Его можно найти на следующей странице консоли настроек службы.

Получите токен для обслуживания.

Запустите службу в своей среде node.js, используя команду «node ms_qnamaker_chatbot.js». Используйте следующую команду Curl, чтобы протестировать службу node.js.

curl -H "Content-Type:application/json" -X POST -d '{"uuid":"contact@easiio.com","text":"what is the pricing?"}' http://localhost:1340/azure_qnamaker_chatbot

response:
{"answers":[{"questions":["How is it charged?","how much is the cost?","how much is it?","What price?","Is this expensive?","How much is the price?","How much does it cost?"],"answer":"Our price is based on the number of seats and requirements you need, for example, the intelligent customer service system is 2 agent free,$5 seats for one month,QnAMaker additional(contact us),for details, you can leave contact information, I will arrange the sales manager contact you.","score":82.43,"id":128,"source":"Editorial","metadata":[],"context":{"isContextOnly":false,"prompts":[]}}],"activeLearningEnabled":false}
send azure message 1.0
send azure message 1.1

Благодаря ответу кода node.js мы уверены, что node.js и Microsoft QnAMaker теперь работают вместе. Теперь мы можем перейти к шагу 3. То есть интегрировать чат веб-сайта Easiio с Microsoft QnAMaker.

Интеграция веб-чата Easiio

Последний шаг: нам нужно использовать API-интерфейс node.js, чтобы позволить API-интерфейсу бота Easiio ITR взаимодействовать с Microsoft QnAMaker.

Во-первых, вам необходимо зарегистрировать учетную запись Easiio, которая бесплатна для функции чата на веб-сайте. Пожалуйста, используйте ссылка для регистрации Зарегистрироваться.

Во-вторых, настройте визуальный ITR, используя меню «Расширенная конфигурация->Визуальный IVR», чтобы создать новый ITR (интерактивный текстовый ответ). См. Инструкция ITR о том, как создать ITR. Мы используем уже созданный ITR и добавляем элемент Curl (вызов HTTP API). Curl — это вызов API к внешнему API HTTPS, ответ API будет воспроизводиться непосредственно в окнах чата как ответ QnAMaker. Как видите, мы установили для команды curl использование индекса команды 0, что означает, что чат по умолчанию будет передан в QnAMaker. Если только специально не попросят живого агента.

Настройте публикацию HTTP в редакторе Easiio IVR/ITR.

После того, как он настроен на веб-сайте, мы можем его протестировать. Вы можете протестировать это на сайте easio.com. Просто введите «привет», чтобы начать общение с Microsoft QnAMaker. Например, Вы можете задать такой вопрос, как «Какова цена?», «Поддерживаете ли вы IVR?» и т. д. Как показано на следующем снимке экрана.

Протестируйте QnAMaker на веб-сайте Easiio.

Заключение

В этом блоге мы покажем, как интегрировать Microsoft QnAMaker с плагином чат-бота/живого чата веб-сайта Easiio, используя программу Node.js в качестве моста. Он хорошо работает с относительно простыми шагами настройки. Если у вас уже настроена служба, очень легко использовать чат-бот/платформу онлайн-чата Easiio, чтобы посетитель вашего сайта мог использовать эту услугу. Это означает, что вы можете создать одного чат-бота и использовать его на своем веб-сайте. С другой стороны, чат-бот и онлайн-чат на веб-сайте Easiio также поддерживают онлайн-чат с агентами с помощью множества алгоритмов распределения и множества расширенных функций контакт-центра. Зарегистрируйтесь бесплатно и испытайте возможности чат-бота/инструмента живого чата на веб-сайте Easiio. Это может помочь сделать обслуживание клиентов и продажи вашего веб-сайта очень успешными.

Кроме того, Easiio также предоставляет мощное программное обеспечение для колл-центров и системы деловой телефонии. Пожалуйста, проверьте сайт и зарегистрируйтесь.