Contact Info
198 West 21th Street, Suite 721
New York, NY 10010
youremail@yourdomain.com
+88 (0) 101 0000 000
Follow Us
개발자 없이 만들어보는 시나리오 봇

개발자 없이 만들어 보는 시나리오 봇

임직원 휴가 조회 봇을 기억하시나요? 이 휴가 조회 봇을 여러분도 직접 만들어 볼 수 있도록, 예제와 제작법을 공개합니다. 특히 오늘 소개해드릴 휴가 조회 봇 예제는 운영하고 있는 서버가 없어도 시연해볼 수 있도록, 구글이 제공하는 도구만을 이용해서 DB를 구축하고 연결하는 방법을 알려드릴게요.
제작에 앞서, 어떻게 작동하는 봇인지 다시 한 번 테스트해 보세요. 👉️여기를 눌러 깃플챗 챗봇에 접속한 후, 챗봇 체험하기 → 🏖️휴가 조회 봇 체험하기 순서대로 눌러 진행해 보세요.
체험을 마치고 오셨다면, 본격적으로 만드는 방법을 알려드릴게요.
안녕하세요!
고객만족 120%를 위한 디지털컨택센터 깃플챗입니다.

임직원 휴가 조회 봇을 기억하시나요? 이 휴가 조회 봇을 여러분도 직접 만들어 볼 수 있도록, 예제와 제작법을 공개합니다.

특히 오늘 소개해드릴 휴가 조회 봇 예제는 운영하고 있는 서버가 없어도 시연해볼 수 있도록, 구글이 제공하는 도구만을 이용해서 DB를 구축하고 연결하는 방법을 알려드릴게요.

제작에 앞서, 어떻게 작동하는 봇인지 다시 한 번 테스트해 보세요.

👉️여기를 눌러 깃플챗 챗봇에 접속한 후, 챗봇 체험하기🏖️휴가 조회 봇 체험하기 순서대로 눌러 진행해 보세요.

체험을 마치고 오셨다면, 본격적으로 만드는 방법을 알려드릴게요.

PART 1: 구글 스프레드시트 만들기

임직원 휴가 조회 봇이 작동하기 위해서는, 조회할 수 있는 데이터가 저장된 DB가 있어야 합니다. 시나리오 봇을 본격적으로 사용하기 위해서는 개발자와 전용 서버 구축이 필요할 수 있지만, 휴가 조회 봇과 같이 간단한 시나리오 봇은 구글 스프레드시트와 구글 클라우드 플랫폼을 이용해 별도의 서버 없이도 만들어 볼 수 있습니다.

① 구글 스프레드시트 생성

먼저 구글 드라이브에 들어가서, 새 스프레드시트를 만드세요.

② 데이터 입력 및 시트 이름 변경

빈 스프레드시트에 아래의 데이터를 입력해 주세요. 왼쪽부터 각각 이름, 비밀번호, 잔여휴가일을 의미합니다. 시나리오 봇이 여기에 입력된 데이터를 조회 및 비교하게 됩니다.

그리고 스프레드를 만들면 자동으로 부여되는 시트 이름인 “시트1″을 bot_data와 같이 영문으로 바꾸어 주세요. HTTP 통신할 때 시트 이름이 URL에 포함되게 되므로, 영문으로 바꾸어주는 것이 편리합니다.

③ 스프레드시트 권한 변경

스프레드시트 우측 상단의 공유 버튼을 눌러 🔗링크 보기를 클릭, 권한을 링크가 있는 모든 사용자에게 뷰어 권한을 주도록 변경합니다. 또한 링크 복사를 눌러 URL 복사해 기록해 둡니다.

여러분에게 예제를 제공하기 위해서 이 링크와 같이 스프레드시트를 만들어 두었으며, 주소는 아래와 같습니다. 가장 마지막의 주황색 부분이 중요합니다.

https://docs.google.com/spreadsheets/d/1-IAR6ENKa9afaLjDyX77p93yE5GQQ38zGNb5SSDNRD0

PART 2: 구글 클라우드 플랫폼에서 API 키 받기

여러분 데이터가 저장된 구글 스프레드시트를 완성하였습니다.

이제 깃플챗 시나리오 봇이 구글 스프레드시트와 통신할 수 있도록 다리를 놔줘야 합니다.

① 구글 클라우드 플랫폼에서 새 프로젝트 생성

구글 클라우드 플랫폼 페이지로 이동해 서비스 가입 절차를 마칩니다. 좌측 상단의 프로젝트 선택을 눌러, 새 프로젝트를 클릭합니다.

이후 프로젝트 이름을 정하고 만들기 버튼을 누릅니다.

② Google Sheets API 설치

생성이 완료된 후, 화면 상단의 🔍️ 돋보기 버튼을 눌러 Google Sheets API를 검색합니다.

검색 결과의 MARKETPLACE 섹션에 나오는 Google Sheets API를 클릭합니다.

사용 버튼을 누른 후, 위 ①에서 만든 프로젝트 이름을 클릭해 적용해 줍니다.

③ API 키 만들기

다음으로 API 및 서비스사용자 인증 정보로 이동합니다.

 + 사용자 인증 정보 만들기를 클릭하고, 첫 번째에 있는 API 키를 누르면 API 생성이 끝납니다.

이 API Key를 잘 기억해 둡니다.

여러분에게 제공하는 예제를 위해 만들어둔 API Key는 아래와 같습니다:

AIzaSyDY7KVDGjIQPDin-cogDZb67_8lxWtTRa0

이제 본격적으로 시나리오 봇을 만들기 위한 준비가 끝났습니다!

TIP: HTTP 노드 작동 이해하기

시나리오 봇 해설을 시작하기에 앞서, HTTP 노드가 작동하는 방법을 설명해 드릴게요.

시나리오 봇이 DB인 구글 스프레드시트의 정보를 가져오기 위해서는, 구글 스프레드시트가 서버처럼 작동할 수 있도록 설정해줘야 합니다. Google Sheets API를 설치하여 내가 생성한 스프레드시트가 서버처럼 작동할 수 있게 바꾸고, 이 데이터에 아무나 접근하지 못하도록 API Key를 발급해 사용하는 것입니다.

시나리오 봇에서 구글 스프레드시트의 정보를 불러올 때에는 아래와 같은 API URL 형식을 사용합니다:

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetname}

우리가 앞서 PART 1에서 생성한 구글 스프레드시트의  spreadsheetIdsheetname을 적용하면 아래와 같은 주소가 나옵니다.

https://sheets.googleapis.com/v4/spreadsheets/1X6U94cEUUozfnSlqyN-3A-7BUJSgkPDjQ1sQ0Y3NtuM/values/bot_data

이 주소를 인터넷 브라우저에 입력하면 아래와 같이 API Key가 없어서 접근할 수 없다는 메시지가 뜹니다.

"message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"

따라서 HTTP 노드를 작성할 때, API URL을 적은 후 아래쪽의 Params에 key 항목을 추가하여 API 키 값을 넣어주어야 정상적으로 호출이 가능합니다.

이 내용을 읽었다면 아래에서 HTTP 메시지 노드 항목을 이해하기 쉬울 거에요!

PART 3: 시나리오 봇 만들기

먼저 👉️이 링크를 눌러 시나리오 봇 예제 파일인 sample-bot_employee-vacation-gcp.json을 다운받으세요.

① 워크스페이스에서 시나리오 봇 생성 및 봇 빌더 접근하기

워크스페이스에서 시나리오 봇으로 이동하여 오른쪽 상단의 +시나리오 봇 추가를 눌러 비어있는 봇을 생성하세요.

생성된 봇 이름 우측의 “빌더”를 클릭해 봇 빌더로 접근하세요.

② 예제 파일 업로드하기

오른쪽 상단에 테스트 버튼 옆의 3개 점을 누른 후, 시나리오 업로드를 클릭하세요.

다운로드 받았던 예제 파일 sample-bot_employee-vacation-gcp.json을 업로드 합니다.

③ 업로드된 시나리오 봇 저장 및 테스트하기

예제 데이터가 성공적으로 업로드 된 것을 확인했다면 저장하기 버튼을 눌러 줍니다. 이후 옆의 테스트 버튼을 눌러 잘 작동하는지 테스트해 보세요.

PART 4: 각 노드에 대한 해설

휴가 조회 봇이 작동하는 전체적인 개념은 지난 번에 소개해 드렸습니다. 이번에는 직접 업로드한 봇의 각 노드를 보면서 아래 설명을 읽어 보세요. 특히 이번에는 HTTP 메시지 노드의 작동 방법을 구체적으로 덧붙여 설명해 드릴게요.

1. 사번 입력

휴가를 조회하는 임직원의 신원을 확인하기 위해 사번 입력이라는 이름의 입력 노드로 사번을 입력하도록 만들었습니다. 이 과정에서 사번 형식인 세 자리 숫자만 입력하도록 사번 입력 형식 확인이라는 이름의 판단 노드를 만들어, 형식이 틀릴 경우 메시지 노드로 보내 다시 입력하라고 안내하게 했습니다. 사번 입력 형식 검증은 자바스크립트 정규 표현식을 사용했습니다.

2. 유효 사번 확인

세 자리 숫자의 올바른 형식으로 사번을 입력했어도 실제로 존재하지 않는 사번일 수 있습니다. 봉황건설 임직원 사번은 001부터 006까지만 존재하기 때문에, 500와 같은 번호를 입력하면 조회할 정보가 없는 셈이죠.

그래서 임직원의 정보가 등재된 서버의 사번과 대조해서 존재하지 않는 사번인지 확인하기 위해 사번 유효성 확인이라는 이름의 HTTP 메시지 노드사번 유효성 확인 결과라는 판단 노드 연결했습니다.

① “사번 유효성 확인” HTTP 메시지 노드 작동 원리

위의 TIP에서 설명했던 것처럼, HTTP 통신으로 DB를 조회하기 위해 GET으로 설정 후 URL을 입력하고, Params에 API 키를 입력합니다.

다음으로는 range를 이용해서 스프레드시트의 어떤 영역을 조회할지 정합니다. DB의 모든 데이터가 아니라 딱 필요한 부분만 조회하기 위해 엑셀의 셀 번호인 A1, C3와 같은 좌표값을 정해주는 셈이죠.

 

사번을 조회하는 입력 노드의 Key 값이 employeeIdNumber이기 때문에, 사용자가 여기에 입력한 값을 ${employeeIdNumber.data}라는 변수로 표현할 수 있습니다.

이 변수를 사용해서 스프레드시트에서 특정 범위를 조회하도록 아래와 같이 range의 value를 작성합니다.

A${employeeIdNumber.data}

 

이렇게 작성하면, 입력한 사번이 001일 때에는 스프레드시트의 A001의 데이터를 조회하게 됩니다.

만약 입력한 사번이 500일 경우, A500의 데이터를 조회하게 됩니다.

노드 오른쪽 위의 시뮬레이터를 클릭해서 입력한 데이터에 따라 어떤 결과를 노출하는지 확인해볼 수 있습니다.

사번 001을 입력했다고 가정하고, rangeA001 이라고 입력한 후 전송 버튼을 누르면 Result에 아래와 같은 내용이 출력됩니다:

{
    "statusCode": 200,
    "body": {
        "range": "bot_data!A1",
        "majorDimension": "ROWS",
        "values": [
            [
                "김사장"
            ]
        ]
    }
}

즉, A001에 있는 데이터인 “김사장”을 “values”로 출력했습니다.

 

만약 존재하지 않는 사번인 500을 입력하면 어떻게 될까요? rangeA500 이라고 입력한 후 전송 버튼을 눌러 보세요. Result에 아래와 같은 내용이 출력됩니다:

{
    "statusCode": 200,
    "body": {
        "range": "bot_data!A500",
        "majorDimension": "ROWS"
    }
}

A500에는 데이터가 없기 때문에 “values”가 출력되지 않았습니다.

 

이렇게 “values”가 있는지 없는지 차이를 활용해서 유효한 사번인지 아닌지 판단하게 됩니다.

② “사번 유효성 확인 결과” 판단 노드 작동 원리

조회되는 데이터가 있으면 유효한 사번이고, 아무것도 조회되지 않으면 잘못된 사번이라고 판단하도록 작동합니다. 바로 위에서 존재하지 않는 사번인 500을 입력할 경우, “values” 항목 자체가 출력되지 않았죠?

위에서 구글 스프레드시트와 통신하는 HTTP 메시지 노드의 Key 값은 “checkValidEmployeeIdNumber”입니다. 그렇기 때문에 우리는 ${checkValidEmployeeIdNumber.values}라는 변수를 사용할 수 있습니다. 유효한 사번을 넣을 경우 “김사장”이라는 이름 값이 “values”로 출력되지만, 존재하지 않는 사번을 넣으면 데이터가 없는 좌표를 검색하기 때문에 아무 “values”가 나오지 않는 것이죠.

 

이 차이를 활용해 판단 노드에서 ${checkValidEmployeeIdNumber.values}가 값이 있다면 유효한 사번으로, 값이 없다면 없는 사번으로 판단하도록 작성하였습니다.

3. 비밀번호 입력

형식도 맞고 실제로 존재하는 사번을 입력했다면, 이제 개인확인 비밀번호를 입력할 차례입니다. 직원의 사번은 누구나 알 수 있기 때문에, 각 직원 개인만 알고 있는 비밀번호를 입력해야 잔여 휴가를 확인할 수 있도록 한 것이죠.

사용자가 입력 노드개인확인 비밀번호 입력에서 입력한 비밀번호가 맞는지 확인하기 위해 비밀번호 확인이라는 이름의 HTTP 메시지 노드에서 서버와 통신합니다. 그 다음 판단 노드비밀번호 확인 결과에서 결과 값에 따라 다시 비밀번호를 확인하라고 할지, 잔여 휴가일을 알려줄지 결정합니다.

① “비밀번호 확인” HTTP 메시지 노드 작동 원리

앞에서 이미 설명한 “사번 유효성 확인” HTTP 메시지 노드와 거의 동일합니다. 다만 이번에는 조회해야하는 데이터의 범위는 이름 정보만 있는 A열 뿐만 아니라, 비밀번호가 적힌 B열과 잔여 휴가일이 기록된 C열도 조회해야 합니다.

 

따라서 range를 아래의 값으로 작성합니다.

A${employeeIdNumber.data}:C${employeeIdNumber.data}

 

사번으로 001을 입력했다면 A001:C001의 데이터를 조회할 것입니다. 시뮬레이터를 통해 이 값을 전송해보면 아래와 같은 결과를 얻을 수 있습니다.

{
    "statusCode": 200,
    "body": {
        "range": "bot_data!A1:C1",
        "majorDimension": "ROWS",
        "values": [
            [
                "김사장",
                "1111",
                "13.5"
            ]
        ]
    }
}

② “비밀번호 확인 결과” 판단 노드 작동 원리

HTTP 메시지 노드에서 임직원의 이름과 비밀번호, 잔여 휴가일을 모두 가져왔습니다. 이제 사용자가 입력한 비밀번호가 맞는지 비교할 차례입니다.

 

바로 앞 HTTP 메시지 노드의 Key가 “checkLeftoverVacations”이므로, 여기서 출력된 세 가지 “values”는 각각 ${checkLeftoverVacations.values[0][0]}, ${checkLeftoverVacations.values[0][1]}, ${checkLeftoverVacations.values[0][2]}라는 변수로 좌표 형식을 추가해 나타낼 수 있습니다.

사용자가 “개인확인 비밀번호 입력”이라는 입력 노드에 넣은 값은 해당 노드의 Key인 “personalPW”를 따라 ${personalPW.data}라는 변수로 표현할 수 있습니다.

DB에 저장된 비밀번호를 나타내는 변수는 ${checkLeftoverVacations.values[0][1]}이므로, 이 값과 사용자가 입력한 ${personalPW.data}가 동일한지 비교하는 판단 노드를 만듭니다.

동일할 경우 올바른 비밀번호를 입력한 것이고, 다를 경우 틀린 것이죠.

4. 잔여 휴가일 안내

입력한 비밀번호가 맞다면, 다음으로 메시지 노드로 연결해 줍니다.

그리고 위 HTTP 메시지 노드에서 가져온 임직원 이름(${checkLeftoverVacations.values[0][0]})과 잔여 휴가일(${checkLeftoverVacations.values[0][2]}) 변수를 사용하여 휴가를 안내합니다.

${checkLeftoverVacations.values[0][0]}님의 잔여 휴가일은 ${checkLeftoverVacations.values[0][2]}일입니다.
어때요? 휴가 조회 봇이 작동하는 원리가 이해가 되셨나요?
HTTP 통신 노드나 판단 노드가 작동하는 방법이 조금 어렵게 느껴질 수 있지만, 어떠한 식으로 데이터를 호출하고 조회하는지 개발자가 아니라도 실습해볼 수 있도록 자세하게 설명해 드렸어요.
예제로 실습해 보다가 어려운 점이 있다면, 깃플챗 상담사를 통해 문의 주세요 💬
확인하세요!
  • 각 노드에 대한 설명은 깃플챗 이용 가이드에서도 확인할 수 있습니다.
  • 시나리오 봇의 임직원 정보는 허구이기 때문에 예제를 위해 API 키를 공개하였습니다. 하지만 실제 개인정보가 저장된 서버의 API 키는 절대로 노출되지 않도록 주의하세요.