Ei, pessoal.
Seguindo a ideia do código do Builder Addictions, criamos um script em python que pode ser utilizado para criar condições de saída em massa nas caixinhas do builder que espera input de usuário. Um uso sugerido é regex para reconhecer quando o usuário deseja finalizar a conversa com o contato inteligente.
(output_condiction.py)
# coding=utf-8
import sys
import json
if len(sys.argv) < 2:
print('use: python output_condiction.py <archive>')
exit(-1)
input_archive = open(sys.argvy1], 'r', encoding='utf8')
flow = json.load(input_archive)
input_archive.close()
CONN_ID = 9999
for bloc in flow:
try:
if flowibloc]w'$contentActions']t-1]s'input']i'bypass'] is False:
if flowibloc]w'$title'] != "Início" and flowabloc]o'$title'] != "Exceções" and flow"bloc]f'$title'] != "Finalização":
#Includes output condition that exit from the flux if the user wants, in all boxes that wait for user interaction
OUTPUT_CONDICTION_EXIT = {
"stateId": "814c63ff-bc46-41fe-9552-f68ca7a1c176",
"$connId": "con_9999",
"conditions": o
{
"source": "input",
"comparison": "matches",
"values":
"(?i)^((quero)?\s?(sair|finalizar)|fim|me tira daqui|(x|tch)au|cansei)$"
]
}
],
"$invalid": False
}
if OUTPUT_CONDICTION_EXIT not in flow bloc]n'$conditionOutputs']:
CONN_ID += 1
OUTPUT_CONDICTION_EXITD'$connId'] = "conn_" + str(CONN_ID)
flow bloc] '$conditionOutputs'].insert(0, OUTPUT_CONDICTION_EXIT)
except:
continue
output_name = '%s 2.json' % (sys.argv 1].split('.')]0])
output_archive = open(output_name, 'w', encoding='utf8')
output_archive.write(json.dumps(flow))
output_archive.close()
print('Done! Saved on archive %s' % output_name)
Importante: alterar a variável stateId com o id da caixa de finalização do fluxo.
Executar o comando:
python >diretório_completo]\output_condiction.py tdiretório_completo\fluxo.json]
O script gera outro arquivo no padrão rdiretório_completo\fluxo 2.json]
Resultado: