@@ -54,6 +54,7 @@ def run(self, dispatcher, tracker, domain):
5454 user_message = tracker .latest_message .get ("text" )
5555 logger .debug (f"Salvando fallback como descrição de risco: { user_message } " )
5656 correcao_classificacao = tracker .get_slot ("contexto_classificacao_corrigida" )
57+ dispatcher .utter_message (text = "Obrigada pela descrição!" )
5758 next_action = "utter_perguntar_por_midia" if not correcao_classificacao else "action_confirmar_relato"
5859 return [
5960 SlotSet ("descricao_risco" , user_message ),
@@ -256,7 +257,7 @@ def run(self, dispatcher, tracker, domain):
256257 logger .error (f"Erro ao buscar nome no banco: { e } " )
257258
258259 dispatcher .utter_message (
259- text = "Oie! 👋 \n \n Bem-vindo(a) à *Defesa Climática Popular*.\n \n Pra começar, *como você prefere ser chamado(a )?*"
260+ text = "Oie! 👋 \n \n Bem-vindo(a) à *Defesa Climática Popular*.\n \n Pra começar, *como você prefere ser chamada(o )?*"
260261 )
261262
262263 return [SlotSet ("pagina_risco" ,1 )]
@@ -325,7 +326,7 @@ def run(self, dispatcher, tracker, domain):
325326 finally :
326327 if conn :
327328 conn .close ()
328- dispatcher .utter_message (text = "Sem problemas! Como você prefere ser chamado(a )?" )
329+ dispatcher .utter_message (text = "Sem problemas! Como você prefere ser chamada(o )?" )
329330 return [SlotSet ("nome" , None )]
330331class ActionBuscarEndereco (Action ):
331332 def name (self ):
@@ -356,7 +357,7 @@ def run(self, dispatcher, tracker, domain):
356357 if endereco and dentro_do_retangulo (latitude , longitude ):
357358 logger .debug (f"Endereço no retangulo { latitude } { longitude } " )
358359 dispatcher .utter_message (
359- text = f"Encontrei esse endereço:\n { endereco } \n Está correto?" ,
360+ text = f"Encontrei esse endereço:\n { endereco } \n \ n Está correto?" ,
360361 buttons = [
361362 {"title" : "Sim" , "payload" : "/affirm_address" },
362363 {"title" : "Não" , "payload" : "/deny_address" }
@@ -380,7 +381,7 @@ def run(self, dispatcher, tracker, domain):
380381 endereco = location_data ['address' ]
381382 endereco = format_address (endereco )
382383 dispatcher .utter_message (
383- text = f"Encontrei esse endereço:\n { endereco } \n Está correto?" ,
384+ text = f"Encontrei esse endereço:\n { endereco } \n \ n Está correto?" ,
384385 buttons = [
385386 {"title" : "Sim" , "payload" : "/affirm_address" },
386387 {"title" : "Não" , "payload" : "/deny_address" }
@@ -432,7 +433,7 @@ def run(self, dispatcher, tracker, domain):
432433 latitude = coords .get ("lat" ,"" )
433434 longitude = coords .get ("lng" ,"" )
434435 dispatcher .utter_message (
435- text = f"Encontrei esse endereço:\n { endereco } \n Está correto?" ,
436+ text = f"Encontrei esse endereço:\n { endereco } \n \ n Está correto?" ,
436437 buttons = [
437438 {"title" : "Sim" , "payload" : "/affirm_address" },
438439 {"title" : "Não" , "payload" : "/deny_address" }
@@ -501,7 +502,7 @@ def run(self, dispatcher, tracker, domain):
501502 next_action = "utter_perguntar_por_midia" if last_action == "utter_classificar_risco" else "action_confirmar_relato"
502503 descricao = tracker .get_slot ("descricao_risco" )
503504 if descricao :
504- dispatcher .utter_message (text = "Obrigado pela descrição!" )
505+ dispatcher .utter_message (text = "Obrigada pela descrição!" )
505506 return [FollowupAction (next_action )]
506507 else :
507508 dispatcher .utter_message (text = "Não consegui entender a descrição, tente novamente." )
@@ -529,7 +530,6 @@ def run(self, dispatcher, tracker, domain):
529530
530531 midias_slot = tracker .get_slot ("midias" ) or []
531532 logger .debug (f"midia_data: { midia_data } " )
532-
533533 if midia_data .get ("tipo" ) == "mídia_combinada" :
534534 novas_midias = [m ["path" ] for m in midia_data ["midias" ]]
535535 midias_slot .extend (novas_midias )
@@ -538,8 +538,11 @@ def run(self, dispatcher, tracker, domain):
538538 path = midia_data ["path" ]
539539 midias_slot .append (path )
540540
541- dispatcher .utter_message (text = f"Recebendo... Se ainda estiver algo carregando, aguarde concluir." )
542- return [SlotSet ("midias" , midias_slot )]
541+ quantidade_midias = len (midias_slot )
542+ plural = "s" if quantidade_midias > 1 else ""
543+ dispatcher .utter_message (text = f"📸 Já recebemos { quantidade_midias } arquivo{ plural } . Se ainda tiver mídia sendo enviada, *espere concluir*." )
544+
545+ return [SlotSet ("midias" , midias_slot ), FollowupAction ("action_perguntar_por_nova_midia" )]
543546
544547 except Exception as e :
545548 dispatcher .utter_message (
@@ -557,7 +560,7 @@ def run(self, dispatcher, tracker, domain):
557560 time .sleep (1 )
558561 logger .debug ("rodando action: action_perguntar_por_nova_midia" )
559562 dispatcher .utter_message (
560- text = "📸 Você pode mandar mais fotos e vídeos ou clicar em Não enviar mais para seguir ." ,
563+ text = "Você pode enviar mais fotos ou vídeos ou clicar em * Não enviar mais* para continuar ." ,
561564 buttons = [
562565 {"title" : "Não enviar mais" , "payload" : "/pular_enviar_midia_risco" }
563566 ]
@@ -735,16 +738,12 @@ def run(self, dispatcher, tracker, domain):
735738 dispatcher .utter_message (text = "Erro ao salvar os dados do risco." )
736739 logger .error (f"[ERRO SALVAMENTO RISCO] { e } " , exc_info = True )
737740 return []
738-
739- dispatcher .utter_message (
740- text = '*Registrado!*\n \n Vamos *revisar suas informações* e, assim que finalizarmos, você receberá uma mensagem de confirmação.\n \n ⚠️ Em caso de urgência, ligue para a *Defesa Civil: 199*.'
741- )
742741
743742 dispatcher .utter_message (
744- text = 'ℹ️ Te ajudo em algo mais? Você pode:' ,
743+ text = '*Registrado!* Te ajudo em algo mais? Você pode:' ,
745744 buttons = [
746- {"title" : "Como tá minha área? " , "payload" : "/como_ta_minha_area " },
747- {"title" : "Menu inicial " , "payload" : "/menu_inicial " },
745+ {"title" : "Situação no Jacaré " , "payload" : "/situacao_no_jacare " },
746+ {"title" : "Contatos emergência " , "payload" : "/contatos_emergencia " },
748747 {"title" : "Encerrar" , "payload" : "/sair" }
749748 ]
750749 )
@@ -765,71 +764,43 @@ def name(self) -> str:
765764
766765 def run (self , dispatcher , tracker , domain ):
767766 logger .debug ("rodando action: action_listar_riscos" )
768- last_action = None
769- last_action = get_last_action (tracker )
770- pagina = tracker .get_slot ("pagina_risco" ) or 1
771- if last_action != "action_listar_riscos" and last_action != "action_perguntar_mais_riscos" :
772- logger .debug (f"Last action:: { last_action } " )
773- pagina = 1
774-
775767 wordpress_url = os .getenv ("WORDPRESS_URL" )
776768 if not wordpress_url :
777769 dispatcher .utter_message (text = "Erro de configuração: URL do WordPress não definida." )
778770 logger .error ("WORDPRESS_URL não está definida nas variáveis de ambiente." )
779771 return []
780772
781- endpoint = f"{ wordpress_url } wp-json/dcp/v1/riscos?per_page=1&page= { pagina } "
773+ endpoint = f"{ wordpress_url } wp-json/dcp/v1/riscos-resumo "
782774 logger .debug (f"Buscando riscos na URL: { endpoint } " )
783775
784776 try :
785777 response = requests .get (endpoint )
786778 logger .debug (f"Resposta HTTP: { response .status_code } - { response .text } " )
787779 response .raise_for_status ()
788780 dados = response .json ()
789- riscos = extrair_riscos (dados )
790- if not riscos and pagina == 1 :
791- dispatcher .utter_message (text = "Nenhuma informação foi compartilhada pela comunidade recentemente!" )
792- return [SlotSet ("pagina_risco" , 1 ),FollowupAction ("utter_saida_riscos" )]
793- if not riscos :
794- dispatcher .utter_message (text = "Você já viu todos os relatos da comunidade." )
795- return [SlotSet ("pagina_risco" , 1 ),FollowupAction ("utter_saida_riscos" )]
796- if pagina > 5 :
797- dispatcher .utter_message (text = "Para visualizar mais riscos entre no nosso site: https://defesaclimaticapopular.org.br/" )
798- return [SlotSet ("pagina_risco" , 1 ),FollowupAction ("utter_saida_riscos" )]
799- mensagem = '⬇️ Confira abaixo as informações enviadas pela comunidade:\n \n \n ' if pagina == 1 else ''
800- for risco in riscos :
801- classificacao = risco ['classificacao' ][0 ]
802- classificacao_dict = {
803- "Alagamento" : "*Alagamento* informado" ,
804- "Lixo" : "*Lixo* registrado" ,
805- "Outros" : "*Risco* informado"
806- }
807- classificacao_texto = classificacao_dict .get (classificacao , "" )
808- data_hora = formata_data (risco ['data' ],'%H:%M do dia %d/%m/%Y' )
809- mensagem += (
810- f"{ classificacao_texto } às { data_hora } \n \n "
811- f"*Local:* { risco ['endereco' ]} \n \n "
781+ # Exemplo de dados: {"total":6,"alagamento":4,"lixo":1,"outros":1}
782+ total = dados .get ("total" , 0 )
783+ alagamento = dados .get ("alagamento" , 0 )
784+ lixo = dados .get ("lixo" , 0 )
785+ outros = dados .get ("outros" , 0 )
786+ if total == 0 :
787+ dispatcher .utter_message (text = "📝 Nas últimas 24h não houve nenhum registro de risco." )
788+ else :
789+ mensagem = (
790+ f"📝 Nas últimas 24h foram registrados { total } relatos: "
791+ f"sendo { alagamento } sobre alagamento, { lixo } sobre lixo e { outros } sobre outros riscos."
812792 )
813- if risco ['descricao' ]:
814- mensagem += f"*Descrição:* { risco ['descricao' ]} \n \n "
815- if risco ['imagens' ] or risco ['videos' ]:
816- mensagem = mensagem + f"*Fotos/vídeos:*\n \n "
817- dispatcher .utter_message (text = mensagem )
818- for image in risco ['imagens' ]:
819- dispatcher .utter_message (image = image )
820- videos = risco ['videos' ]
821- for idx , video in enumerate (videos ):
822- is_last = idx == len (videos ) - 1
823- logger .debug (f"video: { video } " )
824- dispatcher .utter_message (text = "" , custom = {"type" : "video" , "url" : video , 'is_last' : is_last })
825- dispatcher .utter_message (text = "\n \n \n \n " )
793+ dispatcher .utter_message (text = mensagem )
794+ dispatcher .utter_message (
795+ text = "➡️ Para ver todos os relatos e acompanhar mais detalhes, acesse: defesaclimaticapopular.org.br"
796+ )
826797
827- return [SlotSet ( "pagina_risco" , pagina + 1 ), FollowupAction ("action_perguntar_mais_riscos" )]
798+ return [FollowupAction ('action_preciso_de_ajuda' )]
828799
829800 except requests .RequestException as e :
830801 dispatcher .utter_message (text = "Ocorreu um erro ao buscar os riscos." )
831802 logger .error (f"[ERRO] Falha na requisição para { endpoint } : { e } " , exc_info = True )
832- return []
803+ return [FollowupAction ( 'action_listen' ) ]
833804
834805class ActionPerguntarMaisRiscos (Action ):
835806 def name (self ) -> str :
@@ -938,7 +909,16 @@ def run(
938909 texto_final = FALLBACK_TEXTO
939910
940911 dispatcher .utter_message (text = texto_final )
941- return []
912+ dispatcher .utter_message (
913+ text = 'Te ajudo em algo mais? Você pode:' ,
914+ buttons = [
915+ {"title" : "Informar um risco" , "payload" : "/informar_risco" },
916+ {"title" : "Contatos emergência" , "payload" : "/contatos_emergencia" },
917+ {"title" : "Encerrar" , "payload" : "/sair" }
918+ ]
919+
920+ )
921+ return [FollowupAction ('action_listen' )]
942922
943923class ActionListarAbrigos (Action ):
944924 def name (self ):
@@ -1007,12 +987,28 @@ def run(self, dispatcher, tracker, domain):
1007987
1008988 mensagem_final = f"Contatos de emergência:\n \n { mensagem } "
1009989 dispatcher .utter_message (text = mensagem_final )
1010-
990+ dispatcher .utter_message (
991+ text = 'Te ajudo em algo mais? Você pode:' ,
992+ buttons = [
993+ {"title" : "Informar um risco" , "payload" : "/informar_risco" },
994+ {"title" : "Situação no Jacaré" , "payload" : "/situacao_no_jacare" },
995+ {"title" : "Encerrar" , "payload" : "/sair" }
996+ ]
997+
998+ )
1011999 except requests .exceptions .RequestException as e :
10121000 dispatcher .utter_message (text = "Não foi possível obter os contatos de emergência no momento." )
10131001 print (f"Erro ao acessar o endpoint: { e } " )
1002+ dispatcher .utter_message (
1003+ text = 'Te ajudo em algo mais? Você pode:' ,
1004+ buttons = [
1005+ {"title" : "Informar um risco" , "payload" : "/informar_risco" },
1006+ {"title" : "Situação no Jacaré" , "payload" : "/situacao_no_jacare" },
1007+ {"title" : "Encerrar" , "payload" : "/sair" }
1008+ ]
1009+ )
10141010
1015- return []
1011+ return [FollowupAction ( 'action_listen' ) ]
10161012
10171013# class ActionBuscarDicas(Action):
10181014# def name(self):
0 commit comments