Source code for chatbot.services.service_provider
from chatbot.common.chat_share_data import ShareData
from chatbot.nlp.response_generator import ResponseGenerator
from cluster.service.service_predict_cnn import PredictNetCnn
from django.http.request import MultiValueDict
from django.core.files.uploadedfile import InMemoryUploadedFile
import base64, io
[docs]class ServiceProvider(ShareData):
def __init__(self, service_story):
self.service_story = service_story
"""
class handle service models
"""
[docs] def run(self, share_data):
"""
run service based on decision
:param share_data:
:return:
"""
print("■■■■■■■■■■ 서비스 호출 대상 판단 : " + share_data.get_story_id() )
#Call Image Reconize
if(share_data.get_service_type() == "find_image") :
share_data = self._internal_service_call(share_data)
#Exist Story Response
elif(share_data.get_story_id() != '99') :
share_data = ResponseGenerator().select_response(share_data)
return share_data
def _external_service_call(self, share_data) :
try:
service_type = ShareData.get_service_type()
if(service_type):
return share_data
elif(service_type):
return share_data
#TODO : api call to external rest service and return
return None
except Exception as e:
raise Exception(e)
def _internal_service_call(self, share_data) :
try:
# internal : IMAGE
print("■■■■■■■■■■ 이미지 분석 결과 분석 시작 ■■■■■■■■■■ ")
temp = {}
request_type = share_data.get_request_type()
decode_text = base64.decodebytes(str.encode(share_data.get_request_data()))
temp['test'] = [InMemoryUploadedFile(io.BytesIO(decode_text), None, 'test.jpg', 'image/jpeg', len(decode_text), None)]
ml = MultiValueDict(temp)
# fp = open("/hoya_src_root/nn00004/1/test1.jpg", 'wb')
# fp.write(decode_text)
# fp.close()
# CNN Prediction
if(request_type == "image"):
return_val = PredictNetCnn().run('nn00004', None, ml )
name_tag = {"KYJ" : "김영재", "KSW" : "김승우", "LTY" : "이태영", "LSH" : "이상현", "PJH" : "백지현", "KSS" : "김수상", "PSC" : "박성찬"}
print("■■■■■■■■■■ 이미지 분석 결과 분석 결과 : " + return_val['test.jpg']['key'][0])
share_data.set_output_data(name_tag[return_val['test.jpg']['key'][0]] + "인거 같은데 맞나요?")
else :
share_data.set_output_data("이미지 분석 결과가 없습니다")
return share_data
except Exception as e:
raise Exception(e)