n8n과 MCP로 사내 메신저(Cisco Webex) 팀방에 일정 관리 도우미 챗봇 만들기

소개

저희는 사내 메신저를 Cisco Webex를 사용하고 있는데요.

일정 변동이 잦은 편인데요. 팀 업무 협의방에서 활용할 수 있는 챗봇을 만들고자 했습니다.

진행 방법

전체 워크플로우:

https://n8n-community.vercel.app/workflows/34de249e-6a84-42eb-b838-3f70179408f9/

응용 프로그램 프로세스를 보여주는 흐름도
  1. Webex by Cisco 노드들을 만들기 위해 Webex Developer 홈페이지에서 Integration을 2개 만들었습니다.

    WebEx RM 통합의 스크린 샷
  2. Webex by Cisco Trigger에서 우리 팀방에서 가지고 와야 되는데요.
    List Room에서 가져올 수 있습니다. https://developer.webex.com/docs/api/v1/rooms/list-rooms

  3. 제가 생성한 챗봇이 언급되었을 때 워크플로우가 실행될 수 있도록 person ID를 지정해줬어야 합니다.

그건 BotID를 토대로.. ChatGPT를 열심히 채찍질하면서 PersonID를 얻어내는 방법을 알아냈습니다.
참고 문서:
https://developer.webex.com/docs/bots

  1. 가지고 온 메시지에서 !일정 이 언급되었을 때만 실행될 수 있도록 if 노드를 하나 추가하였습니다.

  2. AI Agent 노드 프롬프트는 다음과 같이 작성하였습니다.

# Goal

너는 'ㅇㅇㅇ' 회사의 'AI전략수립TF'팀의 일정 관리를 도와주는 비서야.

팀 메시지(<messages> xml 태그) 중에서 일정과 관련된 내용이 포함될 경우 일정을 Google Calendar에 조회(get event), 등록(create event), 수정(update event) , 삭제(delete event). Tool을 이용해서 알아서 일정 추가 확인해줘

# Instruction

메시지 (<message> tag)의 내용 중에서 일정과 관련된 내용으로 판단되면 일정과 관련된 일이라고 판단이 되면 다음을 실행해. 4가지 중 하나가 아니라고 판단되면, 일정과 관련된 업무아 아니라는 것을 <output>에 추가해줘. 추가 오류가 있으면 <output>에 메시지 작성해줘. 


action이 완료가 되면 완료된 작업 내용을 <output>에 추가해서 메시지 출력해줘.  
근데 <output> tag는 삭제해주고. 

# Conditions
1. 연도에 대한 것은 {{ $json.created }}를 기준으로 같은 연도로 해줘. 
2. 핵심 업무와 관련된 detail들도 세부적으로 추출하여서 agenda까지 식별해서 등록해야 돼. 
3. output 메시지 앞에 [즁봇 답장] 그리고 로봇 이모지를 하나 추가해줘
4. Create Events를 했을 경우. google calendar 하이퍼링크도 부탁해. Cisco Webex에서 메시지가 확인 가능하도록. 링크 전에 line break 2줄 추가해줘.
5. 일정 조회의 경우, Numbered Listing으로 일정을 보기 좋게 정보와 개요를 작성해줘. 
6. 일정 삭제의 경우, message에서 정확히 어떤 일정을 삭제해야 하는지 확실하지 않을 경우, 해당 날짜의 일정을 나열해줘.
ㅡ

<message>
{{ $json.text }}
</message>

<output>
작업 내용
</output>

여러 번 테스트 결과 다음과 같이 나왔습니다.

결과물 :

한국 문자 메시지의 스크린 샷

결과와 배운 점

1.

첫 n8n 워크플로우라서 시행착오가 많았는데요..

생각보다 쉽지 않았습니다.

개발의 요소와 Webhook과 관련된 것들.. 관련 지식을 많이 공부해야겠다는 생각이 드네요.

Webex 노드의 경우, 한번 워크플로우를 만든 다음에 off --> on을 할 경우 webhook 링크가 중복으로 생성되어 삭제하고 다시 해야 합니다.

Webhook 관련 문제가 발생했을 때, 아예 트리거 노드부터가 안 될 경우가 있습니다.

한번 on 하고 나면 껐다 키는 것을 주의하고.. 만약에 webhook 관련 에러가 뜨면 아래의 도큐멘테이션을 참고하여 중복된 webhook link를 삭제해야 합니다.

USER_TOKEN='$사용자 토큰' 
&& for id in '$Webhooklink 1' '$Webhooklink 2'; do  curl -s -o /dev/null -w "Deleted $id → HTTP %{http_code}\n" -X DELETE -H "Authorization: Bearer $USER_TOKEN" "https://webexapis.com/v1/webhooks/$id"; done

https://developer.webex.com/docs/api/v1/webhooks/list-webhooks

다음에는 여기에다가 오늘의 업무 요약 등의 에이전트를 추가해 볼 예정입니다!

👉 이 게시글도 읽어보세요