Node-RED를 사용하여 음성 지원 코로나19(COVID-19) 챗봇 만들기

Node-RED와 IBM® Watson™ Assistant, Watson Speech to Text 및 Watson Text to Speech 서비스를 사용하여 음성 지원 챗봇을 만드는 방법을 알아보세요.

학습 목표

학습 내용:

  • Node-RED에 대해 알아보고 Node-RED를 로컬 및 IBM Cloud에 설치하는 방법 살펴보기
  • node-red-node-watson Node-RED 노드에 대해 알아보기
  • Watson Assistant 챗봇 예시 가져오기 및 배포하기
  • Call for Code 코로나19(COVID-19) 위기 대응 커뮤니케이션 음성 지원 챗봇 솔루션 구축하기

수강 전 준비사항

예상 소요 시간

이 튜토리얼을 완료하는 데 약 30분이 소요됩니다.

아키텍처 다이어그램

아래 다이어그램은 코로나19(COVID-19) 관련 질문에 답변하는 Node-RED 챗봇의 워크플로우를 보여줍니다.

Crisis Comms Architecture diagram

  1. 사용자가 COVID-19 챗봇을 사용하는 음성 지원 Node-RED 웹사이트를 방문하여 질문을 합니다.
  2. Node-RED가 음성을 .wav 파일로 녹음하고 IBM Cloud에 호스팅된 Watson Speech to Text 서비스를 호출합니다.
  3. Watson Speech to Text가 머신러닝을 활용하여 사용자의 음성을 해독합니다.
  4. Watson Speech to Text는 코로나19(COVID-19) 관련 질문을 문자로 옮긴 것을 사용하여 응답하고 Node-RED는 IBM Cloud에 호스팅된 Watson Assistant를 호출합니다.
  5. Watson Assistant가 자연어 이해 및 머신러닝 기능을 사용하여 사용자가 한 질문의 엔터티와 인텐트를 추출합니다.
  6. COVID-19 FAQ 정보를 신뢰할 수 있는 CDC 데이터에서 가져옵니다.
  7. Watson Assistant가 OpenWhisk 오픈소스 지원 IBM Cloud Function을 호출합니다.
  8. IBM Cloud Function이 IBM Cloud에서 실행되는 Watson Discovery 서비스를 호출합니다.
  9. Watson Discovery가 뉴스 기사를 검색하고 관련된 기사로 응답합니다.
  10. Watson Assistant가 OpenWhisk 오픈소스 지원 IBM Cloud Function을 호출합니다.
  11. IBM Cloud Function이 통계 정보를 얻기 위해 COVID-19 API를 호출합니다.
  12. Watson Assistant가 사용자의 질문에 응답하고 Node-RED는 문자로 된 정보를 Watson Text to Speech로 보냅니다.
  13. Watson Text to Speech가 이 메시지를 사용자의 언어로 인코딩합니다.
  14. Node-RED가 채팅 답변이 녹음된 .wav 파일을 사용자에게 재생합니다.
  15. 사용자가 채팅 답변을 듣습니다.

단계

Node-RED에 대해 알아보기

Node-RED는 하드웨어 디바이스, API, 온라인 서비스를 새롭고 흥미로운 방식으로 연결하기 위한 오픈소스 프로그래밍 툴입니다. Node-RED는 클릭 한 번으로 런타임에 배포할 수 있는 팔레트의 다양한 노드를 사용하여 플로우를 쉽게 연결하도록 지원하는 브라우저 기반 편집기를 제공합니다.

Node-RED 의존성 노드 모듈 설치

Node-RED를 설치한 다음, 본 튜토리얼을 위한 의존성 모듈을 추가하세요:

로컬 설치 지침

npm install node-red-node-ui-microphone node-red-dashboard node-red-node-watson node-red-contrib-play-audio node-red-contrib-twc-covid19-tracker

IBM Cloud 설치 지침

  • Manage Palette를 통해 추가 패키지를 설치하는 것 대신, 다음과 같은 패키지들을 package.json에 추가하기 위해 IBM Cloud Toolchain과 IBM Cloud에 있는 git 저장소를 사용합니다.
"node-red-node-ui-microphone":"0.x",
"node-red-dashboard":"2.x",
"node-red-contrib-play-audio":"2.x",
"node-red-contrib-twc-covid19-tracker":"0.x",

node-red-node-watson Node-RED 노드에 대해 알아보기

node-red-node-watson GitHub 저장소에는 IBM Watson 서비스를 위한 Node-RED 노드가 포함되어 있습니다. 이 패키지를 사용하면 Node-RED 팔레트에 다음과 같은 노드를 추가할 수 있습니다.

  • Assistant: 애플리케이션에 대화 기능을 추가합니다.
  • Discovery: Watson Discovery용으로 생성된 환경을 나열합니다.
  • Language Identification: 텍스트에 사용된 언어를 감지합니다.
  • Language Translator: 텍스트를 다른 언어로 번역합니다.
  • Natural Language Classifier: 입력된 짧은 텍스트와 가장 많이 일치하는 사전 정의된 클래스를 머신 러닝 알고리즘을 사용하여 반환합니다.
  • Natural Language Understanding: 텍스트를 분석하여 개념, 엔티티, 키워드와 같은 메타데이터를 콘텐츠에서 추출합니다.
  • Personality Insights: 언어적 분석을 활용하여 텍스트에서 사회적 특성과 코그너티브 특성을 추론합니다.
  • Speech To Text: 음성을 텍스트로 변환합니다.
  • Text To Speech: 텍스트를 음성으로 변환합니다.
  • Tone Analyzer: 텍스트의 어조를 파악, 이해, 수정합니다.
  • Visual Recognition: 이미지의 시각적 특징을 분석하여 콘텐츠를 파악합니다.

코로나19(COVID-19) 위기 대응 커뮤니케이션 챗봇 예시를 가져오기 및 배포하기

Node-RED 의존성 모듈을 설치 했으므로 Watson 노드를 사용하여 Watson AI 서비스를 통합할 수 있습니다. Watson Assistant, Watson Speech to Text, Watson Text to Speech를 사용하는 음성 지원 챗봇을 만들어 보겠습니다.

  1. Call for Code Starter 킷에서 플로우(flow)를 가져오기(import) 합니다.

  2. 플로우를 배포합니다.

    Node-RED flow

IBM Cloud에서 Watson Services 생성하기

플로우가 성공적으로 실행되려면 새로운 인스턴스와 API 키로 Watson Assistant 및 Watson Speech 노드를 구성해야 합니다.

Watson Assistant 인스턴스 생성하기

  1. 아직 Watson Assistant 인스턴스를 생성하지 않은 경우 생성합니다.

    IBM Cloud Catalog Watson Assistant

  2. 이 지침에 따라 코로나19(COVID-19)에 대한 Watson Assistant 챗봇을 프로비저닝합니다.

Watson Speech to Text Service 인스턴스 생성하기

  1. IBM Cloud 카탈로그에서 Watson Speech to Text Service 인스턴스를 생성합니다.

  2. Create를 클릭합니다.

    Create Watson Speech to Text Service instance

    Node-RED Watson Speech to Text 노드에는 이 새로운 인스턴스에 대한 apikey 자격 증명이 필요합니다.

  3. Watson Speech to Text 서비스를 생성한 다음, Service credentials (1)를 클릭합니다.
  4. View credentials (2) 옆의 접기 기호를 클릭합니다.
  5. 다음 섹션에서 사용하기 위해 apikey (3)를 복사합니다.

    Watson STT credentials

Watson Text to Speech Service 인스턴스 생성하기

IBM Cloud Catalog에서 Watson Text to Speech Service 인스턴스를 생성합니다.

  1. Create를 클릭합니다.

    Create Watson Tex text Speech Service instance

    Node-RED Watson Text to Speech 노드에는 이 새로운 인스턴스에 대한 apikey 증명이 필요합니다.

  2. Watson Text to Speech Service를 생성한 다음 Service credentials (1)를 클릭합니다.
  3. View credentials (2) 옆의 접기 기호를 클릭합니다.
  4. 다음 섹션에서 사용하기 위해 apikey (3) 를 복사합니다.

    Watson TTS credentials

API 키로 Watson Speech 노드 활성화하기

  1. speech to text 노드를 더블클릭하고 Watson Speech to Text Service 인스턴스의 API 키를 붙여 넣습니다.
  2. Done을 클릭합니다.

    Config Watson STT Node

  3. text to speech 노드를 더블클릭하고 Watson Text to Speech Service 인스턴스의 API 키를 붙여 넣습니다.

  4. Done을 클릭합니다.

    Config Watson TTS Node

COVID-19 워크스페이스 ID 및 API 키를 사용하여 Watson Assistant 노드 활성화하기

  1. assistant 노드를 더블클릭 한 다음, Skill ID를 Workspace ID 필드에 붙여 넣고, Assistant Service Endpoint URL 및 Watson Assistant 서비스 인스턴스의 API 키를 붙여 넣습니다.

  2. Done을 클릭합니다.

    Config Watson Assistant Node

인텐트를 파싱하고 API 콜 호출하기

Watson Assistant는 사용자의 질문과 관련된 인텐트(intent)를 반환합니다.

  • Switch 노드는 두 개의 인텐트를 http request 노드로 라우팅하고 외부 데이터 소스를 쿼리하여 현재 코로나19(COVID-19) 관련 통계 정보를 얻습니다.
  • Function 노드는 요약 통계 정보를 합하여 음성으로 내보낼 문장을 만듭니다.

Node-RED 플로우 배포하기

  • Node-RED 플로우를 배포하려면 UI에서 Deploy 를 클릭합니다.
  • Node-RED 대시보드를 실해하려면 오른쪽 사이드바에서 dashboard 탭을 클릭합니다. 오른쪽 상단 코드에 있는 화살표 아이콘을 클릭합니다.

코로나19(COVID-19) 위기 대응 챗봇과 대화하기

챗봇과 대화하려면 microphone 입력 탭을 클릭하고 코로나19(COVID-19)에 대해 질문하세요.

Node-RED dashboard

누군가 질문을 할때 백그라운드에서 발생하는 Node-RED 플로우는 이와 같습니다.

Node-RED COVID Data Dashboard

Node-RED COVID 통계 대시보드 구축하기

보너스 팁: 이 플로우에는 코로나19(COVID-19) 통계 정보를 여러 측정계로 보여주는 Node-RED 대시보드가 포함됩니다.

  • Node-RED 플로우는 한 시간마다 TWC COVID-19 Disease Tracker API를 호출하여 동적으로 코로나19(COVID-19) 감염 통계 정보를 수집합니다.
  • 국가별 데이터를 집계한 후 측정계를 업데이트합니다.

대시보드 코드에 대해 알아보기

이 튜토리얼에는 아래의 Node-RED 플로우가 포함됩니다.

Node-RED COVID Data Dashboard

TWC COVID-19 Country Report 노드는 TWC COVID-19 Global Disease Country List API를 사용하여 감염자가 발생한 모든 국가에 대해 매일 정보를 검색합니다.

function 노드는 총 확진자 수, 총 사망자 수, 총 완치자 수, 총 국가 수를 집계하여 결과를 해당 gauge 노드로 보냅니다.

function 노드의 코드는 아래와 같습니다:

let totalConfirmedCase = 0;

msg.payload.Countries.map(function(line){
    totalConfirmedCase += line.TotalConfirmed;
});

msg.payload = totalConfirmedCase;

return msg;

위의 대시보드를 확장하면 node-red-contrib-twc-covid19-tracker를 이용하여 COVID-19 데이터를 차트, 표, 지도 등으로 추가적으로 시각화 할 수 있으며 챗봇의 사용자 경험을 개선할 수 있습니다.

SMS 기능이 포함된 Watson Assistant 코로나 챗봇 만들기

플로우(flow)를 가져오기(import) 하고 배포(Deploy) 합니다.

이 예제는, 추가적인 의존성 패키지를 설치해야 합니다: –node-red-node-twilio

이 플로우는 HTTP In 노드로 지정된 URL에 POST 하도록 SMS 메시지 웹훅이 설정된 Twilio 번호를 필요로 합니다.

Twilio 메시지 웹훅 설정

Twilio가 수신 SMS를 Node-RED 엔드 포인트로 재전송 할 수 있도록 Node-RED는 접근 가능해야 하고 로컬 컴퓨터가 아닌 인터넷에서 호스팅 되어야 합니다. 위의 지침에 따라 IBM Cloud에 Node-RED를 배포하십시오.

다음은 Twilio가 활성화된 후 Node-RED 플로우의 모습입니다:

Node-RED flow

그리고, 다음은 TWC COVID-19 tracker API를 사용해서 Twilio로 부터 받은 샘플 채팅 메시지입니다.

Call for Code 위기 대응 커뮤니케이션 솔루션 구축하기!

이 튜토리얼을 완료했으므로 여러분은 이제 예시로 사용된 플로우와 Node-RED 대시보드를 수정하여 Call for Code 코로나19 위기 대응 커뮤니케이션 솔루션을 구축할 준비가 되었습니다.