示例#1
0
 def test_get_config_on_redis(self):
     chave = 'contador'
     field = 'silencio'
     self.assertEqual(config_redis.get_config_on_redis(chave, field), 2)
     chave = 'etapa-valida'
     field = 'evento'
     self.assertEqual(config_redis.get_config_on_redis(chave, field), 'Y')
     chave = 'regiao-cliente'
     field = '89'
     self.assertEqual(config_redis.get_config_on_redis(chave, field), 'R1')
     chave = 'teste4'
     field = 'teste4'
     self.assertEqual(config_redis.get_config_on_redis(chave, field), None)
示例#2
0
    def create_intent_note(self, outbound_message):
        last_intent = outbound_message.intent  #TODO: mudar pra pegar intent do REDIS
        intent_note = get_config_on_redis('intent-nota', last_intent)

        if intent_note:
            final_intent_note = intent_note
        else:
            final_intent_note = ''
        return final_intent_note
示例#3
0
 def transfer_sector(self, outbound_message, phone_number):
     region = self.get_region(phone_number)
     region_transfer = get_config_on_redis('setor-transferencia', region)
     if outbound_message.intent == "CancelarLinhaOuProduto":
         transfer_sector = region_transfer['CancelarLinhaOuProduto']
     elif outbound_message.intent == "QuestionarConta":  #TODO: verificar como identificar questionarconta
         transfer_sector = region_transfer['QuestionarConta']
     else:
         transfer_sector = region_transfer['Default']
     return transfer_sector
示例#4
0
    def create_register_note(self, session, outbound_message):
        last_etapa = hget_config_on_redis(session,
                                          "etapa")  #TODO: pegar do REDIS
        register_note = get_config_on_redis('registro-campo-nota', last_etapa)

        if last_etapa in ['motivo_contato', 'evento', 'instrucoes_finais']:
            note = register_note + self.create_intent_note(outbound_message)
        elif last_etapa == 'hang-up':
            note = register_note
        else:
            note = ''
        return note
    def connect(self, collection):

        try:
            connection = pymongo.MongoClient(self.db_host,
                                             username=self.db_user,
                                             password=self.db_password)
            db = connection[self.db_name]
            collection = db[collection]

        except BaseException:
            raise KeyError(
                get_config_on_redis('mensage-category', 'error_connect'))

        return collection
示例#6
0
    def __check_intent_confidence__(self, response, context_chamada,etapa_anterior):
        #Faixas: 0 = Ignorado ou Condidence inexistente | 1,2,3 = faixa de intendimento.
        response["intervalo_confianca"] = 0
        
        #etapas ignoradas
        if etapa_anterior =="welcome":            
            return response

        if len(response["intents"]) <= 0:            
            return response

        intents = response["intents"] 
        intent = intents[0]["intent"] if "intent" in intents[0] else ""
        confidence = intents[0]["confidence"] if "confidence" in intents[0] else "0"
        
        # Define threshold de entendimento      
        #misunderstood = Config.find_in_dict(['intent-confidence', 'misunderstood'])
        misunderstood = get_config_on_redis('intent-confidence', 'misunderstood')                
        ask_confirmation = get_config_on_redis('intent-confidence', 'ask-confirmation')                
        
        #Obtem uma resposta aleatoria de nao entendimento.
        misunderstood_utter = get_list_on_redis('nao-entendimento')
        misunderstood_utter = misunderstood_utter.get(str(randint(1, len(misunderstood_utter))),'Não entendi, você pode repetir')
        confirmation_utter = get_config_on_redis('entendimento-parcial', intent)
        
        if confidence < misunderstood:
            response["intervalo_confianca"] = 1
            return self.__change_answer_and_context__(response, misunderstood_utter)
        
        elif confidence < ask_confirmation:
            response["intervalo_confianca"] = 2
            return self.__change_answer_and_context__(response, confirmation_utter)
        else: 
            response["intervalo_confianca"] = 3
            
        return response
示例#7
0
    def set_tipo_registro(self, msisdn_reclamado):
        evento = self.set_evento(msisdn_reclamado)
        prazo = self.set_prazo(msisdn_reclamado)
        tipo_registro = get_config_on_redis(prazo, evento)

        return tipo_registro
示例#8
0
 def get_region(self, phone):
     phone_region = phone[0] + phone[1]
     region = get_config_on_redis('regiao-cliente', phone_region)
     return region