Chatbot(Bot)은 Slack과 같은 실용적인 대화형 채팅 서비스입니다. 이전에 챗봇을 구축한 적이 없다면 이 문서에서는 Python 및 Slack API를 사용하여 첫 번째 챗봇을 구축하는 방법에 대한 간단한 소개 가이드를 제공합니다.
개발 환경을 설정하고 Slack API 챗봇 토큰을 획득한 후 Pyhon을 사용하여 간단한 챗봇을 개발합니다.
필요한 도구
"StarterBot"이라고 부르는 챗봇에는 Python과 Slack API가 필요합니다. Python 코드를 실행하려면 다음이 필요합니다.
Python 2 또는 Python 3
Python 애플리케이션 종속성을 처리하기 위한 pip 및 virtualenv
API 계정에 액세스할 수 있는 무료 Slack 또는 Slack 개발자 행아웃 팀에 가입할 수 있습니다.
Slack 팀에서 구축한 공식 Python Slack 클라이언트 코드 베이스
Slack API 테스트 토큰
Slack API 문서는 매우 유용합니다.
이 튜토리얼의 모든 코드는 slack-starterbot 공개 라이브러리에 있으며 MIT 라이선스에 따라 오픈 소스로 제공됩니다.
환경 설정
이제 프로젝트에 필요한 도구가 무엇인지 알았으므로 개발 환경을 설정해 보겠습니다. 먼저 터미널(또는 Windows의 경우 명령 프롬프트)로 이동하여 이 프로젝트를 저장할 디렉터리로 변경합니다. 해당 디렉터리에서 새로운 virtualenv를 생성하여 애플리케이션 종속성을 다른 Python 프로젝트로부터 격리합니다.
virtualenv 활성화:
프롬프트는 이제 스크린샷과 같아야 합니다.
활성화된 starterbot virtualenv에 대한 명령 프롬프트 이 공식 Slack 클라이언트 API 도움말 라이브러리는 Build on Slack에서 제공되며 다음과 같이 보낼 수 있습니다. Slack 채널을 통해 메시지를 수신합니다. 다음 pip 명령을 통해 slackclient 라이브러리를 설치하십시오.
pip 명령이 완료되면 이와 유사한 출력이 표시되고 프롬프트로 돌아갑니다.
이미 활성화된 virtualenv에서 pip를 사용하여 slackclient를 설치한 출력 또한 챗봇이 이를 사용하여 Slack API에 연결할 수 있도록 Slack 프로젝트에 대한 액세스 토큰을 가져와야 합니다.
Slack 실시간 메시징(RTM) API
Slack을 사용하면 프로그램이 웹 API를 통해 메시징 채널에 액세스할 수 있습니다. 이 Slack 웹 API 페이지로 이동하여 자신만의 Slack 프로젝트를 등록하고 구축하세요. 관리 권한이 있는 기존 계정에 로그인할 수도 있습니다.
Web API 페이지 우측 상단의 로그인 버튼을 눌러 로그인을 하시면 챗봇 사용자 페이지로 이동하게 됩니다.
사용자 정의 Chatbot 사용자 페이지 챗봇 이름을 "starterbot"으로 지정하고 "봇 통합 추가" 버튼을 클릭하세요.
봇 통합을 추가하고 이름을 "starterbot"으로 지정합니다. 페이지가 다시 로드되고 새로 생성된 액세스 토큰이 표시됩니다. 로고를 원하는 디자인으로 변경할 수도 있습니다. 예를 들어 저는 "풀 스택 Python" 플래그를 지정했습니다.
새 Slack 챗봇에 대한 액세스 토큰을 복사하여 붙여넣으세요. 페이지 하단의 "통합 저장" 버튼을 클릭하세요. 이제 챗봇이 Slack API에 연결할 준비가 되었습니다.
Python 개발자들 사이의 일반적인 관행은 비밀 토큰을 환경 변수로 내보내는 것입니다. 출력 Slack 토큰의 이름은 SLACK_BOT_TOKEN입니다.
자, 이제 이 Slack API를 챗봇으로 사용할 수 있는 권한이 부여되었습니다.
챗봇을 구축하려면 챗봇의 ID라는 정보가 하나 더 필요합니다. 다음으로 Slack API에서 해당 ID를 가져오는 짧은 스크립트를 작성하겠습니다.
챗봇 ID 가져오기
마침내 Python 코드를 작성할 시간입니다. StarterBot의 ID를 가져오기 위한 간단한 Python 스크립트를 작성해 보겠습니다. 이 ID는 Slack 프로젝트에 따라 다릅니다.
Slack RTM에서 StarterBot으로 보낸 메시지를 구문 분석할 때 애플리케이션을 인증하려면 이 ID가 필요합니다. 또한 스크립트는 SLACK_BOT_TOKEN 환경 변수가 올바르게 설정되었는지 여부도 테스트합니다.
printbotid.py라는 새 파일을 만들고 다음 코드를 입력합니다.
코드는 SlackClient를 가져오고 우리가 설정한 환경 변수 SLACK_BOT_TOKEN을 사용하여 이를 인스턴스화합니다. Python 명령을 통해 스크립트가 실행되면 Slack API에 액세스하여 모든 Slack 사용자를 나열하고 "satrterbot"이라는 이름과 일치하는 ID를 얻습니다.
챗봇의 ID를 얻으려면 이 스크립트를 한 번만 실행하면 됩니다.
실행되어 챗봇의 ID를 제공하면 스크립트는 간단한 한 줄 출력을 인쇄합니다.
Slack 프로젝트에서 Slack 챗봇의 ID를 인쇄하려면 Python 스크립트를 사용하세요. 이 스크립트로 인쇄된 고유 ID를 복사하세요. 그리고 해당 ID를 환경 변수 BOT_ID로 출력합니다.
이 스크립트는 한 번만 실행하면 챗봇의 ID를 얻을 수 있습니다. 이제 StarterBot을 실행하는 Python 애플리케이션에서 이 ID를 사용할 수 있습니다.
StarterBot 코딩
이제 StarterBot을 코딩하는 데 필요한 모든 것이 준비되었습니다. starterbot.py라는 새 파일을 만들고 다음 코드를 포함합니다.
os 및 SlackClient 가져오기는 이미 theprintbotid.py에서 사용했기 때문에 우리에게 친숙해 보입니다.
가져온 종속성 패키지를 사용하여 환경 변수 값을 얻고 Slack 클라이언트를 인스턴스화할 수 있습니다.
이 코드는 우리가 내보낸 환경 변수 SLACK_BOT_TOKEN을 통해 SlackClient` 클라이언트를 인스턴스화합니다.
Slack 클라이언트는 Slack RTM API WebSocket에 연결한 다음 Firehose에서 메시지를 구문 분석하는 동안 계속 반복됩니다. StarterBot으로 전송된 메시지가 있는 경우, handler_command라는 함수가 수행할 작업을 결정합니다.
다음으로 Slack의 출력 및 프로세스 명령을 구문 분석하는 두 가지 기능을 추가합니다.
parse_slack_output 함수는 Slack의 메시지를 수락하고 해당 메시지가 StarterBot으로 전송되었는지 확인합니다. 메시지는 챗봇 ID에 대한 직접적인 명령으로 시작된 다음 처리를 위해 코드로 전달됩니다. 현재는 사용자에게 더 많은 Python 코드를 작성하라고 알리는 메시지를 Slack 파이프라인을 통해 게시하기만 하면 됩니다.
전체 프로그램을 합쳤을 때의 모습입니다(GitHub에서도 파일을 볼 수 있습니다):
이제 코드가 있으므로 Python starterbot.py를 통해 StarterBot 코드를 실행할 수 있습니다.
StarterBot이 실행을 시작하고 API의 출력 채널에 연결되면 Slack에서 새 채널을 만들고 StarterBot을 초대하거나 StarterBot을 기존 채널에 초대합니다.
Slack 인터페이스에서 새 채널을 만들고 StarterBot을 초대하세요. 이제 채널의 StarterBot에 명령을 보내세요.
Slack 채널의 StarterBot에 명령 보내기 챗봇의 응답에 문제가 발생하면 변경해야 할 수도 있습니다. 이 튜토리얼에서 위에서 설명한 대로 AT_BOT = ":" 줄에는 "@starter"(자신의 챗봇에 지정한 이름) 뒤에 콜론이 필요합니다. 제거: AT_BOT 문자열 끝에서. Slack에서는 @사람 이름 뒤에 콜론을 요구하는 것 같은데, 이는 다소 어색해 보입니다.
End
자, 이제 간단한 챗봇이 생겼고, 코드의 여러 위치에 만들고 싶은 기능을 추가할 수 있습니다.
Slack RTM API와 Python을 사용하여 많은 일을 할 수 있습니다. 다음 기사를 통해 배울 수 있는 다른 내용을 확인하세요.
영구 관계형 데이터베이스 또는 PostgreSQL, MySQL 또는 SQLite와 같은 NoSQL 백엔드를 연결하여 사용자 데이터 저장 및 검색
챗봇과 다른 상호 작용 채널 추가 , 문자 메시지 또는 전화 통화
GitHub, Twilio 또는 api.ai
위 내용은 Python+Slack API를 사용하여 챗봇을 구현하는 방법에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!