Script para criar condição de saída em massa

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.argv[1], 'r', encoding='utf8')
flow = json.load(input_archive)
input_archive.close()

CONN_ID = 9999

for bloc in flow:
    try:
        if flow[bloc]['$contentActions'][-1]['input']['bypass'] is False:
            if flow[bloc]['$title'] != "Início" and flow[bloc]['$title'] != "Exceções" and flow[bloc]['$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": [
                        {
                            "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]['$conditionOutputs']:
                    CONN_ID += 1
                    OUTPUT_CONDICTION_EXIT['$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 [diretório_completo\fluxo.json]

O script gera outro arquivo no padrão [diretório_completo\fluxo 2.json]

Resultado:
image

3 Curtidas

Nossa! Me salvou essa ideia! fiz aqui e deu certo, bom que aprendi um pouco sobre a estrutura do JSON da BLIP.

Obrigado!

2 Curtidas