Comitando flow_respose_without_one_store
This commit is contained in:
@@ -13,28 +13,73 @@ DIALOG_GRAPH: Dict[str, Dict[str, Any]] = {
|
||||
|
||||
},
|
||||
|
||||
"MENU_PRINCIPAL": {
|
||||
"message": "*Olá você inicou o Consultme!:*",
|
||||
"action_to_perform": "send_main_menu", # Ação para enviar um menu interativo (botões)
|
||||
"expected_input_type": "button_click",
|
||||
"MENU_PRINCIPAL": {
|
||||
"message": "*Olá, você iniciou o Consultme!:*",
|
||||
"action_to_perform": "send_main_menu", # Ação para enviar o menu principal (lista)
|
||||
"expected_input_type": "list_reply", # Espera um clique em um item da lista
|
||||
"transitions": {
|
||||
"OPTION_AGENDAR": "MENU_PRINCIPAL_STORE",
|
||||
"OPTION_CADASTRO_FLOW": "MENU_PRINCIPAL_STORE",
|
||||
"OPTION_STATUS": "MENU_PRINCIPAL_STORE",
|
||||
"OPTION_FALAR_ATENDENTE": "MENU_PRINCIPAL_STORE",
|
||||
"default": "MENU_PRINCIPAL_STORE" # Volta para o menu se a opção não for reconhecida
|
||||
# Transições para os estados intermediários de tempo/período
|
||||
"OPTION_ANO": "MENU_PRINCIPAL_ANO",
|
||||
"OPTION_MES": "MENU_PRINCIPAL_MES",
|
||||
"OPTION_ONTEM": "MENU_PRINCIPAL_ONTEM",
|
||||
"OPTION_HOJE": "MENU_PRINCIPAL_HOJE",
|
||||
"OPTION_SAIR": "ENCERRAR_CONVERSA",
|
||||
"default": "RESPOSTA_NAO_ENTENDIDA" # Volta para o menu se a opção não for reconhecida
|
||||
}
|
||||
},
|
||||
|
||||
"MENU_PRINCIPAL_STORE": {
|
||||
"action_to_perform": "send_main_store", # Ação para enviar um menu interativo (botões)
|
||||
"ENCERRAR_CONVERSA": {
|
||||
"message": "Você encerrou o Chat, digite algo caso precise consultar novamente.",
|
||||
"action_to_perform": "saindo_da_sessao" # Ação para enviar o menu principal (lista)
|
||||
},
|
||||
|
||||
# --- ESTADOS INTERMEDIÁRIOS APÓS ESCOLHA DO PERÍODO (MANDAM O SEGUNDO MENU) ---
|
||||
"MENU_PRINCIPAL_ANO": {
|
||||
"message": "Você escolheu o *Ano*. Agora, qual indicador deseja visualizar?",
|
||||
"action_to_perform": "send_main_store",
|
||||
"expected_input_type": "button_click",
|
||||
"transitions": {
|
||||
"OPTION_AGENDAR": "AGENDAMENTO_INICIO",
|
||||
"OPTION_CADASTRO_FLOW": "INICIAR_FLOW_CADASTRO",
|
||||
"OPTION_STATUS": "PEDIR_NUMERO_PEDIDO",
|
||||
"OPTION_FALAR_ATENDENTE": "ENCAMINHAR_ATENDENTE",
|
||||
"default": "MENU_PRINCIPAL" # Volta para o menu se a opção não for reconhecida
|
||||
"OPTION_TOTAL_CP": "RESPOSTA_ANO_TOTAL_CP", # Combinação final
|
||||
"OPTION_TOTAL_LOJAS": "RESPOSTA_ANO_TOTAL_LOJAS",
|
||||
"OPTION_TOTAL_UMA_LOJA": "RESPOSTA_ANO_UMA_LOJA",
|
||||
"OPTION_SAIR": "ENCERRAR_CONVERSA",
|
||||
"default": "RESPOSTA_NAO_ENTENDIDA" # Se não reconhecer, não entendi
|
||||
}
|
||||
},
|
||||
"MENU_PRINCIPAL_MES": {
|
||||
"message": "Você escolheu o *Mês*. Agora, qual indicador deseja visualizar?",
|
||||
"action_to_perform": "send_main_store",
|
||||
"expected_input_type": "button_click",
|
||||
"transitions": {
|
||||
"OPTION_TOTAL_CP": "RESPOSTA_MES_TOTAL_CP",
|
||||
"OPTION_TOTAL_LOJAS": "RESPOSTA_MES_TOTAL_LOJAS",
|
||||
"OPTION_TOTAL_UMA_LOJA": "RESPOSTA_MES_UMA_LOJA",
|
||||
"OPTION_SAIR": "ENCERRAR_CONVERSA",
|
||||
"default": "RESPOSTA_NAO_ENTENDIDA"
|
||||
}
|
||||
},
|
||||
"MENU_PRINCIPAL_ONTEM": {
|
||||
"message": "Você escolheu *Ontem*. Agora, qual indicador deseja visualizar?",
|
||||
"action_to_perform": "send_main_store",
|
||||
"expected_input_type": "button_click",
|
||||
"transitions": {
|
||||
"OPTION_TOTAL_CP": "RESPOSTA_ONTEM_TOTAL_CP",
|
||||
"OPTION_TOTAL_LOJAS": "RESPOSTA_ONTEM_TOTAL_LOJAS",
|
||||
"OPTION_TOTAL_UMA_LOJA": "RESPOSTA_ONTEM_UMA_LOJA",
|
||||
"OPTION_SAIR": "ENCERRAR_CONVERSA",
|
||||
"default": "RESPOSTA_NAO_ENTENDIDA"
|
||||
}
|
||||
},
|
||||
"MENU_PRINCIPAL_HOJE": {
|
||||
"message": "Você escolheu *Hoje*. Agora, qual indicador deseja visualizar?",
|
||||
"action_to_perform": "send_main_store",
|
||||
"expected_input_type": "button_click",
|
||||
"transitions": {
|
||||
"OPTION_TOTAL_CP": "RESPOSTA_HOJE_TOTAL_CP",
|
||||
"OPTION_TOTAL_LOJAS": "RESPOSTA_HOJE_TOTAL_LOJAS",
|
||||
"OPTION_TOTAL_UMA_LOJA": "RESPOSTA_HOJE_UMA_LOJA",
|
||||
"OPTION_SAIR": "ENCERRAR_CONVERSA",
|
||||
"default": "RESPOSTA_NAO_ENTENDIDA"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -44,97 +89,149 @@ DIALOG_GRAPH: Dict[str, Dict[str, Any]] = {
|
||||
"transitions": {
|
||||
"menu": "MENU_PRINCIPAL",
|
||||
"ajuda": "MENU_PRINCIPAL",
|
||||
"default": "RESPOSTA_NAO_ENTENDIDA" # Continua não entendendo
|
||||
"default": "RESPOSTA_NAO_ENTENDIDA"
|
||||
}
|
||||
},
|
||||
# --- FLUXO DE CADASTRO (com Flow) ---
|
||||
"INICIAR_FLOW_CADASTRO": {
|
||||
"action_to_perform": "send_flow_cadastro", # Ação para enviar o Flow
|
||||
"flow_id": "COLOQUE_AQUI_O_FLOW_ID_DO_SEU_CADASTRO_PUBLICADO", # ID do seu Flow publicado
|
||||
"flow_cta": "Abrir Cadastro",
|
||||
"expected_input_type": "flow_nfm_reply", # Espera a resposta do Flow
|
||||
"transitions": {
|
||||
"success": "CADASTRO_CONCLUIDO", # Se o Flow for concluído com sucesso
|
||||
"failure": "CADASTRO_FALHA" # Se houver um problema no Flow (ou o usuário não preencher)
|
||||
}
|
||||
},
|
||||
"CADASTRO_CONCLUIDO": {
|
||||
"message": "Obrigado por se cadastrar, ${nome_completo}! Seu e-mail é: ${email}. Já pode explorar nossos serviços!",
|
||||
"action_to_perform": "process_cadastro_data", # Ação para salvar no BD/CRM
|
||||
"expected_input_type": "any", # Qualquer coisa leva ao menu
|
||||
"transitions": {
|
||||
"default": "MENU_PRINCIPAL"
|
||||
}
|
||||
},
|
||||
"CADASTRO_FALHA": {
|
||||
"message": "Não foi possível completar seu cadastro. Por favor, tente novamente ou digite 'ajuda'.",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"default": "MENU_PRINCIPAL"
|
||||
}
|
||||
},
|
||||
# --- FLUXO DE AGENDAMENTO (Exemplo Básico) ---
|
||||
"AGENDAMENTO_INICIO": {
|
||||
"message": "Certo! Para agendar, qual serviço você precisa?",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"default": "AGENDAMENTO_CONFIRMAR_SERVICO"
|
||||
}
|
||||
},
|
||||
"AGENDAMENTO_CONFIRMAR_SERVICO": {
|
||||
"message": "Você precisa de *${servico_agendado}*. Qual data e horário você prefere?",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"default": "AGENDAMENTO_FINALIZAR"
|
||||
},
|
||||
"action_to_perform": "save_temp_service" # Ação para guardar o serviço temporariamente
|
||||
},
|
||||
"AGENDAMENTO_FINALIZAR": {
|
||||
"message": "Seu agendamento para *${servico_agendado}* em *${data_horario_agendado}* foi confirmado! Te vejo lá!",
|
||||
"action_to_perform": "confirm_appointment", # Ação para agendar no sistema real
|
||||
|
||||
# --- ESTADOS FINAIS COMBINATÓRIOS (12 ESTADOS) ---
|
||||
# Período: ANO
|
||||
"RESPOSTA_ANO_TOTAL_CP": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_ano_cp", # Ação para buscar e formatar dados
|
||||
"expected_input_type": "any",
|
||||
"transitions": {
|
||||
"default": "MENU_PRINCIPAL"
|
||||
}
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
# --- FLUXO DE STATUS DO PEDIDO ---
|
||||
"PEDIR_NUMERO_PEDIDO": {
|
||||
"message": "Por favor, digite o número do seu pedido para consultar o status:",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"default": "CONSULTAR_STATUS_API"
|
||||
}
|
||||
},
|
||||
"CONSULTAR_STATUS_API": {
|
||||
"message": "Consultando o status do pedido *${numero_pedido}*...",
|
||||
"action_to_perform": "call_external_status_api", # Ação para chamar um sistema externo (API futura)
|
||||
"expected_input_type": "api_response", # A resposta vem de uma API, não do usuário
|
||||
"transitions": {
|
||||
"success": "STATUS_EXIBIR",
|
||||
"failure": "STATUS_NAO_ENCONTRADO"
|
||||
}
|
||||
},
|
||||
"STATUS_EXIBIR": {
|
||||
"message": "O status do pedido *${numero_pedido}* é: *${status_retornado}*.",
|
||||
"RESPOSTA_ANO_TOTAL_LOJAS": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_ano_lojas",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {
|
||||
"default": "MENU_PRINCIPAL"
|
||||
}
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
"STATUS_NAO_ENCONTRADO": {
|
||||
"message": "Não consegui encontrar o pedido *${numero_pedido}*. Verifique e digite novamente, ou 'menu'.",
|
||||
"RESPOSTA_ANO_UMA_LOJA": {
|
||||
"message": "Você escolheu o Total de uma Loja do *Ano*. Por favor, digite o ID da loja.",
|
||||
"action_to_perform": "set_context_for_store_id_input_ano_loja", # Ação para guardar o contexto de "Ano" e esperar o ID da loja
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"menu": "MENU_PRINCIPAL",
|
||||
"default": "PEDIR_NUMERO_PEDIDO"
|
||||
"default": "PROCESSAR_ID_LOJA_ANO" # Leva ao processamento do ID da loja
|
||||
}
|
||||
},
|
||||
# --- FLUXO DE ATENDENTE ---
|
||||
"ENCAMINHAR_ATENDENTE": {
|
||||
"message": "Encaminhando você para um de nossos atendentes. Por favor, aguarde.",
|
||||
"terminal": True # Indica que a conversa termina aqui (até o atendente assumir)
|
||||
|
||||
# Período: MÊS
|
||||
"RESPOSTA_MES_TOTAL_CP": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_mes_cp",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
# ... Adicione mais estados conforme a complexidade da sua conversa ...
|
||||
"RESPOSTA_MES_TOTAL_LOJAS": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_mes_lojas",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
"RESPOSTA_MES_UMA_LOJA": {
|
||||
"message": "Você escolheu o Total de uma Loja do *Mês*. Por favor, digite o ID da loja.",
|
||||
"action_to_perform": "set_context_for_store_id_input_mes_loja",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"default": "PROCESSAR_ID_LOJA_MES"
|
||||
}
|
||||
},
|
||||
|
||||
# Período: ONTEM
|
||||
"RESPOSTA_ONTEM_TOTAL_CP": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_ontem_cp",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
"RESPOSTA_ONTEM_TOTAL_LOJAS": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_ontem_lojas",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
"RESPOSTA_ONTEM_UMA_LOJA": {
|
||||
"message": "Você escolheu o Total de uma Loja de *Ontem*. Por favor, digite o ID da loja.",
|
||||
"action_to_perform": "set_context_for_store_id_input_ontem_loja",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"default": "PROCESSAR_ID_LOJA_ONTEM"
|
||||
}
|
||||
},
|
||||
|
||||
# Período: HOJE
|
||||
"RESPOSTA_HOJE_TOTAL_CP": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_hoje_cp",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
"RESPOSTA_HOJE_TOTAL_LOJAS": {
|
||||
"message": " Consulta realizada com sucesso! \n\n💰 O realizado da Receita em GMV é: *${receita}* e o Boleto Médio é: *${boleto}*",
|
||||
"action_to_perform": "get_combined_indicator_data_hoje_lojas",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
"RESPOSTA_HOJE_UMA_LOJA": {
|
||||
"message": "Você escolheu o Total de uma Loja de *Hoje*. Por favor, digite o ID da loja.",
|
||||
"action_to_perform": "set_context_for_store_id_input_hoje_loja",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {
|
||||
"default": "PROCESSAR_ID_LOJA_HOJE"
|
||||
}
|
||||
},
|
||||
|
||||
# --- ESTADOS PARA PROCESSAR O ID DA LOJA (PARA 'UMA LOJA') ---
|
||||
"PROCESSAR_ID_LOJA_ANO": {
|
||||
"message": "Consultando indicador da loja ${id_loja} para o *Ano*...",
|
||||
"action_to_perform": "get_store_indicator_ano",
|
||||
"expected_input_type": "api_response", # Ação para pegar o ID digitado e consultar a API
|
||||
"transitions": {
|
||||
"success": "EXIBIR_INDICADOR_LOJA_ANO",
|
||||
"failure": "LOJA_NAO_ENCONTRADA_ANO"
|
||||
}
|
||||
},
|
||||
"PROCESSAR_ID_LOJA_MES": {
|
||||
"message": "Consultando indicador da loja ${id_loja} para o *Mês*...",
|
||||
"action_to_perform": "get_store_indicator_mes",
|
||||
"expected_input_type": "api_response",
|
||||
"transitions": {
|
||||
"success": "EXIBIR_INDICADOR_LOJA_MES",
|
||||
"failure": "LOJA_NAO_ENCONTRADA_MES"
|
||||
}
|
||||
},
|
||||
"PROCESSAR_ID_LOJA_ONTEM": {
|
||||
"message": "Consultando indicador da loja ${id_loja} para *Ontem*...",
|
||||
"action_to_perform": "get_store_indicator_ontem",
|
||||
"expected_input_type": "api_response",
|
||||
"transitions": {
|
||||
"success": "EXIBIR_INDICADOR_LOJA_ONTEM",
|
||||
"failure": "LOJA_NAO_ENCONTRADA_ONTEM"
|
||||
}
|
||||
},
|
||||
"PROCESSAR_ID_LOJA_HOJE": {
|
||||
"message": "Consultando indicador da loja ${id_loja} para *Hoje*...",
|
||||
"action_to_perform": "get_store_indicator_hoje",
|
||||
"expected_input_type": "api_response",
|
||||
"transitions": {
|
||||
"success": "EXIBIR_INDICADOR_LOJA_HOJE",
|
||||
"failure": "LOJA_NAO_ENCONTRADA_HOJE"
|
||||
}
|
||||
},
|
||||
|
||||
# --- ESTADOS PARA EXIBIR INDICADOR DE LOJA ESPECÍFICA (COMBINAÇÕES) ---
|
||||
"EXIBIR_INDICADOR_LOJA_ANO": {
|
||||
"message": "O indicador da loja *${id_loja}* do *Ano* é: *${indicador_loja}*.",
|
||||
"expected_input_type": "any",
|
||||
"transitions": {"default": "MENU_PRINCIPAL"}
|
||||
},
|
||||
"LOJA_NAO_ENCONTRADA_ANO": {
|
||||
"message": "Loja *${id_loja}* não encontrada para o *Ano*. Digite novamente ou 'menu'.",
|
||||
"expected_input_type": "text",
|
||||
"transitions": {"default": "RESPOSTA_ANO_UMA_LOJA", "menu": "MENU_PRINCIPAL"} # Volta para pedir a loja para o Ano
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
# --- ESTADO INICIAL ---
|
||||
|
||||
Reference in New Issue
Block a user