데이터베이스 구동 Slackbot 빌드
이 튜토리얼에서는 비용이 발생할 수 있습니다. Cost Estimator를 사용하여 예상 사용량을 기반으로 비용 추정값을 생성하십시오.
이 튜토리얼에서는 백엔드 IBM Db2 SaaS 데이터베이스에서 항목을 검색하고 작성할 수 있는 Slackbot을 빌드할 것입니다. Slackbot은 IBM® watsonx™ Assistant 서비스에 의해 지원됩니다. 지원 통합을 사용하여 Slack와 IBM® watsonx™ Assistant을(를) 통합합니다. IBM Db2 SaaS은(는) 사용자 정의 확장으로 watsonx Assistant에서 사용할 수 있습니다.
Slack 통합은 Slack와 watsonx Assistant 사이의 메시지를 전송합니다. Python으로 작성되고 서버리스 Code Engine 앱으로 배치된 사용자 정의 확장은 데이터베이스 백엔드에 대해 REST API를 노출합니다.
목표
- 데이터베이스 백엔드와 상호작용하는 watsonx Assistant 을(를) 사용하여 챗봇을 빌드합니다.
- 통합을 사용하여 watsonx Assistant를 Slack에 연결
- Python 데이터베이스 애플리케이션을 작성하고 Code Engine에 배치합니다.
- watsonx Assistant 사용자 정의 확장을 통해 IBM Db2 SaaS 데이터베이스에 액세스합니다.
- 사용자는 Slack 또는 웹 챗 클라이언트를 사용하여 IBM® watsonx™ Assistant과(와) 상호작용합니다.
- 챗봇은 Code Engine에 Python 앱으로 배치된 REST API를 사용하는 사용자 정의 확장을 사용합니다.
- 사용자 정의 확장 앱은 데이터를 검색하여 IBM Db2 SaaS 데이터베이스에 데이터를 삽입합니다.
시작하기 전에
이 튜토리얼에는 다음 항목이 필요합니다.
- IBM Cloud CLI
- Code Engine 플러그인,
git
: 소스 코드 저장소를 복제함jq
: JSON 데이터를 조회함.
이러한 도구의 설치를 피하려면 IBM Cloud 콘솔에서 Cloud Shell 사용하면 됩니다.
튜토리얼 시작하기 안내서에는 사용자 운영 체제에 맞게 이 도구를 다운로드하고 설치하기 위한 지시사항이 있습니다.
서비스 설정 및 백엔드 배치
이 섹션에서는 필요한 서비스를 설정하고 백엔드 앱을 배치합니다. 이 모든 작업은 터미널의 명령행 인터페이스(CLI)에서 수행할 수 있습니다.
-
GitHub 리포지토리를 복제하고 복제된 디렉토리로 이동합니다:
git clone https://github.com/IBM-Cloud/slack-chatbot-database-watson cd slack-chatbot-database-watson
-
로그인하지 않은 경우
ibmcloud login
또는ibmcloud login --sso
사용하여 대화형으로 로그인하세요. 작업할 지역과 리소스 그룹을 타겟팅해야 합니다. 이는 서비스 및 조치를 작성하는 데 사용됩니다.ibmcloud resource groups
를 사용하여 사용 가능한 리소스 그룹을 나열할 수 있습니다.ibmcloud target -r <region> -g <resource group>
ibmcloud target -g default
를 사용하여 기본 리소스 그룹으로 전환하십시오. -
IBM Db2 SaaS 인스턴스를 작성하고 이름을 eventDB로 지정하십시오. 사용자의 지역(예: eu-de)에 맞게 us-south 지역을 조정하십시오.
ibmcloud resource service-instance-create eventDB dashdb-for-transactions free us-south
무료(Lite) 플랜 이외의 다른 플랜도 사용할 수 있습니다. 일부 위치에서는 무료 플랜을 사용할 수 없습니다. 서비스가 프로비저닝될 때까지 기다리십시오. 지시사항은 위 명령의 출력을 참조하십시오. 다음 명령을 실행하여 상태를 확인할 수도 있습니다.
ibmcloud resource service-instance eventDB
-
나중에 Code Engine 앱에서 데이터베이스 서비스에 액세스하려면 적절한 권한이 필요합니다. 따라서 서비스 인증 정보를 작성하여 slackbotkey로 레이블을 지정합니다.
ibmcloud resource service-key-create slackbotkey Manager --instance-name eventDB --output json > slackbotkey.json
slackbotkey.json 파일에는
service credentials
라고도 하는service key
가 포함되어 있습니다. 이 일반 텍스트 파일에는 eventDB 서비스 인스턴스에 대한 관리 비밀번호 및 연결 문자열이 포함되어 있습니다.출력은
slackbotkey.json
파일에 저장되며 이 단계에서 필요합니다. 다음 명령을 실행하여 데이터베이스 연결 URL을 추출하십시오.jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.json
이는 $DB2_URI 로 참조되며 워크스테이션 또는 클라우드 쉘에서 지원되는 경우 쉘 변수에 저장될 수 있으며 애플리케이션을 로컬로 실행 중인 경우 익스포트될 수 있습니다.
export DB2_URI=$(jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.json) echo $DB2_URI
출력은
ibm_db_sa://username:password@database-hostname:port/bludb?Security=SSL;
형식이어야 하며 쉘 변수 DB2_URI에 있습니다. -
watsonx Assistant 서비스의 인스턴스를 작성하십시오. eventAssistant를 이름 및 무료 Lite 플랜으로 사용하십시오. us-south를 사용자 위치에 맞게 조정하십시오.
ibmcloud resource service-instance-create eventAssistant conversation free us-south
-
사용자 정의 확장을 사용하여 사전 빌드된 컨테이너 이미지를 Code Engine 앱으로 배치하십시오. 먼저 프로젝트를 작성하십시오.
ibmcloud ce project create --name slackbot
그런 다음 프로젝트를 활성 프로젝트로 선택하십시오.
ibmcloud ce project select --name slackbot
그런 다음, 앱 이름을 slackbot-backend로 지정하십시오. API_TOKEN (MY_SECRET) 의 값을 대체하십시오. 모든 향후 단계에서 대체하려면 MY_SECRET에 대해 사용자 고유의 텍스트를 사용하십시오. 이는 REST API에 대한 호출을 보안하는 데 사용됩니다.
ibmcloud ce app create --name slackbot-backend --image icr.io/solution-tutorials/tutorial-slack-chatbot-database:latest --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI"
애플리케이션에 대해 보고된 URI를 기록해 두십시오. 이는 다음 단계에서 $APP_URL로 참조됩니다. 쉘 변수를 사용할 수 있습니다.
APP_URL=$(ibmcloud ce app get -n slackbot-backend --output json | jq -r .status.url) echo $APP_URL
사전 빌드된 컨테이너 이미지를 배치하는 대신 제공된 코드에서 자체 이미지를 빌드하고 배치할 수도 있습니다. 저장소에 있는
Dockerfile
를 사용하여 소스ibmcloud ce app create --name slackbot-backend --build-source . --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI"
에서 빌드하도록 작성 명령을 수정할 수 있습니다. 추가 세부사항은 로컬 소스 코드에서 앱 배치 에 대한 Code Engine 문서를 참조하십시오. 공용 컨테이너 이미지를 사용하는 것이 아니라 사용자 자신의 이미지를 사용하기 때문에 레지스트리 시크릿 도 설정해야 합니다. -
앱에서 제공하는 REST API를 호출하여 데이터베이스 스키마를 (재)생성하고 몇 가지 샘플 레코드를 삽입하여 배치를 테스트합니다.
curl -X 'POST' "$APP_URL/database/recreate" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
위의 요청은 확인이 누락되었다는 오류 메시지를 리턴해야 합니다. 이제 조회 매개변수를 사용하여 다시 시도하십시오.
curl -X 'POST' "$APP_URL/database/recreate?confirmation=True" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
요청은 성공해야 하며 데이터베이스가 재작성되었음을 표시합니다. 다른 테스트에 대한 시간:
curl -X 'GET' "$APP_URL/events" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
-
향후 단계에서 필요한 프로젝트 ID를 기록해 두십시오.
ibmcloud ce app get -n slackbot-backend --output json | jq -r .metadata.namespace
어시스턴트 작성
이 튜토리얼의 이 부분에서는 watsonx Assistant 서비스로 작업할 것입니다. 먼저 새 어시스턴트를 작성합니다. 그런 다음 사용자 정의 확장을 작성하고 이를 어시스턴트에 추가합니다. 그런 다음, 웹 미리보기를 사용하여 조치를 작성하고 테스트합니다. 마지막으로 챗봇을 Slack과 통합하고 더 많은 테스트를 수행합니다.
-
IBM Cloud 리소스 목록에서 서비스의 개요를 여십시오. AI/ Machine Learning 섹션에서 watsonx Assistant 서비스의 인스턴스를 찾으십시오. 서비스 세부사항을 열려면 해당 항목을 클릭하십시오.
-
Watson Assistant 실행을 클릭하여 watsonx Assistant 도구로 이동하십시오.
-
시작 대화 상자에서 슬랙봇을 어시스턴트 이름으로 사용하여 새 어시스턴트를 만든 다음 다음을 클릭하여 개인화를 시작합니다.
-
배포에 대한 첫 번째 질문은 웹을 선택합니다.
-
다른 질문은 해당 역할에 대한 답변 또는 기타/현재 확실하지 않음으로 선택하세요.
-
원하는 경우 다음을 클릭하여 채팅 UI를 사용자 지정할 수 있습니다.
-
다음 을 클릭하고 작성을 클릭하여 완료하십시오.
새 페이지에는 watsonx Assistant을(를) 처음 사용하는 경우 완료할 수 있는 안내된 둘러보기가 포함되어 있습니다.
사용자 정의 확장 추가 및 구성
다음으로 watsonx Assistant 및 새로 생성된 어시스턴트에 사용자 정의 확장을 추가하고 구성합니다.
- 왼쪽 하단에 있는 대시보드에서 통합을 클릭한 다음 확장의 사용자 정의 확장 빌드를 클릭하십시오.
- 다단계 대화 상자에서 다음을 클릭한 다음 확장 이름으로 이벤트를 입력하고 확장 설명으로 이벤트 데이터베이스용 API를 입력합니다. Next를 클릭하십시오.
- 로컬 파일 slackbot-openapi-spec.json을 선택하여 업로드한 후 다음을 클릭하십시오.
- 마지막 단계에서는 포함된 서버 및 조작으로 확장을 검토할 수 있습니다. 완료되면 마침을 클릭합니다.
- 통합 페이지로 돌아가서 확장 섹션의 새 이벤트 타일을 기록하십시오. 어시스턴트의 확장을 구성하려면 해당 타일에서 추가를 클릭하십시오.
- 새 대화 상자는 간단한 개요로 시작합니다. 실제 구성을 보려면 다음을 클릭하십시오. 인증 유형 선택 드롭 다운에서 API 키 인증을 선택하고 선택한 API 키 (MY_SECRET 대체)를 입력하십시오.
- 서버 변수에 사용자의 배치 지역, appname으로 slackbot-backend, 앱의 projectid로 Code Engine을(를) 사용하십시오. 그 후 생성된 URL은 Code Engine 앱의 URL과 일치해야 합니다. 완료되면 다음을 클릭하여 검토 페이지로 이동한 후 완료 및 닫기를 클릭하여 통합 페이지로 돌아가십시오.
첫 번째 조치 작성
먼저 이름으로 식별되는 단일 이벤트에 대한 정보를 검색하는 조치를 작성합니다.
-
왼쪽 상단에서 작업을 클릭하고 시작 페이지에서 작업 만들기를 클릭합니다.
-
처음부터 시작 타일을 클릭합니다.
-
새 조치 대화 상자에서 이벤트 세부사항 표시를 예제로 입력하고 저장을 클릭하십시오.
-
다음 화면은 단계 1이 열려 있는 조치의 단계 편집기를 표시합니다. 어시스턴트 입력에서 **이벤트 이름이 무엇입니까?**를 입력하십시오. 그런 다음 고객 응답 정의에 대해 옵션으로 자유 텍스트를 선택하십시오. 그리고 나서를 다음 단계로 계속으로 두십시오.
-
왼쪽 아래에 있는 새로운 단계를 클릭하여 단계 2를 추가하십시오. 첫 번째 파트 (어시스턴트 입력, 고객 응답 정의)를 그대로 두고 그리고 나서 아래에서 확장 사용을 선택하십시오. 드롭 다운에서 이벤트 확장 및 해당 이름별 이벤트 레코드 조작을 선택하십시오. 그런 다음 매개변수에 가능한 입력이 표시됩니다. 드롭 다운을 사용하여 short_name 에 대해 **조치 단계 변수 > 1값으로 지정하십시오. 이벤트 이름은 무엇인가요 이전 단계의 고객 입력을 참조합니다. 적용을 클릭하여 이 단계를 완료합니다.
-
새로운 단계를 추가하십시오. 상단에서 선택을 변경하여 3단계가 조건으로 수행되도록 합니다. 조건 및 if에서 2 성공적으로 실행을 선택하십시오. 이는 2단계에서 확장을 사용한 결과를 의미합니다.
-
어시스턴트 입력에서 배치된 앱에 대한 API 호출의 출력 필드를 참조하여 이벤트 세부사항으로 응답을 작성할 수 있습니다. 다음 이벤트 세부사항이 있음: 및
Enter
키를 사용하여 다음 행으로 이동합니다. 편집기가 마크다운 형식을 지원합니다.. 따라서-
키를 사용하여 글머리 기호 목록을 작성하십시오. **이름:**으로 목록 항목을 추가한 후 변수 삽입 아이콘을 클릭하십시오. 드롭다운에서 2 body.shortname을 선택하십시오.Enter
키를 다시 사용하여 목록 항목이 있는 새 행으로 이동합니다. 위치 추가: 변수 드롭다운에서 2 body.location이 있습니다. 시작, 종료 및 연락처에 대해 반복하십시오. 완료되면 그리고 나서를 조치 종료로 설정하십시오. -
확장에서 오류를 처리하려면 조건이 있는 다른 단계를 작성하십시오. 이제 단계가 거짓인 2 실행 성공에 반응하도록 합니다. 어시스턴트가 죄송합니다. 문제가 발생했습니다라고 말한 다음 작업을 다시 종료합니다.
단순함을 위해 모든 오류 및 빈 결과와 같은 조건이 처리되지는 않습니다.
-
오른쪽 상단에 있는 저장 아이콘을 클릭한 후 옆에 있는 X 아이콘을 클릭하여 단계 편집기를 닫으십시오.
-
오른쪽 맨 아래에서 미리보기 를 선택하여 대화 상자를 테스트하십시오.
-
대화에서 show me event details 를 입력하고 제출하십시오. 봇이 이벤트 이름이 무엇인가요라고 응답해야 합니다. 이제 Think 를 입력하고 제출하십시오. 백엔드 앱은 와일드카드 검색을 사용하므로 Think 2022라는 이름의 샘플 이벤트를 찾아 세부 정보를 반환해야 합니다(아래 화면 캡처 참조).

검사 를 클릭하여 사용자 정의 확장을 활용하는 방법에 대한 세부사항을 볼 수 있습니다. 입력 및 출력 변수와 확장의 API 함수가 호출되는 방법을 확인할 수 있습니다.
데이터를 수집하고 새 레코드를 삽입하는 조치
레코드 검색과 유사하게 이벤트에 대한 입력을 수집하고 사용자 정의 확장을 통해 해당 데이터를 추가할 수 있습니다.
-
조치 및 사용자가 작성으로 전환하십시오. 새 조치를 클릭하십시오.
-
처음부터 시작 타일을 클릭합니다.
-
새 조치 대화 상자에서 add new event 및 Save 를 입력하십시오.
-
어시스턴트에게 이벤트 이름을 어떻게 지정하시겠습니까? 를 사용하세요. 고객이 다시 무료 문자로 응답합니다.
-
새로운 단계를 추가하고 어시스턴트 입력에 **행사는 어디에서 개최되나요?**를 입력하십시오. 고객은 자유 텍스트로 응답할 수 있습니다.
-
다른 단계를 추가하고 이벤트 시작 시기를 묻는 질문 대신 고객 응답 정의에 날짜를 사용하세요.
-
동일하게 반복하되 이벤트가 언제 종료되나요?
-
마지막으로 새 단계에서 이벤트의 URL(웹 주소)이 무엇인가요? 라고 질문하고 고객이 자유 텍스트로 응답하도록 합니다.
-
이제 입력을 확인하려면 새 단계를 작성하십시오. **이게 맞습니까?**를 사용하고 글머리 기호 목록으로 수집된 데이터를 표시합니다. 이름, 위치, 시작, 종료, 연락처 항목을 추가하고 데이터의 입력 단계와 관련된 작업 변수를 사용합니다(아래 화면 캡처 참조). 고객 응답 유형으로 확인을 사용하십시오.
확인 단계 -
이전 확인이 아니오인 조건으로 새 단계를 추가합니다. 어시스턴트는 좋습니다. 시작합니다라고 말할 수 있습니다. 그리고 나서를 **이전 단계를 다시 묻습니다.**로 설정하고 이전 단계를 모두 선택하십시오.
-
8단계여야 하는 새 단계에서 확인 예에 응답합니다. 그리고 나서에서 확장 사용을 선택하십시오. 조작으로 새 이벤트 레코드 삽입을 사용하여 이벤트 확장을 구성하십시오. 매개 변수를 단계의 작업 변수에 일치시킵니다(예: 짧은 이름을 ). 이벤트의 이름을 어떻게 지정하시겠습니까?
-
조건 8 성공적으로 실행됨이 참인 새 단계를 만듭니다. 어시스턴트가 **ID 변수가 있는 새 레코드가 작성되었습니다.**라고 합시다. VARIABLE에 대해 **이벤트(8단계)**에서 8 body.eid를 선택하십시오. 그리고 나서 아래에서 조치를 종료하십시오.
-
8 실행 성공 조건이 거짓인 새 단계를 만듭니다. 어시스턴트가 말할 새 이벤트 레코드를 만드는 데 문제가 있는 것 같습니다와 같은 것을 사용하고 그리고 나서 작업을 종료합니다. 오른쪽 상단에 있는 아이콘을 사용하여 조치를 저장하고 닫으십시오.
-
작업을 저장한 다음 왼쪽의 미리 보기를 클릭하고 웹챗을 사용하여 새 작업을 테스트합니다. add new event 를 입력하고 제출하십시오. 봇에서 메시지를 표시하면 이름으로 내 회의를 입력하고 위치로 홈 오피스를 입력하고 시작 및 종료 날짜를 선택하고 http://localhost를 URL로 사용합니다. 그런 다음 데이터가 올바른지 확인하십시오.
챗봇을 작성할 때 챗봇 공개를 원할 수 있습니다. 이는 실제 고객과 상호작용하는 챗봇에 영향을 주지 않고 변경 사항을 롤백하고 개발을 계속할 수 있는 제어된 버전의 릴리스입니다.
Slack과 통합
이제, 여러분은 챗봇을 Slack과 통합하게 될 것입니다.
- 왼쪽 아래에서 통합을 클릭하십시오.
- 통합 개요에서 채널 섹션에서 Slack을 찾고 추가를 클릭하십시오.
- 단계별 지시사항에 따라 챗봇의 초안 환경을 Slack와 통합하십시오. 자세한 정보는 Slack과 통합 주제를 참조하십시오.
- 완료되면 Slack 작업공간을 여십시오. 봇과 직접 대화를 시작하고 이벤트 세부사항을 표시라고 말합니다. 그런 다음, 위와 유사하게 이벤트 이름에 대한 프롬프트가 표시되면 Think로 응답하십시오.

자원 제거
이 자습서의 리소스를 정리하려면 IBM Cloud 리소스 목록으로 이동하십시오. watsonx Assistant 및 IBM Db2 SaaS의 서비스 인스턴스를 찾아 삭제하십시오. 마찬가지로, Code Engine 프로젝트를 찾아서 삭제하십시오.
리소스에 따라 즉시 삭제되지 않고 보유될 수 있습니다(기본 7일 동안). 리소스를 영구적으로 삭제하여 재확보하거나 보유 기간 내에 리소스를 복원할 수 있습니다. 리소스 재확보 사용 방법은 이 문서를 참조하십시오.
관련 컨텐츠
다음은 이 튜토리얼에서 다루는 주제에 대한 추가 리소스입니다.