[Nodejs/Watson] Nodejs에 Watson 챗봇 연동하기 - (1)

2020. 9. 20. 23:22프로젝트/nodejs

안녕하세요, 오늘은 Nodejs와 Watson 챗봇 연동하는 법을 정리해보려고 합니다. 챗봇 프로젝트를 시작하게 됐는데, python에 연동하기 전에 익숙한 nodejs에 연동해봤습니다. 해야지, 해야지 하다가 시간이 나서 겨우 해봤네요. 😂 프로젝트 자체는 IBM Foundry를 이용해 호스팅 했으며 번역 api들을 연동하려고 했던 프로젝트가 있어 같은 페이지에 연동해보려고 합니다.

 

일단 결과물은 다음과 같습니다. ( translate-page.us-south.cf.appdomain.cloud/ ) 간단하게 연동이 어떤식으로 되는지 여부만 체크하려던 상태라 에러도 많고 예외처리같은 것도 안했고... 섬세한 처리가 안되어있습니다. ( 엔터키 명령을 안넣었다던가... ) 

 

 


IBM Watson 챗봇과 Nodejs 연동

저는 챗봇을 처음 접해보며 연동 삽질 기록이라고 보는게 더 맞을지도 모릅니다! 

 


 

기본적으로 IBM Foundry에 nodejs 듀토리얼을 세팅해둬야 합니다. 샘플앱 ( https://github.com/IBM-Cloud/get-started-node ) 을 받아서 세팅해뒀습니다. 이어서 IBM의 watson Assistant 서비스도 하나 생성해주세요.

일단 제가 생각했던 챗봇의 흐름은 다음과 같습니다. 언제나 목표는 해보고 싶은대로 잡는 거죠. ( ... ) 거창한 목표는 없고, '개선' 이라는 명령이 들어오면 개선할 문장 혹은 단어를 입력받아 DB에 모아볼 의도로 구성된 챗봇이었습니다. 입력 마무리는 *종료* 를 받아 끝내도록 합니다. 

 

1. 명령어 등록

일단 IBM의 Watson Assistant에 명령어와 명령에 따른 결과물을 등록해줘야 합니다. Watson Assistant 서비스 화면으로 들어가 밑의 화면에서 실행 버튼을 눌러줍니다. 새로운 탭으로 넘어갑니다.  이제 여기서 Assistant를 새로 하나 생성해야 합니다. 바로 버튼이 보이실 겁니다. Create 를 눌러주세요. Skill까지 무사히 만들어졌다면

좌측에 메뉴가 보이실 겁니다. 저는 Intents와 Entities를 하나씩 사용해봤습니다. Intents란 의도를 나타내고, Entities란 개체를 의미합니다. 저는 Intents에 개선 명령을, Entities에 종료 명령을 넣었습니다. 사실 종료도 Intents에 넣는게 맞다고 생각하는데, 일단 하나씩 사용해볼 심산으로 넣어뒀습니다. 

 

2개를 등록하고 나선 Dialog에서 흐름을 짤 수 있습니다. 일단 위 명령어 2개를 어떻게 등록했는지부터 공유하도록 하겠습니다.

 

 

 

*Intents

이름은 #개선제안 으로 등록했습니다. Intents는 #으로, Entities는 @로 표현을 하는 것 같습니다. 이제 개선제안에 어떤 명령들이 들어오면 반응하는지 설정할 수 있습니다. 저는 5개의 유형을 등록해봤습니다. 

 

 

*Entities

간단하게 *종료* 단어만 등록해둔 상태입니다. 다른 경우의 수 없이 반드시 *종료* 명령에만 반응하게 만들 예정이라 이렇게 설정해뒀습니다. 

 

*Daialog

제가 만든 흐름은 위와 같습니다. 개선제안을 먼저 체크하도록 했습니다. 그 다음 종료 명령, ( 사진엔 잘못나와 있는데 *종료* 로 수정했습니다. ) 그리고 예외처리를 제일 밑에 두도록 합니다. node의 순서대로 걸러지니 유의해주세요. 예외처리를 꼭 제일 밑에 둬야 합니다. 

 

2. 테스트하기

간단한건데 자주 까먹고 그냥 실행하다가 터덜터덜 돌아올 때가 많습니다. 흐름을 다 짰다면 한 번 원하는대로 잘 되는지 확인해보시길 바래요.

 

3. api 준비하기

github.com/watson-developer-cloud/node-sdk

 

watson-developer-cloud/node-sdk

:comet: Node.js library to access IBM Watson services. - watson-developer-cloud/node-sdk

github.com

위 sdk를 사용할 예정입니다. 따라서 nodejs에 연동하기 위한 준비를 해야합니다. api 키들을 찾아서 메모장에 모아두도록 합니다. 일단 api 키는 Watson Assistant 서비스 화면에 들어가면 제일 먼저 보입니다. 복사해 주세요. 

 

그 다음 Assistant Id가 필요합니다. 아까 Assistant를 만들었던 화면으로 돌아가면 여러분이 만드신 Assistant가 보일 겁니다. 제일 우측의 동그라미 3개를 눌러주세요. 그 다음 Settings를 눌러줍니다.

그럼 assistant의 설정값들이 보입니다. 

좌측에 API details에서 Assistant Id 값을 복사해서 메모장에 같이 붙여놔주시길 바랍니다. 2개는 반드시 사용해요!

 

글 한개에 압축해서 올릴 생각이었는데 생각보다 길어져서 2개로 나눠서 올릴 예정입니다. 다음엔 nodejs 코드에 직접 api를 만들어서 사용해보도록 하겠습니다. 일단 간단한 흐름만 잡아서 한건데 생각보다 복잡해지는 기분이 듭니다. 다음 글에서 더 열심히 작성해보겠습니다. 

 

 

혹시 틀린 정보가 있다면 피드백은 언제나 환영입니다.