이전 글에는 카카오톡 api를 통해 메시지 발송하기, 친구 한태 발송하기를 진행하는 데에 에러 사항이 많아 실제 업무에 적용하기 어렵다고 생각했다
카카오톡 메시지 보내기를 RPA에 적용하면 이외 부가적인 내용이 아닌 딱 작업 완료했다는 내용 담당자에게 전달해주는 용도로만 사용을 추천한다
이걸 토대로 AI 인공지능 마냥 메시지를 보내 상대 답변에 대한 답을 받아서 리턴하는 거는 챗봇을 활용하자
본론으로 들어가서 파이썬을 통해서 카카오톡을 컨트롤 할 수 있다는 내용이 있어 찾아본 결과 pyautogui모듈을 통해 카카오톡을 제어 하는 방법들이 설명이 많이 되어있는데 원하는 결과를 보는 게 어려웠다 잘 설명이 되어있지만 지식이 부족해 못한 걸지도 모른다 아무튼 다른 방법이 없나 더 찾아보던 중 win32con모듈을 통해 제어하는 방법이 딱 하나 나와있었다
해당 출처 : https://airfox1.tistory.com/2
소스 진행 과정을 이야기하면 아래와 같다
1. 카카오 채팅 방에 검색 기능으로 받아온 텍스트 값(채팅방 이름) 검색한다
2. 검색 채팅 방을 오픈한다
3. 채팅창에 텍스트를 입력한다
4. 텍스트 입력 후 엔터(보내기)
아래 소스 중 카카오톡 관련 컨트롤하는 부분의 값? Uipath를 통해 값을 얻을 수 있습니다 만약 FindWindow에 대한 값이 변경된다면 Uipath로 확인하시면 됩니다
예시로 원래 아래 소스 내용을 보시면 RichEdit20W였는데 RichEdit50W로 변경된 부분입니다
ex) 사진 참고하시면 됩니다
아래 소스를 파이 참에 붙여 넣어 실행할 때 주의할 점
import를 시켜준다 다만 import를 하다 보면 win32api와 win32gui에서 패키지 설치가 안되고 오류가 발생하게 된다
win32con만 패키지 설치하고 실행하면 문제없이 실행되지만 빨간색으로 오류 표기가 되어있을 것이
import time
import win32con
import win32api
import win32gui
# 카카오톡 대화창 열고 메세지 보내는 부분은 백그라운드로 작업 되는게 아닌점 참고
# 백그라운드에서 작업 되는 부분은 카카오톡 채팅방 검색할때 Edit 부분에서만 적용
# 카톡창 이름, (활성화 상태의 열려있는 창)
kakao_opentalk_name = '채팅방 이름 ex)마개랑 사무자동화 익히기'
text = '채팅창에 보낼 메세지 입력'
# 채팅방에 메시지 전송
def kakao_sendtext(chatroom_name, text):
# 핸들 _ 채팅방
time.sleep(2)
hwndMain = win32gui.FindWindow( None, chatroom_name)
hwndEdit = win32gui.FindWindowEx( hwndMain, None, "RichEdit50W", None) #인용한 블로그에 소스는 RichEdit20W로 되있으나 지금은 값이 변경됬다
# hwndListControl = win32gui.FindWindowEx( hwndMain, None, "EVA_VH_ListControl_Dblclk", None)
time.sleep(2)
win32api.SendMessage(hwndEdit, win32con.WM_SETTEXT, 0, text)
SendReturn(hwndEdit)
# 엔터
def SendReturn(hwnd):
time.sleep(1)
win32api.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
time.sleep(0.01)
win32api.PostMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
# 채팅방 열기
def open_chatroom(chatroom_name):
# # 채팅방 목록 검색하는 Edit (채팅방이 열려있지 않아도 전송 가능하게)
hwndkakao = win32gui.FindWindow(None, "카카오톡")
hwndkakao_edit1 = win32gui.FindWindowEx( hwndkakao, None, "EVA_ChildWindow", None)
hwndkakao_edit2_1 = win32gui.FindWindowEx( hwndkakao_edit1, None, "EVA_Window", None)
hwndkakao_edit2_2 = win32gui.FindWindowEx( hwndkakao_edit1, hwndkakao_edit2_1, "EVA_Window", None)
hwndkakao_edit3 = win32gui.FindWindowEx( hwndkakao_edit2_2, None, "Edit", None)
#by.Sol95
# Edit에 검색 _ 입력되어있는 텍스트가 있어도 덮어쓰기됨
time.sleep(2)
win32api.SendMessage(hwndkakao_edit3, win32con.WM_SETTEXT, 0, chatroom_name)
time.sleep(2) # 안정성 위해 필요
SendReturn(hwndkakao_edit3)
time.sleep(2)
def main():
open_chatroom(kakao_opentalk_name) # 채팅방 열기
kakao_sendtext(kakao_opentalk_name, text) # 메시지 전송
main()
위 소스에서 def는 함수인데 실제 실행은 main()에서 실행이 되며 def main() 함수는 참조하여 open_chatroom과 kakao_sendtext 함수를 불러와 사용한다고 보면 된다
아마 Uipath에서 적용하려면 main(파라미터 값)을 받아서 사용하면 될 거 같다
위 코드를 실행하면 빨간색 영역 부분이 발송된 부분이며 위에 헬로 카카오톡!! 은 저번 api 메시지 보내기 테스트 결과 내용이다
'RPA' 카테고리의 다른 글
파이썬 네이버스포츠뉴스 내용 가져와 엑셀에 입력하기 (0) | 2023.03.01 |
---|---|
파이썬 크롤링 BeautifulSoup 사이트 데이터 추출하기 (0) | 2023.02.09 |
python 카카오톡 그룹방 메세지 보내기 Bat 파일 수행하기 (0) | 2022.12.21 |
RPA 카카오톡 그룹톡방 메세지 가져오기 with python (0) | 2022.12.20 |
카카오톡 API로 메세지 보내기(python) (0) | 2022.12.16 |
댓글