[Notion][Make] Make Datastore + 텔레그램 Inline Keyboard/Callback Query 활용해보기

소개

지난 사례글에 올린 구독채널 관리와 연계해서
Youtube 영상의 링크를 입력하면 요약해주는 단순한 텔레그램 봇을 활용하고 있습니다.

단순 요약만 받기에는 아까워서 이 봇의 활용도를 늘려보고자 했습니다.

텔레그램에 URL을 던지고, 요약문을 받은 다음에

텔레그램에서 아래의 보기를 주면, 그 내용을 실행해보려 했습니다.

(1) 더 자세한 내용 확인하기 (지금은 1000자로 요약 -> 더 자세히 3000자로 요약)

(2) 노션에 저장하기 (일단은 요약문과, 카테고리만 지정)
* 저장한 컨텐츠들 기반으로 블로그 초안 작성하는 시나리오까지 연결해보려 합니다.

(3) 종료하기

진행 방법

1. 커뮤니케이션 채널(Front-end) : 텔레그램

2. 저장DB
2.1. Make Datastore (시나리오 내에서만 임시로 저장. 캐싱?)
2.2 Notion (요약문/카테고리 저장)

  1. Action/명령
    3.1. Make: 전체 시나리오
    3.2. 텔레그램 Callback Query : 1차 메시지 이후 답변을 입력받음

    [ 전체 시나리오 ]

    프로세스의 다른 단계를 보여주는 유량 차트

어려웠던 부분

  1. Router가 달라질 때, 앞 Router에서 실행한 모듈의 결과값 활용하기 (Set Variable / Data Store)
    - 순차적으로 이루어지는 내용임에도 Router로 분기를 치면, 앞 Router에서 실행한 모듈 결과를 받아올 수 없습니다.
    - 이에 해결방법을 고민하다가 푸르공님 시나리오 참조 및 가이드를 받아 Variable(값1개)에 넣거나,
    추가로 Data Store를 통해 테이블로 저장(값 여러개)을 할 수 있음을 알았습니다.
    - 저는 요약문만이 아니라, 채널명, 날짜 등도 함께 저장하고 싶어서 Data Store를 활용했습니다.

    모바일 앱 생성 프로세스를 보여주는 다이어그램

    1.1 1번의 Datastore는 Apify에서 나온 스크립트 전체를 저장합니다.
    1.1.1 Datastore를 신규로 생성합니다. 제가 만들 테이블에 들어갈 내용을 생성할 수 있습니다.

    Azure Data Pipeline 화면의 스크린 샷

    1.1.2 생성한 Table에 들어갈 내용을 지정해줍니다.
    - 여기서 정하는 Key 값을 활용하여 다음 Router에서 불러올 수 있습니다.
    (텔레그램은 Msg ID를 써서 생성될 때마다 저장해도 될 듯 하나, 저는 임시로 쓰고 다음 번에는 덮어쓰기 위해서 0으로 지정했습니다.)

    Azure의 데이터 스토어 스크린 샷


    2번의 Datastore는 GPT에서 처리한 요약문(1000자)를 저장합니다. (과정은 위와 동일. 키값은 1로 지정)

    저장한 화면은 Make에서 이렇게 보입니다.

  1. Telegram에서 Response 받기 (Inline Keyboard/Callback Query)
    - User로부터 더 상세하게 요약을 할지, 노션에 저장을 할지 요청을 받는 과정에서, 메시지를 입력받으면 다시 최초의 Watch 모듈로 돌아와서 다시 요약하는 Router를 타게 됩니다.
    - 이를 하나의 시나리오 안에서 해결하기 위해 Watch 모듈의 값을 Router/필터를 활용해 분기 하였습니다.
    - 필터값 설정을 할 때, 고객의 msg가 고정적으로 들어오면 좋을 것 같았습니다.
    (방법1) [1 자세히,2 저장,3 종료]으로 msg를 추가로 보내고, 숫자만 회신으로 받아서 필터 처리
    (방법2) Callback Query라는 기능이 있으니 활용

    - 방법2를 활용해서 해봤습니다. (방법1은 할줄 아니까? 좀 더 봇스러운 UX도 함께!)
    텔레그램 msg 보내는 모듈에 show advanced setting으로 가시면 아래 화면이 뜹니다.

    - 여기에 보여줄 text와 회신받을 값(1,2,3 등)을 설정합니다.

    웹 페이지의 버튼 스크린 샷

    그러면 이렇게 나옵니다.

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

    그 이후 Flow는 Callback Query의 값을 받아서, Router 의 필터값으로 매칭해서 원하는 Action을 추가하면 됩니다.

결과와 배운 점

  1. 2주만에 Make와 제법 친해진 듯 합니다.
    비개발자로서 초기 세팅이나 에러를 찾아서 수정/변경하는데는 코딩을 물어가며 하는 작업보다 훨씬 수월하네요.
    시나리오 전체 자유도는 낮지만, 제한된 영역에서 빠르게 수정/변경 하기에는 매우 좋습니다.

  2. AI에게 물어보는 방법을 기획/수정 단계에 따라 다르게 해야 할 듯 합니다.
    - 맨 처음은 시나리오 Flow를 어떻게 짜야할지 물어보고
    - 진행과정에서는 어떤 모듈 혹은 기능을 사용함을 전제로 함께 물어보면서 진행하면 좀 더 나은 답을 주는 듯 합니다.
    (텔레그램에 답을 받아서 처리하고 싶은데 어떻게 해야할까? vs
    Router의 필터를 사용해서 ~~게 처리하고 싶어. 혹시 이거 말고 다른 방법이 있을까? 등)

  3. Telegram 등 Response를 계속 이어가는 형태로 구성하기에 위의 시나리오는 한계가 있습니다. (옵션이 늘어나는 만큼 Router가 늘어남.)
    -> chatbot 형태처럼 다양한 응대 기능을 지원하기 위한 방안은 더 고민이 필요할 듯 합니다.

    도움 받은 글

이모카님/푸르공님 사례글 및 지난주 발표글!

2

👉 이 게시글도 읽어보세요