안경잡이개발자

728x90
반응형

  슬랙(Slack) 챗봇(Chat Bot)은 사용자가 슬랙 봇에게 말을 걸었을 때 그에 대한 적절한 응답을 수행하는 봇을 의미합니다. 그래서 슬랙 챗봇을 구현하고자 한다면 사용자가 챗봇을 부르는 과정을 이벤트(Event)로 받아들여 슬랙 챗봇이 동작하도록 해야 합니다. 따라서 이전 시간에 이어서 슬랙 챗봇을 구현해보도록 하겠습니다. 가장 먼저 이벤트 구독(Event Subscriptions) 탭에 들어갑니다.


  이후에 [Enable Events]활성화(On)로 설정할 수 있습니다.



  활성화로 설정한 이후에는 다음과 같이 요청 URL을 입력하는 부분이 활성화 됩니다.



  이후에 아래쪽에서 봇 이벤트(Bot Events)로 app_mention을 설정할 수 있습니다. app_mention을 설정하면 해당 슬랙 앱이 멘션(Mention) 되었을 때 이벤트가 발생합니다.



  이벤트가 발생하면 특정한 URL요청(Request)을 보내게 되는 것입니다. 이제 실제로 요청이 들어왔을 때 이를 처리하는 파이썬 챗봇 모듈을 개발해보겠습니다.


# -*- coding: utf-8 -*-

import json

from slacker import Slacker

from flask import Flask, request, make_response


token  = "봇 유저 토큰 값"

slack = Slacker(token)


app = Flask(__name__)


def get_answer():

    return "안녕하세요."


# 이벤트 핸들하는 함수

def event_handler(event_type, slack_event):

    if event_type == "app_mention":

        channel = slack_event["event"]["channel"]

        text = get_answer()

        slack.chat.post_message(channel, text)

        return make_response("앱 멘션 메시지가 보내졌습니다.", 200, )

    message = "[%s] 이벤트 핸들러를 찾을 수 없습니다." % event_type

    return make_response(message, 200, {"X-Slack-No-Retry": 1})


@app.route("/slack", methods=["GET", "POST"])

def hears():

    slack_event = json.loads(request.data)

    if "challenge" in slack_event:

        return make_response(slack_event["challenge"], 200, {"content_type": "application/json"})

    if "event" in slack_event:

        event_type = slack_event["event"]["type"]

        return event_handler(event_type, slack_event)

    return make_response("슬랙 요청에 이벤트가 없습니다.", 404, {"X-Slack-No-Retry": 1})


if __name__ == '__main__':

    app.run('0.0.0.0', port=8080)


  이제 테스트를 위해서 엔그록(Ngrok)을 이용해 공인 URL을 일시적으로 만들어보도록 하겠습니다.




  이제 만들어진 공인 URL을 슬랙 봇요청 URL로 설정할 수 있습니다.



  설정했을 때 Verified라고 메시지가 출력되면 성공입니다. 이제 한 번 챗봇을 불러보도록 합시다.



  초대한 이후에 다시 챗봇을 불러보면 챗봇이 성공적으로 응답합니다.



  Ngrok의 로그를 확인해 보았을 때에도 성공적으로 슬랙 API와 통신한 것을 확인할 수 있습니다.


728x90
반응형

728x90
반응형

  슬랙에서는 자신이 직접 슬랙 봇(Slack Bot)을 개발하여 슬랙 앱(Slack App)으로 이용할 수 있습니다. 더불어 파이썬의 슬래커(Slacker) 라이브러리를 이용하여 자신이 만든 슬랙 봇을 매우 쉽고 효과적으로 활용할 수 있습니다. 기본적으로 슬랙 앱(Slack App)을 만들기 위해서는 슬랙 앱 API 페이지로 이동해야 합니다.


  ▶ 슬랙 앱 API 페이지: https://api.slack.com/apps


  해당 API 페이지에서 하나의 앱(App)을 새롭게 만들 수 있습니다.



  저는 다음과 같이 하나의 슬랙 앱을 만들어보도록 하겠습니다.



  가장 먼저 [Bots] 탭으로 이동하여 봇 유저(Bot User)를 만들어 볼 수 있습니다.





  이후에 [OAuth & Permissions] 탭으로 이동해서 워크스페이스에 앱을 설치(Install)할 수 있습니다. 우리가 만든 슬랙 앱을 실제로 프로젝트 상에서 사용할 수 있는 것입니다.




  결과적으로 [Bot User OAuth Access Token] 값이 나옵니다. 이 토큰 값을 이용해서 우리가 만든 슬랙 봇이 슬랙 워크스페이스에서 말을 하게 하는 등의 다양한 기능을 수행할 수 있습니다.



  저는 해당 슬랙 봇이 말을 할 수 있도록 하기 위해서 범위(Scopes)chat:write:user 권한을 줬습니다.



  이제 슬래커(Slacker) 라이브러리를 이용해서 슬랙 토큰 값을 활용해 특정 채널에 메시지를 전송할 수 있습니다.



from slacker import Slacker


# 슬랙 토큰으로 객체 생성

token = '슬랙 토큰 값'

slack = Slacker(token)


# 메시지 전송 (#채널명, 내용)

slack.chat.post_message('#random', 'Slacker 테스트')


  실제로 소스코드를 구동시켜 보면 다음과 같이 슬랙 봇이 메시지를 전송한 것을 알 수 있습니다.



728x90
반응형

728x90
반응형

  슬랙(Slack)에서는 슬랙 앱(Slack App) 기능을 이용하여 프로젝트를 더욱 효과적으로 관리할 수 있습니다. 이번 시간에는 다른 사람들이 만들어 놓은 슬랙 앱을 간단히 사용해 보며 슬랙 앱을 어떻게 이용할 수 있는지에 대해서 알아보도록 하겠습니다. 기본적으로 슬랙 앱을 관리하고자 한다면 [Manage apps] 탭으로 이동하여 슬랙 앱을 관리할 수 있습니다.



  처음에는 어떠한 앱도 설치가 안 되어 있습니다. [Browse the App Directory]에 들어가서 앱을 찾을 수 있습니다.



  이후에 웹 페이지 환경에서 슬랙 앱을 검색하여 설치를 진행할 수 있습니다. 저는 가장 먼저 지피(Giphy)를 사용해보도록 하겠습니다. 지피는 자동으로 이미지를 검색하여 슬랙 채널에 이미지를 출력해주는 역할을 수행합니다.




  설치 이후에는 설정을 수행할 수 있습니다. 저는 모든 GIF 이미지를 찾아오도록 설정을 진행했습니다.




  설치 이후에는 [Apps] 탭에서 설치된 앱을 확인할 수 있습니다.




  설치된 지피(Giphy)를 사용할 때는 단순히 /giphy {이미지 이름}의 형태로 사용할 수 있습니다.




  이어서 할 일 목록을 관리해주는 투두이스트(Todoist)를 사용해보도록 하겠습니다.



  투두이스트는 관련 사이트에서 설치를 진행해야 사용할 수 있습니다.



  따라서 사용법 글에 있는 링크를 타고 들어가서 연동을 진행하시면 됩니다.




  연동까지 마치고 나면 다음과 같이 /todoist {해야 할 일} 명령어 형태로 투두이스트를 사용할 수 있습니다.



  명령어 실행 결과 다음과 같이 해야 할 일 항목이 작성된 것을 확인할 수 있습니다.




728x90
반응형