✨Ai 프로젝트 만들기

4. OpenAI 를 활용하여 Aice 자격증 챗봇 만들기 - 대화 하기(맨션을 통해)

@ENFJ 2025. 6. 23. 22:23

본격적 대화 하기(맨션을 통해)

이 전 글에 이어서 

 

이제 안녕이 아니라 @맨션 하여 메시지를 보냈을때 답을 하는 걸 만들어 보려고 합니다.

 

aice 자격증 챗봇을 만들기 위해서는 안녕만 하면 안되니까요 ㅎ!

 

아래 이벤트 함수를 추가합니다.

# Listens to app_mention events
# 이 이벤트는 봇이 멘션되었을 때 발생
# 사용자가 봇을 멘션하면 이 함수가 실행되어, 봇이 응답을 생성하고 채널에 메시지를 보내는 역할을 함
@app.event("app_mention")
def aice_player(event, say):

    breakpoint()  # 디버깅을 위한 중단점 설정

그리고 breakpoint() 로 일단 디버깅을 해볼거에요.

 

이제 디버깅 터미널에다가 (pdb) event 를 입력하여  이벤트가 뭔지 알아봅니다.

event

 

지난 글에서도 적었지만, pp 를 치면 pretty print 라고 더 보기 좋게 딕셔너리로 나옵니다.

 

pp event #pretty print event

 

 

 

이전 글에서 봤던 메시지 디버깅 와 다른점이 보이는데,

parents_user_id ! 이게 스레드에 답글을 다는 형태라서, 

대표인 내가 적은 글이 parents_user 가 되는것입니다.

그리고 text : <@U091... > 은 챗봇(Secretary) 의 ID 라는것을 알 수 있습니다.

 


app.py  파일에 맨션 추가 함수 코드

# Listens to app_mention events
# 이 이벤트는 봇이 멘션되었을 때 발생
# 사용자가 봇을 멘션하면 이 함수가 실행되어, 봇이 응답을 생성하고 채널에 메시지를 보내는 역할을 함
@app.event("app_mention")
def aice_player(event, say):
    thread_ts = event["thread_ts"] or event["ts"] # 스레드 메시지의 경우, thread_ts가 없으면 ts를 사용
    text = event["text"]
    response = aice_chain(text) # ✅ GPT 체인 실행
    say(text=response, thread_ts=thread_ts)# ✅ 응답 전송

결과

이전에 안녕 전용 이벤트 함수를 통하여 

이렇게 답을 받았고,

이제 맨션을 통하여 안녕 뿐만 아니라 메시지를 통하여 대화가 가능하게 만들어 보았습니다.

 

aice 자격증 난이도 basic 으로 문제 내달라고 하니까 아래처럼 연습문제를 내주는걸 확인 할 수 있습니다. 굿!