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)”




9 comentários

Reputação 5

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


Eu tive que trocar uma vez para funcionar.

Reputação 5

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

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 😕

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.

Reputação 5

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

Reputação 7

Olá @Adao_Dias


O BLiP permite 1000 operações por script:


Estranho. fui validar e retorna 504 dados.

Reputação 7

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.

compreendi. obrigado.

Comente