Slack에서 ChatGPT와 함께하는 AI 챗봇 만들기 (4)

반응형

대답하는 슬랫 봇 만들기

이번에는 슬랙에서 말을 걸면 응답하는 봇을 만들어보자. Bolt For Python API 문서를 참고하여 개발을 진행했다.

메시지 이벤트 구독하기

Slack Apps Settings 페이지에서 Event Subscriptions로 이동한다. 그리고 스크롤을 내려 Subscribe to bot events 섹션을 찾는다. [Add Bot User Event] 버튼을 눌러 message.im 이벤트를 추가한다. 이제 앱의 메시지 채널에서 사용자가 전송한 메시지를 구독할 수 있게 되었다.

메시지에 응답하기

API 문서에서 제공하는 샘플 코드로 테스트 해보자. main.py 에 다음 코드를 추가한다.

# Listens for messages containing "knock knock" and responds with an italicized "who's there?"
@app.message("knock knock")
def ask_who(message, say):
    say("_Who's there?_")

그리고 앱을 실행한다.

ngrok 실행하기

ngrok가 실행 중이라면 이 단계는 넘겨도 된다. 코드를 수정할 때마다 ngrok를 다시 실행할 필요는 없다. 하지만 ngrok를 재실행하면 ngrok URL이 변경되므로, Event Subscriptions Request URL을 업데이트 해야줘야 한다.

슬랙에서 봇과 대화하기

이제 내가 "knock knock"이라고 대화하면 봇이 "Who’s there?"라고 응답한다.

이제 한글로 대화 해보자. 아래 코드를 추가한다.

@app.message("안녕")  
def say_hello(message, say):  
    print(message)  
    user = message['user']  
    say(f"<@{user}>님 안녕하세요.")

"안녕"이라고 대화하면 봇이 유저 맨션과 함께 응답한다.

message 이벤트가 전달하는 message 객체에는 다음과 같은 데이터가 포함되어 있다.

{
	'client_msg_id': '532389ef-3295-27c8-572d-225fa9ec80f9', 
	'type': 'message', 
	'text': '안녕', 
	'user': 'UBABLRHT5', 
	'ts': '1676691645.451029', 
	'blocks': [{
	   'type': 'rich_text', 
	   'block_id': 'ZLp', 
	   'elements': [{
		  'type': 'rich_text_section', 
		  'elements': [{'type': 'text', 'text': '안녕'}]
		}]
	}], 
	'team': 'T4HCDFMZX', 
	'channel': 'D14ANCPBZ39', 
	'event_ts': '1676691645.451029', 
	'channel_type': 'im'
}

메시지 이벤트에 대한 자세한 내용은 Slack API 문서 Event Message을 참고한다.

OpenAI API를 사용하여 대화 봇을 만드는 과정은 다음 글에서 설명하겠다.


or
[카카오페이로 후원하기] [토스페이로 후원하기]

반응형