위기 대응 커뮤니케이션 챗봇을 만들어 뉴스 및 코로나19(COVID-19) 데이터 소스에 연결하기

위기 상황에서 챗봇은 사람들이 중요한 질문에 대한 답을 빨리 찾는 데 도움을 줄 수 있습니다. 코로나19(COVID-19)와 같은 전염병이 세계적으로 대유행하는 시기에 사람들은 검사, 증상, 지역 사회의 대응 등에 관한 기본 정보를 찾으려고 할 것입니다.

이 튜토리얼은 IBM® Watson™ Assistant 를 사용하여 위기 대응 커뮤니케이션 챗봇을 만들고, Watson Discovery 및 COVID-19 API를 사용하여 동적 데이터를 쿼리하기 위해 웹훅을 Watson Assistant에 추가하는 방법에 대해 설명합니다.

학습 목표

학습 내용:

  • Watson Assistant 인스턴스 프로비저닝
  • Watson Assistant 인스턴스에 대화 스킬 추가
  • Watson Assistant 와 Watson Discovery 연결
  • Cloud Functions 작성
  • Watson Assistant 웹훅을 통해 데이터 소스 통합

수강 전 준비사항

IBM Cloud 계정 생성을 위해 등록합니다.

예상 소요 시간

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

Watson Assistant 인스턴스를 설정하여 챗봇 만들기

Watson Assistant를 사용하여 챗봇을 만드는 방법을 설명하겠습니다. Watson Assistant는 모든 애플리케이션, 디바이스 또는 채널에 대화형 인터페이스를 구축하도록 지원하는 툴입니다.

  1. IBM Cloud 카탈로그에서 Services로 이동하여 Watson Assistant 인스턴스를 프로비저닝합니다.

    Watson Assistant Catalog

  2. Watson Assistant 서비스를 실행합니다.

  3. Create Assistant 를 클릭하고 어시스턴트 생성 방법에 관한 다음 세부 지침 을 따릅니다.

    Watson Assistant Photo2

  4. Watson Assistance 인스턴스의 이름을 COVID Crisis Communication 으로 지정합니다.

    Watson Assistant Photo3

  5. 어시스턴트에 대한 Add dialog skill 을 클릭합니다. 궁금한 점이 있는 경우 문서를 참조합니다.

    Watson Assistant Photo4

  6. Import Skill > Choose JSON file 을 클릭하여 Covid Json 파일을 가져옵니다.

    Watson Assistant Photo5

  7. All Assistants 페이지로 돌아갑니다. 작업 메뉴( )에서 Settings 를 엽니다.

    Watson Assistant Photo6

  8. Settings 탭의 왼쪽에서 API Details 을 클릭하고 나중에 사용할 수 있도록 Assistant IDAPI Key 를 기록해 둡니다.

    Watson Assistant Photo7

  9. All Assistants 페이지로 돌아가서 Skills 링크를 클릭합니다.

    Click the Skills link

  10. Skill 페이지에서 작업 메뉴( ⋮ )를 클릭하고 View API Details 을 엽니다.

    Click the Skills link

  11. Skill Details 페이지에서 나중에 사용할 수 있도록 Skill ID를 기록해 둡니다.

    Click the Skills link

  12. 대화 스킬(dialog skill)로 돌아가서 어시스턴트를 테스트하고 확인하기 위해 측면에 있는 Preview Link 버튼을 클릭합니다.

    Watson Assistant Photo9

  13. Watson Assistant 챗봇에게 코로나19(COVID-19)에 대한 질문을 해봅니다.

    Watson Assistant Photo10

챗봇과 데이터 소스 통합하기

Watson Assistant가 지원되는 챗봇을 생성했으니 이제 챗봇을 데이터 소스에 연결해야 합니다. 아래 섹션에서는 동적 데이터를 쿼리할 Watson Assistant에 웹훅을 추가하여 이 작업을 수행하는 방법을 알려드립니다.

위기 대응 커뮤니케이션 챗봇은 세 가지 데이터 소스를 사용합니다:

웹훅 정의하기

먼저 웹훅이 하는 일을 살펴보겠습니다. 웹훅(webhook) 은 프로그램에서 일어나는 일이 무엇인가에 따라 외부 프로그램을 호출할 수 있는 메커니즘입니다. 대화 스킬(dialog skill)에서 사용될 경우 어시스턴트가 웹훅을 활성화한 노드를 처리할 때 웹훅이 트리거됩니다. 웹훅은 여러분이 지정하거나 대화 중 여러분이 사용자에게서 수집한 데이터를 수집하고 컨텍스트 변수에 저장합니다.

웹훅은 이 데이터를 웹훅 정의에서 지정한 URL로 HTTP POST 요청에 포함하여 보냅니다. 웹훅을 받는 URL은 리스너(listener)입니다. 이 URL은 웹훅 정의에 지정된 대로 전달된 정보를 사용하여 사전 정의된 작업을 수행하며 선택적으로 응답을 보낼 수 있습니다.

Watson Discovery를 활용하여 뉴스 정보 받기

  1. IBM Cloud 계정에서 Watson Discovery로 이동합니다.

    Discover Service

  2. Create 를 클릭하여 새로운 라이트 서비스를 생성합니다.

    Create Discover Service

  3. API 키와 URL을 기록해 둡니다. 다음 단계에서 이 정보가 필요합니다.

    Credentials

  4. Watson Discovery NEWS 서비스를 엽니다. 이 서비스는 사전에 입력된 검색 데이터 세트로, Watson Discovery 팀이 업데이트 및 관리합니다.

    Watson Discovery NEWS

  5. 오른쪽 상단에서 API 탭을 엽니다. Collection ID 및 Environment ID를 기록해 둡니다.

    NEWS Api info

Weather Company API 키 얻기

COVID-19 질병 추적용 The Weather Company API는 API 키를 필요로 합니다. Call for Code 참가자들은 Terms of Service를 읽고 Call for Code 2020 COVID Challenge에 등록 후 TWC API 키를 요청 할 수 있습니다.

  1. https://callforcode.weather.com/register/로 이동합니다

  2. API 키를 위한 여러분의 정보를 입력하고 가입합니다. 여러분의 API key는 이메일로 전달됩니다.

  3. 향후 사용할 API 키를 잘 보관해 둡니다.

Cloud Functions 작성

  1. IBM Cloud 카탈로그에서 IBM Cloud Functions 로 이동합니다.

  2. Start Creating 을 클릭합니다.

    functions

  3. Create Action 을 선택합니다.

    create

  4. 작업의 이름을 지정합니다. 런타임 드롭다운 메뉴에서 Node.js 10 을 선택합니다.

    environment

  5. 코드를 action/covid-webhook.js 로 변경합니다.

    code

  6. 코드는 두 가지 주요 부분으로 구성되어 있습니다. 함수 호출 시 보낸 매개변수를 기준으로 COVID-19 API 또는 Watson Discovery 중 어느 것을 호출할지가 결정됩니다. type=api 라는 쿼리 매개변수가 설정된 경우 summary endpoint 에서 COVID-19 API를 호출합니다.

    그러면 다음과 같은 형식으로 데이터가 반환됩니다:

     {
       Countries: [
         {
           Country: "",
           Slug: "",
           NewConfirmed: 0,
           TotalConfirmed: 0,
           NewDeaths: 0,
           TotalDeaths: 0,
           NewRecovered: 0,
           TotalRecovered: 0
         },
         {
           Country: " Azerbaijan",
           Slug: "-azerbaijan",
           NewConfirmed: 0,
           TotalConfirmed: 0,
           NewDeaths: 0,
           TotalDeaths: 0,
           NewRecovered: 0,
           TotalRecovered: 0
         },
         ...
       ]
     }
    
  7. 특정 위치 정보(국가/국가 코드/미국 주 코드)가 선택되었다면, The Weather Company API를 사용하거나 요약 응답에서 해당 위치에 대한 상태를 반환합니다.

    예를 들면, type=apilocation=United States of America 를 사용한 경우에 대한 응답은 아래와 같이 나타납니다.

     {
       "result": "Total Cases: 65778\nTotal Deaths: 942\nTotal Recovered: 361\n\nSource: Johns Hopkins CSSE"
     }
    
  8. Discovery 서비스를 호출하려는 경우, IAM 지원 서비스를 호출할 수 있는 매개변수를 설정해야 합니다. 왼쪽에서 Parameters 탭을 클릭합니다:

    • api_key(Discovery API 키)
    • twcApiKey (The Weather Company에서 얻은 API 키)
    • url (Discovery 서비스에 대한 URL)
    • collection_id
    • env_id
![parameters](https://developer.ibm.com/developer/default/tutorials/crisis-communication-chatbot-watson-assistant-webhook-integration-discovery-covid-data/images/parameter.png)
  1. 작업(action)을 웹 작업으로 활성화합니다. 그러려면 왼쪽에서 Endpoints 탭을 선택해야 합니다. Enable as Web Action. 옆에 있는 확인란을 클릭합니다.

    endpoint

  2. HTTP URL을 기록해 둡니다. 이 정보를 어시스턴트를 위한 웹훅으로 사용할 것입니다. 이 정보를 웹훅으로 사용하려면 이 URL 끝에 .json 을 추가해야 합니다.

    http endpoint

Watson Assistant 웹훅을 통해 데이터 소스 통합

웹훅을 통해 데이터 소스를 통합하는 방법에 대한 자세한 내용은 대화에서 프로그래밍 방식 호출 작성을 참고하세요.

COVID-19 챗봇에 웹훅을 추가하는 방법에 관한 구체적인 단계가 아래에 설명되어 있습니다.

  1. 앞서 생성한 COVID-19 어시스턴트를 불러옵니다. IBM Cloud 계정에서 Services > IBM Watson Assistant를 선택하여 해당 어시스턴트를 찾습니다. CDC COVID FAQ를 클릭하여 대화 상자를 엽니다.

    View Watson Assistant

  2. 왼쪽에서 Options 를 클릭합니다.

    options

  3. Options > Webhooks에서 URL 텍스트 상자에 Cloud Function 단계의 URL을 붙여넣습니다. URL 끝에 .json 을 추가하는 것을 잊지 마세요.

    url

  4. 왼쪽 메뉴에서 Dialog 를 선택합니다.

    dialog

  5. 웹훅 호출을 추가하려는 대화 노드를 엽니다.

  6. 노드를 선택한 후 Customize 를 클릭합니다.

    customize

  7. Webhooks 섹션에서 토글 버튼을 On 으로 변경하여 웹훅을 활성화합니다. Save 를 클릭합니다.

    webhooks

  8. 웹훅에 필요한 매개변수를 추가합니다. 이 매개변수는 쿼리 매개변수로 전송됩니다.

    webhook parameters

  9. Try It 탭으로 가서 웹훅을 호출하는 대화를 시작하여 웹훅 통합이 성공적으로 이루어졌는지 테스트합니다.

    webhook test

Watson Assistant가 여러 외부 API와 데이터베이스에 액세스할 수 있도록 웹훅을 쉽게 사용할 수 있습니다.

다음 단계

COVID-19 챗봇을 만들고 Watson Discovery 및 COVID-19 API에 연결하는 방법에 대해 알아보았습니다. 이제 몇 가지 통합 경로를 활용할 수 있습니다. 아래 튜토리얼에서는 Slack, 단순한 웹 애플리케이션 또는 Node-RED 대시보드와 이 챗봇을 통합하는 방법에 대해 살펴봅니다.

코로나19(COVID-19)에 대처하기

Watson Assistant를 사용하는 챗봇을 만들어 Watson Discovery 및 COVID-19 API 데이터 소스에 연결하는 방법을 알아보았습니다. 이 챗봇은 코로나19(COVID-19)에 대한 정보를 적시에 제공합니다. 이제 여러분이 이 기술을 활용하여 COVID-19 챌린지에 동참하고 전염병과 싸우는 데 기여할 차례입니다!