[Resolvido] Problema com o BLIP script

estou recebendo em um script um array e uma variavel string. ao tentar percorrer essa array e mesclar os valores em uma string ocorre um erro que não estou conseguindo localizar.

Codigo
function run(nomeModelo, models) {
    
   var models = JSON.parse(models);
    var modelstr = "";
    
   models.forEach( model => {
        modelstr += model.model_nickname;
    }); 
    
  return  modelstr;
}

ao executar este bloco o debug acusa:

Error

order: 0
type: “ExecuteScript”
parsedSettings: {“function”:“run”,“source”:"\nfunction run(nomeModelo, models) {\n var models = JSON.parse(models);\n var modelstr = “”;\n models.forEach( model => {\n modelstr += model.model_nickname;\n }); \n return modelstr;\n}",“inputVariables”:[“nomemodelo”,“models”],“outputVariable”:“modelslist”}
continueOnError: false
timestamp: “2019-11-12T21:32:50.470Z”
elapsedMilliseconds: 3
error: “Jint.Parser.ParserException: Line 5: Unexpected token >\n at Jint.Parser.JavaScriptParser.ThrowError(Token token, String messageFormat, Object[] arguments)\n at Jint.Parser.JavaScriptParser.ParsePrimaryExpression()\n at Jint.Parser.JavaScriptParser.ParseLeftHandSideExpressionAllowCall()\n at Jint.Parser.JavaScriptParser.ParsePostfixExpression()\n at Jint.Parser.JavaScriptParser.ParseUnaryExpression()\n at Jint.Parser.JavaScriptParser.ParseBinaryExpression()\n at Jint.Parser.JavaScriptParser.ParseConditionalExpression()\n at Jint.Parser.JavaScriptParser.ParseAssignmentExpression()\n at Jint.Parser.JavaScriptParser.ParseAssignmentExpression()\n at Jint.Parser.JavaScriptParser.ParseArguments()\n at Jint.Parser.JavaScriptParser.ParseLeftHandSideExpressionAllowCall()\n at Jint.Parser.JavaScriptParser.ParsePostfixExpression()\n at Jint.Parser.JavaScriptParser.ParseUnaryExpression()\n at Jint.Parser.JavaScriptParser.ParseBinaryExpression()\n at Jint.Parser.JavaScriptParser.ParseConditionalExpression()\n at Jint.Parser.JavaScriptParser.ParseAssignmentExpression()\n at Jint.Parser.JavaScriptParser.ParseExpression()\n at Jint.Parser.JavaScriptParser.ParseStatement()\n at Jint.Parser.JavaScriptParser.ParseFunctionSourceElements()\n at Jint.Parser.JavaScriptParser.ParseFunctionDeclaration()\n at Jint.Parser.JavaScriptParser.ParseSourceElements()\n at Jint.Parser.JavaScriptParser.ParseProgram()\n at Jint.Parser.JavaScriptParser.Parse(String code, ParserOptions options)\n at Jint.Engine.Execute(String source)\n at Take.Blip.Builder.Actions.ExecuteScript.ExecuteScriptAction.ExecuteAsync(IContext context, ExecuteScriptSettings settings, CancellationToken cancellationToken)\n at Take.Blip.Builder.FlowManager.ProcessActionsAsync(LazyInput lazyInput, IContext context, Action[] actions, ICollection`1 actionTraces, CancellationToken cancellationToken)”

@Adao_Dias utilize for normal, e verifique se o erro aparece.

Eu tive que trocar uma vez para funcionar.

1 Curtida

Você não está usando o parametro enviado na função.

1 Curtida

Bom dia Igor.
como sugeriu, refiz utilizando “for” como segue abaixo:

Código
function run(models) {
var models = JSON.parse(models);
var modelstr = "";

for(var i =0; i<models.length; i++)
{
    modelstr += models[i].model_nickname;
}
 
return  modelstr;
}

agora retorna um outro erro dizendo:

The maximum number of statements executed have been reached.

Eu sinceramente não consigo entender o erro. não por falta de conhecimento mas porque o código me parece bem simples e claro. ainda sim não to conseguindo resolver :confused:

1 Curtida

Identifiquei o erro.

aparentemente o retorno da minha api estava tão grande que o BLIP não conseguia mergir todos os dados.

Ao fazer uma redução do laço para 30 passos, o problema foi “resolvido”.

@rafaelpa, sabe me dizer qual tamanho máximo que o bot consegue rodar em um laço ?
minha api retornava em torno de 150 itens.

1 Curtida

@Adao_Dias se não me engano o máximo é 100.

Olá @Adao_Dias

O BLiP permite 1000 operações por script:

1 Curtida

Estranho. fui validar e retorna 504 dados.

1 Curtida

Pois é. Levando em consideração que em um laço de repetição como o for, são feitas 2 ou 3 operações por iteração, esses 504 dados estouram o limite de 1000 operações somente nele.

2 Curtidas

compreendi. obrigado.

2 Curtidas