Tratar retorno de variável push

Alô pessoal, boa tarde!

Me baseei bastante nesse post e fiz uma variável que soma vários inputs (tipo um “carrinho de compras” de mensagens).

No geral funcionou direitinho, agora minha dúvida é mais “estética”. Quando eu puxo a variável no fluxo, ela aparece assim:

{“Descrição”:[“mensagem 1”,“mensagem 2”,“mensagem 3”,“etc…”]}

1. Aqueles {} inicial e final deveriam estar ali mesmo, ou eu acabei colocando a mais em algum script?

2. Teria alguma maneira de tratar esse retorno para ele aparecer no fluxo como uma lista? P.ex., ao invés de

{“Descrição”:[“mensagem 1”,“mensagem 2”,“mensagem 3”,“etc…”]}

obter

**Descrição: **
"mensagem 1",
"mensagem 2",
"mensagem 3",
"etc…"?

2 Curtidas

posso estar errado mas se mandar \n no fim de cada variável é sucesso

Ei Pedro!
Então, no meu caso não tem como sei se tem como. Usei os scripts

function run() {
var descricaoP = {
“Descrição”: []
};
return descricaoP;
}

E depois

function run(descricaoP, input) {
var descricao = JSON.parse(descricaoP);
descricao.Descrição.push(input);
return descricao;

E depois salvei a variável {{descricao}}. Então na verdade essa estrutura “mensagem1”, “mensagem 2”, etc só aparece quando puxo a variável {{descricao}} no fluxo, mas não nos scripts onde eu possa dar \n

1 Curtida

PERA EU RESPONDI SEM LER VOU VER DIREITO acho que vai ter que quebrar a variavel

2 Curtidas

consegue mostra um retorno do que vem escrito por favor ?

1 Curtida

Oi Lucas, desculpa a demora!

Então, se eu chamar a variável no fluxo aparece assim:

Não tem taaaaanto problema, porque na real essa info vai apenas no meu e-mail de controle, não vai ser mostrado pro cliente (coloquei ela ali no fluxo só pra testar). Mas né, não custa tentar :woman_shrugging:

Olá @Fernanda_Oliveira_de, tudo bem?

Você está enviando esse objeto direto no bloco de texto ou está criando um conteúdo dinâmico?

Você pode adicionar o \n na hora de adicionar o input:

function run(descricaoP, input) {
   var descricao = JSON.parse(descricaoP);
   descricao.Descrição.push(input + '\n');
   return descricao;
}

O ideal é que você crie uma string com as mensagens, para não ficar exibindo esses { e ].

function run(descricao){
   var msg= "";
   descricao.Descrição.forEach( function (mensagem){
	  msg = msg.concat(mensagem, '\n');
   });
  return msg; 
}
2 Curtidas

Oi @Bruno, tudo joia?

Estou enviando esse objeto direto no bloco de texto.

Testei aqui esse novo código que você mandou, mas ele interrompeu meu fluxo. Vou colar aqui o que o debug disse:

Failed: ExecuteScript action in 2 milliseconds

order: 0

type: “ExecuteScript”

parsedSettings: {“function”:“run”,“source”:“function run(descricaoP){\n var msg = “”;\n descricao.Descrição.forEach(funcion(mensagem){\n msg = msg.concat(mensagem, ‘\n’);\n });\n return msg;\n}”,“inputVariables”:[“descricaoP”,“input.content”],“outputVariable”:“descricao”}

continueOnError: false

timestamp: “2021-02-08T23:05:57.657Z”

elapsedMilliseconds: 2

error: “System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter ‘column’)\nActual value was -29.\n at Esprima.Position.ThrowArgumentOutOfRangeException(String name, Int32 column)\n at Esprima.Position…ctor(Int32 line, Int32 column)\n at Esprima.ErrorHandler.CreateError(Int32 index, Int32 line, Int32 col, String description)\n at Esprima.JavaScriptParser.UnexpectedTokenError(Token token, String message)\n at Esprima.JavaScriptParser.ThrowUnexpectedToken(Token token, String message)\n at Esprima.JavaScriptParser.IsolateCoverGrammar[T](Func1 parseFunction)\n at Esprima.JavaScriptParser.ParseArguments()\n at Esprima.JavaScriptParser.ParseLeftHandSideExpressionAllowCall()\n at Esprima.JavaScriptParser.InheritCoverGrammar[T](Func1 parseFunction)\n at Esprima.JavaScriptParser.ParseUpdateExpression()\n at Esprima.JavaScriptParser.ParseUnaryExpression()\n at Esprima.JavaScriptParser.InheritCoverGrammar[T](Func1 parseFunction)\n at Esprima.JavaScriptParser.ParseExponentiationExpression()\n at Esprima.JavaScriptParser.InheritCoverGrammar[T](Func1 parseFunction)\n at Esprima.JavaScriptParser.ParseBinaryExpression()\n at Esprima.JavaScriptParser.InheritCoverGrammar[T](Func1 parseFunction)\n at Esprima.JavaScriptParser.ParseConditionalExpression()\n at Esprima.JavaScriptParser.ParseAssignmentExpression()\n at Esprima.JavaScriptParser.IsolateCoverGrammar[T](Func1 parseFunction)\n at Esprima.JavaScriptParser.ParseExpression()\n at Esprima.JavaScriptParser.ParseLabelledStatement()\n at Esprima.JavaScriptParser.ParseStatement()\n at Esprima.JavaScriptParser.ParseStatementListItem()\n at Esprima.JavaScriptParser.ParseFunctionSourceElements()\n at Esprima.JavaScriptParser.ParseFunctionDeclaration(Boolean identifierIsOptional)\n at Esprima.JavaScriptParser.ParseStatementListItem()\n at Esprima.JavaScriptParser.ParseScript(Boolean strict)\n at Jint.Engine.Execute(String source, ParserOptions parserOptions)\n at Jint.Engine.Execute(String source)\n at Take.Blip.Builder.Actions.ExecuteScript.ExecuteScriptAction.ExecuteAsync(IContext context, ExecuteScriptSettings settings, CancellationToken cancellationToken)\n at Takenet.Iris.Application.TemplateHosting.Templates.Builder.MetricsActionDecorator.ExecuteAsync(IContext context, JObject settings, CancellationToken cancellationToken) in /usr/app/src/Applications/Takenet.Iris.Application.TemplateHosting/Templates/Builder/MetricsActionDecorator.cs:line 66\n at Takenet.Iris.Application.TemplateHosting.Templates.Builder.TracedActionDecorator.ExecuteAsync(IContext context, JObject settings, CancellationToken cancellationToken) in /usr/app/src/Applications/Takenet.Iris.Application.TemplateHosting/Templates/Builder/TracedActionDecorator.cs:line 33\n at Take.Blip.Builder.FlowManager.ProcessActionsAsync(LazyInput lazyInput, IContext context, Action[] actions, ICollection`1 actionTraces, CancellationToken cancellationToken)”