Python + chatwork + google extension = 쉽게 재미있는 채팅 BOT를 만드는 방법
전제
다음 준비할 수 있는 것
스크립트 구현
파이썬에서 200 OK를 반환하는 서버 만들기
webhookchatwork.pyimport http.server
import socketserver
import json
import requests
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_POST(self):
self.send_response(200)
self.end_headers()
content_leng = int(self.headers.get("content-length"))
req_body = self.rfile.read(content_leng).decode("utf-8")
json_object = json.loads(req_body)
print(json_object)
# ローカルの環境に3000ポートを設定
with socketserver.TCPServer(("", 3000), MyHandler) as httpd:
httpd.serve_forever()
Ngrok에서 로컬 호스트를 인터넷에 게시
import http.server
import socketserver
import json
import requests
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_POST(self):
self.send_response(200)
self.end_headers()
content_leng = int(self.headers.get("content-length"))
req_body = self.rfile.read(content_leng).decode("utf-8")
json_object = json.loads(req_body)
print(json_object)
# ローカルの環境に3000ポートを設定
with socketserver.TCPServer(("", 3000), MyHandler) as httpd:
httpd.serve_forever()
htps : / / 응 g로 k. 코m/
webhookchatwork.py
에 3000 포트를 사용하고 있으므로 아래에 실행 ngrok http 3000
결과:
Chatwork webhook과 Ngrok과 협력
지금까지 로컬 webhookchatwork.py
파일이 인터넷에 게시되었습니다.
채팅 워크에서 게시할 때 webhookchatwork.py
에 받도록 설정해야 합니다.
위의 빨간색 테두리에 ngrok URL 입력
기입 후 Chatwork webhook과 Ngrok에 연동할 수 있다고 생각합니다.
확인:
webhookchatwork.py
실행: python3 webhookchatwork.py
200 OK로 돌아왔다.
ChatBot 스크립트
ChatBot의 처리에는 두 가지가 있습니다.
webhookchatwork.py
APIKEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # ChatworkのAPI tokenから取得
ENDPOINT = 'https://api.chatwork.com/v2'
ROOMID = 'XXXXXXXXX' # 投稿したいルーム
post_message_url = '{}/rooms/{}/messages'.format(ENDPOINT, ROOMID)
headers = { 'X-ChatWorkToken': APIKEY }
def checkAssignee(assigneenum): # 返事する人
if assigneenum ==3987766:
assigneename = 'Aさん'
elif assigneenum ==4388605:
assigneename = 'Bさん '
return assigneename
# # チャットワークに送信- start
def sendtoChatworkRemind(answer,fromaccountid,sendtouser):
headers = { 'X-ChatWorkToken': APIKEY }
params = { 'body': '[To:'+str(fromaccountid)+']'+ sendtouser+ '\n' + str(answer)
}
requests.post(post_message_url,
headers=headers,
params=params)
# チャットワークに送信 - end
webhookchatwork.py
chatbot = ChatBot('EventosChatBot')
trainer = ListTrainer(chatbot)
traningjson = []
print(json_object['webhook_event']['body'].find("[To:2555387]Chat Bot Eventos"))
if "[To:2555387]Chat Bot Eventos" in json_object['webhook_event']['body'] :
fromaccountid = json_object['webhook_event']['from_account_id']
reponse = json_object['webhook_event']['body'].replace("[To:2555387]Chat Bot Eventos\n","")
sendtouser = checkAssignee(fromaccountid)
if "教えさせてください ]:)" in json_object['webhook_event']['body'] :
for item in json_object['webhook_event']['body'].split("\n"):
if "質問 :" in item:
print(item.strip().replace("● 質問 : ",""))
if item.strip().replace("● 質問 : ","") != "":
traningjson.append(item.strip().replace("● 質問 : ",""))
else:
traningjson.append("")
if "回答 :" in item:
print(item.strip().replace("● 回答 : ",""))
if item.strip().replace("● 回答 : ","") != "":
traningjson.append(item.strip().replace("● 回答 : ",""))
else:
traningjson.append()
trainer.train(traningjson)
answer = "教えていただき、ありがとうございます (bow)"
sendtoChatworkRemind(answer,fromaccountid,sendtouser)
else:
answer = chatbot.get_response(reponse)
sendtoChatworkRemind(answer,fromaccountid,sendtouser)
Google extension으로 만들기
누구나 chatbot으로 교육할 수 있도록 Google 확장 프로그램을 만드세요.
content_scropts.js
setTimeout(function(){
$("#__chatworkInputTools_toolbarIcons").prepend('<li class="_showDescription __chatworkInputTools_toolbarIcon" id="teachChatbot" role="button" aria-label="info: Surround selection with [chatbotEV] tag"><span class="btnDanger" style="padding: 3px 4px; font-size: 10px; border-radius: 3px; position: relative; top: -2px;">chatbotEV</span></li>');
$("#teachChatbot").click(function(){
$("#_chatText").val('[To:2555387]Chat Bot Eventos \n教えさせてください ]:) \n[info]\n ● 質問 : \n ● 回答 : \n[/info]');
})
},1000);
결과:
OK입니다. 마지막으로 테스트해보기
제대로 공부되었습니다.
Reference
이 문제에 관하여(Python + chatwork + google extension = 쉽게 재미있는 채팅 BOT를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/huynhscenes/items/6eb0218717a2c30b2a51텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)