[Resolvido ] Erro na execução do script


#1

Olá,

estou fazendo alguns testes com a plataforma e estou tendo erros na execução do script. Quero fazer um quiz simples onde o bot vai fazendo algumas perguntas e computando o score para respostas corretas.

Entendi que a melhor forma de fazer isso era criar uma variável score na entrada da primeira pergunta que seria incrementada a cada nova pergunta ao checar pela resposta correta. Ao mesmo tempo a documentação do produto não cobre essa parte e não há exemplos de uso de scripts.

O código que estou utilizando é semelhante a esse:

function run(inputVariable1, inputVariable2) {
                if (inputVariable1 === 'string da resposta') {
                    return score++
                }
            }

E o erro é o seguinte:

Failed: ExecuteScript action in 2 milliseconds
order: 0

type: "ExecuteScript"

parsedSettings: {"function":"run","source":"/**\n * All input variables needs to be passed as function param;\n * Objects received as param needs to be parsed. Ex.: JSON.parse(inputVariable1);\n * Objects returned needs to be stringfied. Ex.: JSON.stringify(inputVariable1);\n **/\n function run(input.content, score) {\n if (input.content === 'Capitão Marvel') {\n score++\n }\n }","inputVariables":["input.content","score"],"outputVariable":"score"}

timestamp: "2019-02-19T20:13:14.955Z"

elapsedMilliseconds: 2

error: "Jint.Parser.ParserException: Line 6: Unexpected token .\n at Jint.Parser.JavaScriptParser.ThrowError(Token token, String messageFormat, Object[] arguments)\n at Jint.Parser.JavaScriptParser.ParseParams(Token firstRestricted)\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)"

Estou listando as variáveis na entrada, mas para mim não fica claro se posso usar o nome das variáveis como argumentos na função que vai ser executada no script ou se sou obrigado a usar inputVariable1.

Eu tb não precisaria utilizar ter uma variável de saída, já que eu apenas incrementaria uma variável já existente anteriormente. Mesmo assim, estou nomeando a variável de saída com o mesmo nome de score.

Já tentei de várias formas, mas a solução não está clara para mim. Fico no aguardo de uma instrução de vocês.


#3

@Kemel_Zaidan,

fiz um exemplo que funciona. Tenta usar ele pra ver se te atende.


#5

Funcionou! Obrigado. :slight_smile: