name: invoice_explanation version: 2 start: preparar nodes: - id: preparar action: preparar_invoice_explanation input: msisdn: $.input.msisdn customer_id: $.input.customer_id current_invoice_number: $.input.current_invoice_number past_invoice_number: $.input.past_invoice_number current_invoice_due_date: $.input.current_invoice_due_date past_invoice_due_date: $.input.past_invoice_due_date channel: $.input.channel tentativa_anterior: $.vars.preparar.tentativa invoice_explanation_base: $.input.invoice_explanation_base - id: formatar action: formatar_invoice_explanation input: explicacao_base: $.vars.preparar.explicacao_base invoice_detail: $.input.invoice_detail pause: enabled: true when: eq: [$.output.await_user_input, true] return_from: $.output.mensagem expected_input: key: resposta_usuario allowed_values: ["SIM", "NAO"] normalize: upper_strip resume_from: decisao - id: checar_tentativa action: checar_tentativa_cvn input: tentativa: $.vars.preparar.tentativa - id: texto_intencao_invalida action: montar_resposta_texto input: dados: texto_usuario: "Não consegui validar sua solicitação. Pode informar novamente sobre a sua fatura?" - id: fim_intencao_invalida action: montar_resposta_texto input: dados: texto_usuario: "Não foi possível validar sua solicitação neste momento." - id: resposta_falha_servico action: montar_resposta_texto input: dados: texto_usuario: "Para continuar com a sua solicitação, aguarde um instante." - id: decisao action: no_op input: {} - id: registrar_sim action: registrar_atendimento_invoice_explanation input: resposta_usuario: SIM - id: registrar_protocolo_aceite action: registrar_protocolo_inicio input: msisdn: $.input.msisdn scenario: invoice_explanation_aceite_fechado request_status: Fechado status: CLOSED - id: registrar_nao action: registrar_atendimento_invoice_explanation input: resposta_usuario: NAO # A variação foi causada por VAS avulso ou estratégico? Sem VAS variado não há nada que # o bot resolva, e insistir com o orquestrador só gasta turno (SPEC §9 "Explicação da variação recusada"). - id: checar_vas_variacao action: checar_vas_variado input: invoice_variation: $.input.invoice_variation invoice_detail: $.input.invoice_detail # Nó só para nomear o last_node: o backend o mapeia para nao_resolvido em # auto_finalize_status_map, e a fala vem do NAO_RESOLVIDO_CLOSING. - id: finalizar_nao_resolvido action: no_op input: {} edges: - from: preparar to: formatar priority: 10 when: eq: [$.vars.preparar.success, true] - from: preparar to: resposta_falha_servico priority: 20 when: eq: [$.vars.preparar.service_failed, true] - from: preparar to: checar_tentativa priority: 30 when: eq: [$.vars.preparar.success, false] - from: checar_tentativa to: fim_intencao_invalida priority: 10 when: eq: [$.vars.checar_tentativa.limite_excedido, true] - from: checar_tentativa to: texto_intencao_invalida priority: 20 - from: formatar to: decisao - from: decisao to: registrar_sim priority: 10 when: eq: [$.input.resposta_usuario, SIM] - from: decisao to: registrar_nao priority: 20 when: eq: [$.input.resposta_usuario, NAO] - from: registrar_sim to: registrar_protocolo_aceite - from: registrar_protocolo_aceite to: END - from: registrar_nao to: checar_vas_variacao - from: checar_vas_variacao to: finalizar_nao_resolvido priority: 10 when: eq: [$.vars.checar_vas_variacao.tem_vas_variado, false] # Tem VAS variado (ou não deu para saber): devolve ao orquestrador, como sempre. - from: checar_vas_variacao to: END priority: 20 - from: finalizar_nao_resolvido to: END - from: texto_intencao_invalida to: END - from: fim_intencao_invalida to: END - from: resposta_falha_servico to: END