Webex ChatGPT 채팅봇 만들기(n8n AI Agent 활용하기)
Webex ChatGPT 채팅봇 만들기 실습 해본 내용을 기록해보고자 . . 업무 중 사용하면 편리할 것같다.
1. 프로세스 설명 및 준비
해당 채팅봇은 n8n 이라는 워크플로우 자동화 도구를 통해 만들어 볼 수 있다.
📌n8n 이란?
n8n은 워크플로우 자동화 도구로, 쉽게 말하면, 다양한 앱과 서비스들을 연결해서 자동으로 작업을 처리해주는 플랫폼이라고 보면 된다.
사용 예시
- 새로 들어온 Gmail 메일을 확인
- 특정 조건일 경우 Google Sheets에 자동 기록 특정 API 호출을 주기적으로 해서 결과를 저장
- 변동 사항을 Slack으로 전송 워드프레스에 새 글이 올라오면 SNS에 자동으로 공유
아래와 같은 프로세스 구조를 통해 만들어볼 수 있다!
1.1 준비물
아래 두개면 끝이다.
- Webex 계정
- n8n 계정
- ChatGPT API 키(유료버전 사용 필요)
2. 작업 시작
2.1 Webex 토큰 값 세팅하기
1) Bot 만들기
- 아래 사이트에 접근해서 로그인
https://developer.webex.com/my-apps
로그인 - Webex
Webex에 오신 것을 환영합니다.
idbroker-eu.webex.com
- My Apps 에서 Create a New APP 을 눌러준다
- Create a Bot 클릭
- 적당한 내용을 넣어주고 아래 Create Bot 클릭(봇이름은 나중에 채팅창에서 보여지게 됨)
- 봇을 만들면 토큰값을 주는데, 이 값을 복사해서 저장해두자.
2) Integration 만들기 !
- 아까 그 페이지로 돌아가서 Create an Integration 클릭
📌 Integration 이란 ?
다른 앱이 Webex 기능을 쓸 수 있도록 권한을 등록해주는 연결 앱이다. 필요한 권한들을 등록해놓고 그에 대한 인증 ID/PW를 발급 받아서 다른 앱에 등록해서 연동하는 방식으로 사용된다.
- 적당한 내용을 적어주고 Redirect URL 에는 아래 URL을 넣어준다.
Redirect URL : https://oauth.n8n.cloud/oauth2/callback
- 여기 Scopes에서는 아래 목록에 있는 권한들을 체크해준 후, 스크롤을 눌러서 Add Integration 버튼을 눌러준다
## 체크 필요한 권한 ##
spark:rooms_read
spark:messages_write
spark:messages_read
spark:memberships_read
spark:memberships_write
meeting:recordings_write
meeting:recordings_read
meeting:preferences_read
meeting:schedules_write
meeting:schedules_read
3) RoomID 가져오기
- Webex프로그램 켜서 스페이스 만들기. 이름은 상관없다
- 봇 페이지에서 Bot username을 스페이스에 초대해준다. 이거 초대안해서 계속 나와의 대화하듯이 대화했다..
- 아래 URL로 접속
https://developer.webex.com/messaging/docs/api/v1/rooms/list-rooms
List Rooms
developer.webex.com
- 오른쪽 상단 내 프로필 눌러서 Bearer 값 복사
- Headers의 2번째 파라미터 값에 값을 붙여넣고 RUN 클릭
예시 : Bearer Y****************
- 아까 만들었던 룸의 ID 값을 가져올 수 있다. 복사해두자.
2.2 n8n 으로 프로세스 만들기
아래와 같은 프로세스를 만드는게 목표다 스따뚜
- 일단 n8n에 접속해서 회원가입을 해주자.
n8n.io - a powerful workflow automation tool
n8n is a free and source-available workflow automation tool
n8n.io
1) Webex Trigger 만들기
- Webex by Cisco > Triggers > On created 를 클릭
- Credintial to connected with 란에서 수정 버튼 클릭
- 다시 Webex App 으로 들어가서 아까 만든 Integration 페이지에서 Client ID와 Secret 값을 복사
- Client ID, Secret 값을 넣고 버튼 눌러서 계정 인증
- 인증 성공하면 이렇게 된다
- 아까 위에서 복사해둔 Room ID를 여기다가 넣어준다.
- 짜쟌
2) Code 만들기
- code 를 검색해서 추가해준다
- 코드에는 사람인지 아닌지 확인하고 대답하는 코드를 넣어준다. 인간체크로직이 없으면 혼자 말하고 혼자 대답하고를 평생 반복하는 바보가 되기 때문에 넣어주어야 한다 ...
return [
{
json: {
...$json,
isHuman: !$json.data.personEmail.endsWith('@webex.bot')
}
}
];
- 짜쟌 코드까지만들었다
3) if 추가
- if 를 추가해준다. 인간인지 아닌지 위에서 확인했으니, 그 결과에 따른 흐름을 작성해야한다.
- 이전에 확인한 값이 참일때, 즉 질문한 사람이 인간일때에 AI의 대답을 받아오기 위해서 is true 를 선택하고 표현식을 직접 넣어준다.
- 짜쟌. 여기서 true 일 때 AI의 대답을 가져와보자.
4) AI 연결하기
- 값이 참일 때, 즉 인간일 때 AI를 연결하기 위해 true 에 연결된 +를 눌러서 AI Agent를 연결해준다.
- 여기서 진짜 한참 헤맸었는데,, Source for Prompt를 Define below로 변경해서 아래와 같이 설정해주자.
{{ $node["Webex by Cisco"].json["text"] }}
- 짜쟌 이제 GPT 붙이쟈
4) GPT 붙이기
- AI Agent 아래에 OpenAI Chat Model 추가
- Create new Credential 로 ChatGPT의 api 값을 인증
- 모델은 gpt-4o-mini로 설정해주었다
- 다왔다 ..!!!
5) http 응답 추가
- 이제 답장해주는 거만 추가해주면 된다.
- HTTP Request를 추가해주고, 헤더 값을 설정해주기. Authorization 값은 아래와 같이 webex Bot 에서 가져온다.
- Body 값도 설정해준다
{{ $('Webex by Cisco').item.json.roomId }} // roomId
{{ $json.output }} // text
- 세팅이 끝났다!
2.3 구동 시켜보기
- 아래에 Test workflow 를 눌러서 구동시켜보자
- 질문 했을 때, 블리츠크랭크의 대답이 채팅창에 날아오는 것을 확인할 수 있다....
일단 지금 만든건 단건 단위로 답장하고 있고, 실제로 사용하려면 서버를 띄워놓고 사용해야되는듯하다. 지금은 대화가 메모리되지도 않아서 .. 대화의 연속성은 기대하기 힘들다. 다만 n8n으로 이렇게 연결할 수 있는걸 이해했다는거에 .. 의의를...
추후에 n8n 로컬 호스트 열어서무료로 구동하기 해보기!