카우치베이스 서버

Azure의 챗봇 및 Viber용 Couchbase

챗봇은 사용자와 소통하는 새로운 방법이 될 수 있습니다. 챗봇의 기본 사항을 소개하는 게시물을 작성한 후 서버리스를 작성하고 글쓰기에 대한 게시물도 작성합니다. Azure 기능저는 "안녕하세요, 세상"보다 조금 더 실용적인 것을 만들어보기로 결심했습니다.

챗봇에 서버리스 아키텍처를 사용하는 것이 합리적입니다. 챗봇 사용은 산발적일 수 있습니다. 하루 중 다양한 시간대에 사용량이 정점을 찍었다가 떨어질 수 있습니다. 서버리스를 사용하면 필요한 리소스와 시간만큼만 비용을 지불하면 됩니다.

이 블로그 게시물의 모든 소스 코드는 다음과 같습니다. 깃허브에서 사용 가능.

Viber 챗봇

챗봇을 만들 수 있는 다양한 플랫폼을 선택할 수 있었습니다: 페이스북 메신저, 스카이프, 왓츠앱 등 다양한 플랫폼을 선택할 수 있었습니다. 하지만 저는 Viber.

미국에서는 Viber의 사용자 수가 많지 않은 것 같지만 저는 많이 사용하고 있습니다. 아내와 채팅하고, 사진, 재미있는 GIF 등을 보낼 때 매우 편리한 수단입니다. 특히 사진 전송에 있어서는 SMS보다 더 안정적이고 빠르다는 것을 알게 되었습니다. 가족 모두가 사용하고 있으면 좋겠어요! 또한 Viber는 카우치베이스의 고객입니다.. 증가하는 데이터 요구 사항을 지원하기 위해 MongoDb에서 전환했습니다.

또한, Viber의 REST API 은 간단하고 잘 문서화되어 있습니다. 서버리스 아키텍처와 Viber의 API를 사용하면서 0에서 챗봇으로 전환하는 속도가 얼마나 빨랐는지 믿을 수 없었습니다.

설정

먼저 다음과 같이 시작해야 합니다. Viber에서 봇 만들기 (언젠가는 Viber 계정이 필요합니다). Viber는 다음과 같은 API 키를 제공합니다. 30a6470a1c67d66f-4207550bd0f024fa-c4cacb89afc04094. HTTP 헤더에서 이를 사용하여 Viber API에 인증하게 됩니다.

다음으로 새 Azure 함수 솔루션을 만듭니다. 이전에 블로그에서 Azure 기능 에 대한 후속 조치로 지연 초기화.

저는 C#를 사용하여 Azure 함수를 작성하기로 결정했습니다. 안타깝게도 (제가 아는 한) Viber용 .NET SDK는 없으므로 REST API를 직접 사용해야 합니다. 큰 문제는 아닙니다. RestSharp. 하지만 원하는 경우 NodeJS 또는 PythonViber는 해당 언어에 대한 SDK를 제공합니다.

코딩을 시작하기 전에 먼저 웹훅. 이것은 단순히 수신 메시지를 보낼 위치를 Viber에 알려주는 방법입니다. 이 작업은 처음에만 수행하면 됩니다. 저는 먼저 200을 반환하는 베어본 Azure 함수를 배포하여 이 작업을 수행했습니다. 초기 웹훅을 설정하기 위해 Postman을 사용했습니다.

Chatbot webhook with Postman

마지막으로 Azure에 Couchbase 클러스터를 설정했습니다. 쉽고 무료로 CouchBase 및 Azure 시작하기. ('테스트 드라이브' 버튼을 사용하여 Azure 크레딧을 사용하지 않고도 3시간의 Couchbase Server를 사용할 수 있습니다). "viberchatbot"이라는 단일 사용자를 만들고, "ViberChatBot"이라는 버킷을 만들고, "travel-sample" 버킷을 로드했습니다.

Azure 기능

이 애플리케이션에서는 "안녕하세요, 세상"보다 조금 더 실질적인 챗봇을 만들고 싶었고, 약간의 재미도 주고 싶었습니다. 챗봇이 이해했으면 하는 명령은 다음과 같습니다:

  • "안녕"(또는 안녕하세요 등)이라고 말하면 "안녕!"이라고 응답합니다.

  • '메트릭'을 요청하면 지금까지 처리한 메시지 수를 알려줍니다.

  • '트위터'를 언급하면 팔로우할 사람을 추천해 줍니다.

  • CMH에서 ATL(또는 다른 공항)로 가는 항공편을 요청하면 현재 몇 개의 항공편이 있는지 알려줍니다( 여행용 샘플 버킷 를 입력하세요.)

  • "도와줘"라고 말하면 위의 명령어 목록이 표시됩니다.

자연어 처리나 구문 분석 라이브러리는 사용하지 않기로 했습니다. 간단한 if/else 문과 기본적인 문자열 매칭만 사용하기로 했습니다. 다양한 기능을 갖춘 강력한 챗봇을 만들 계획이라면 다음과 같은 라이브러리와 도구를 확인해 보는 것이 좋습니다. LUIS, wit.ai, NLTK 및 기타.

챗봇 코드

먼저 Viber가 서버리스 엔드포인트로 전송할 데이터의 구조를 표현하기 위해 몇 가지 C# 클래스를 만들었습니다.

Viber 클래스

이것은 Viber의 기능을 모두 보여주는 것은 아니지만 기본적인 문자 메시지 수신을 시작하기에 충분합니다.

다음으로, Azure 함수는 원시 HTTP 요청을 ViberIncoming 객체입니다.

그 후, 저는 ViberProcessor 클래스가 있는 프로세스 메서드에서 이 객체를 수신합니다.

Viber 메시지 처리

로그인 는 들어오는 각 요청에 대한 모든 것을 알 수 있도록 (Couchbase에) 레코드를 생성합니다.

프로세스 메시지 는 메시지 텍스트를 분석하여 응답할 내용을 파악합니다. 전체 코드는 다음에서 확인할 수 있습니다. Github에 대한 자세한 내용은 아래에서 확인할 수 있습니다:

메트릭 가져오기

제 챗봇이 주로 듣는 것 중 하나는 '메트릭'입니다. 메트릭을 요청하면 챗봇이 처리한 수신 메시지의 개수를 알려줍니다. 모든 요청을 Couchbase에 로깅하기 때문에 N1QL 쿼리로 메트릭을 쉽게 쿼리할 수 있습니다.

메시지 다시 보내기

챗봇은 대화하는 사람과 다시 통신해야 합니다. 앞서 말했듯이 Viber .NET SDK가 없기 때문에 "수동으로" REST 호출을 만들어야 합니다. 이는 다음을 사용하면 충분히 쉽습니다. RestSharp:

또한 각 응답을 Viber에서 Couchbase로 로깅하고 있다는 점에 유의하세요. 이는 나중에 분석 및/또는 문제 해결을 위해 매우 유용한 정보가 될 수 있습니다. Viber가 응답의 구조와 내용을 변경하기로 결정하면 Couchbase의 데이터는 모두 유연한 JSON 데이터로 저장됩니다. 이 수집 지점에서 예상치 못한 오류나 누락된 데이터가 발생하지 않습니다.

요약

이것이 기본 사항입니다. 챗봇이 수행할 수 있는 전체 작업/작업에 대한 소스 코드를 확인하세요. 저는 챗봇을 테스트하기 위해 제 휴대폰(그리고 공개했을 때 작동하는지 확인하기 위해 제 아내의 휴대폰)에서 Android용 Viber 앱을 사용했습니다.

Conversation with chatbot

주의: 이 글을 읽을 때쯤이면 제가 만든 챗봇은 이미 오프라인 상태가 되어 있을 것입니다. 제가 아닌 다른 사람이 '카우치베이스 봇'을 만들었으니까요!

다음은 챗봇을 만들 때 이러한 접근 방식의 이점을 요약한 것입니다:

  • 그리고 서버리스 접근 방식 은 챗봇의 비용을 관리할 수 있는 좋은 방법입니다. Viber든 다른 메시징 플랫폼이든 간에 산발적이고 주기적으로 사용될 가능성이 있습니다.

  • Viber의 REST API 는 JSON을 활용하기 때문에 추적/저장/쿼리에 Couchbase가 자연스럽게 적합합니다.

  • 카우치베이스의 손쉬운 확장성 및 다음과의 파트너십 Microsoft (그리고 아마존과 구글)은 챗봇 백엔드를 위한 훌륭한 선택입니다.

이 새로운 챗봇은 정말 재미있었고, 저는 이 새로운 챗봇을 가지고 놀면서 정말 흥분할 수 있었습니다. 이미지 분석, 농담, 모든 종류의 정보 검색, 제품 및 서비스 판매 등 다양한 유용한 작업을 수행할 수 있었습니다.

챗봇으로 무엇을 하고 계신지 듣고 싶습니다! 댓글을 남기거나 다음 주소로 문의해 주세요. 트위터 @mgroves.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.