Bonjour ,
J’ai ma fonction qui analyse le message du client, et quand mon algorithme détecte le mot "commande" suivi d’un nombre de 1 à 20, ma fonction est censée me renvoyer les deux valeurs mais en retour, ma fonction me renvoie tout ce qui à 20 (exemple même la date 2020).
J’aimerais que ma fonction me renvoie le nombre entre 1 et 20 de la "commande".
Merci
def detect_question(text,subject):
questions = []
intentList = ["Default Fallback Intent"]
ai = apiai.ApiAI("--- Clef privée retirée par l'équipe du site ---")
########
def req(phrase):
request = ai.text_request()
request.lang = 'fr'
request.session_id = "RANDOM"
request.query = phrase
question = request.getresponse()
s = json.loads(question.read().decode('utf-8'))
try:
intentName = s["result"]["metadata"]["intentName"]
except:
intentName = "Default Fallback Intent"
return intentName
########
phrases = re.split("\.|!|\?",text)
for phrase in phrases:
# Tests if the phrase contain characters:
test = False
for letter in string.ascii_letters:
if letter in phrase:
test = True
if test == False:
text = text.replace(phrase,"")
continue # Go to next phrase
intentName = req(phrase)
if intentName not in intentList:
questions.append(intentName)
intentList.append(intentName)
l = len(questions)
if l == 0:
pattern1 = r"Commande #\d{1,20} confirmée"
pattern2 = r"Une commande #\d{1,20} est en transit"
patterns = [pattern1,pattern2]
default_subject = False
for pattern in patterns:
if re.search(pattern,subject):
default_subject = True
break
if not default_subject:
for letter in string.ascii_letters:
if letter in subject:
intentName = req(subject)
if intentName not in intentList:
questions.append(intentName)
l += 1
break
if l == 0:
questions = ["Default Fallback Intent","none"]
elif l == 1:
questions.append("none")
elif l == 3 and "thanks" in questions:
questions.remove("thanks")
elif l >= 3:
for i in range(l-2):
del questions[0]
return questions
+0
-0