Skip to main content

Boa tarde estou tentando chamar uma função do resources dentro do bot mas esta dando problema e não consigo descobrir pq esta dando erro, eu conferi todas as variáveis estão retornando corretamente, inclusive testei ela no vscode e funcionou certinho, mas no blip nao consigo fazer funcionar :

 

Chamada da função no Blip : 

function run(fncFGTSSimulate, responseApiPostBatchSimulation, messFGTSSimulationErrors) {

eval(fncFGTSSimulate)

return ProcessBatchSimulation(responseApiPostBatchSimulation, messFGTSSimulationErrors);
}

 

Função que está no resouce : 

function ProcessBatchSimulation(
responseAPIBatchSimulation,
jsonSimulationMessageError
) {
let _returnSimulationErrorNumber = ReturnSimulationErrorNumber(
responseAPIBatchSimulation
);

let _returnSimulationErrorMessage = ReturnSimulationErrorMessage(
_returnSimulationErrorNumber,
jsonSimulationMessageError
);

return _returnSimulationErrorMessage;

function ReturnSimulationErrorNumber(responseAPIBatchSimulation) {
let returnValue = {
detailsCodeError: 0,
filteredArray: "",
};
const messageValorMaior = /é maior do que o permitido para o produto/; // -996
const messageValorMenor = /é menor do que o permitido para o produto/; // -998
const messageNaoNegativo =
/Operação inválida: valor líquido não pode ser negativo/; // -999
let filteredArray = [];

try {
const _responseAPIBatchSimulation = JSON.parse(
responseAPIBatchSimulation
);
const arraySize = _responseAPIBatchSimulation.length;
for (let i = 0; i < arraySize; i++) {
let obj = _responseAPIBatchSimulation[i];

// Erros de FGTS_DATA_INTEGRATION_ERROR
if (
obj.hasOwnProperty("code") &&
obj.code === "FGTS_DATA_INTEGRATION_ERROR"
) {
if (
obj.hasOwnProperty("details") &&
obj.details.hasOwnProperty("code")
) {
returnValue.detailsCodeError = obj.details.code;
} else {
returnValue.detailsCodeError = -1; // Erro Não tratado
}
continue;
// Erros de INVALID_AMORTIZATION_QUERY
} else if (
obj.hasOwnProperty("code") &&
obj.code === "INVALID_AMORTIZATION_QUERY"
) {
if (
obj.hasOwnProperty("message") &&
messageValorMenor.test(obj.message)
) {
returnValue.detailsCodeError = -998;
} else if (
obj.hasOwnProperty("message") &&
messageNaoNegativo.test(obj.message)
) {
returnValue.detailsCodeError = -999;
} else if (
obj.hasOwnProperty("message") &&
messageValorMaior.test(obj.message)
) {
returnValue.detailsCodeError = -996;
} else {
returnValue.detailsCodeError = -1;
}
continue;
} else if (
// Se o objeto possuir esse modelo é porque está correto
obj.hasOwnProperty("value") &&
obj.value.hasOwnProperty("initialValue") &&
obj.value.hasOwnProperty("liquidValue") &&
obj.value.hasOwnProperty("termInMonths")
) {
filteredArray.push(obj);
} else {
// Erro Ainda Não Tratado
returnValue.detailsCodeError = -1;
continue;
}
}

if (filteredArray.length > 0) {
returnValue.filteredArray = filteredArray;
return returnValue;
} else {
return returnValue;
}
} catch (error) {
return returnValue;
}
}

function ReturnSimulationErrorMessage(
returnProcess,
jsonSimulationMessageError
) {
let messageSelected = {
code: "0",
exit: "Input inesperado",
message: "Input inesperado",
filteredArray: "Input inesperado",
};
const _jsonSimulationMessageError = JSON.parse(jsonSimulationMessageError);

if (
returnProcess.detailsCodeError === 0 &&
returnProcess.filteredArray === ""
) {
return messageSelected;
}

if (returnProcess.filteredArray.length > 0) {
messageSelected.exit = "OK";
messageSelected.message = "OK";
messageSelected.filteredArray = returnProcess.filteredArray;
return messageSelected;
} else if (returnProcess.detailsCodeError.toString() != "0") {
for (let i = 0; i < _jsonSimulationMessageError.length; i++) {
if (
_jsonSimulationMessageError[i].code ===
returnProcess.detailsCodeError.toString()
) {
return (messageSelected = {
code: _jsonSimulationMessageError[i].code,
exit: _jsonSimulationMessageError[i].exit,
message: _jsonSimulationMessageError[i].message,
filteredArray: "Error",
});
}
}
} else {
return messageSelected;
}
}
}

valores dos parametros da função : 

responseAPIBatchSimulation 

[
{
"code": "FGTS_DATA_INTEGRATION_ERROR",
"message": "Não foi possível realizar o cálculo da operação.",
"details": {
"registrationNumber": "32596352363",
"personId": null,
"reason": "Trabalhador não possui adesão ao saque aniversário vigente na data corrente.",
"code": 9
},
"correlationId": "#434b01aec72ac58893f2e968f41fb5af"
},
{
"code": "FGTS_DATA_INTEGRATION_ERROR",
"message": "Não foi possível realizar o cálculo da operação.",
"details": {
"registrationNumber": "32596352363",
"personId": null,
"reason": "Trabalhador não possui adesão ao saque aniversário vigente na data corrente.",
"code": 9
},
"correlationId": "#434b01aec72ac58893f2e968f41fb5af"
}

 

  jsonSimulationMessageError

[
{
"code": "5",
"exit": "ATENDIMENTO",
"message":
"<b>{{contact.extras.userFirstName}}</b>, existe uma Operação Fiduciária em andamento."
},
{
"code": "7",
"exit": "ATENDIMENTO",
"message":
"<b>{{contact.extras.userFirstName}}</b>, verificamos que infelizmente você não habilitou a UY3 no app do FGTS, para dar continuidade é necessário que a <b>habilite no app FGTS</b> em seu celular."
},
{
"code": "8",
"exit": "SAIR",
"message":
"<b>{{contact.extras.userFirstName}}</b>, verificamos que infelizmente você não possui contas de FGTS para antecipação."
},
{
"code": "9",
"exit": "ATENDIMENTO",
"message":
"{{contact.extras.userFirstName}}, verificamos que infelizmente você não possui adesão ao saque aniversário, para dar continuidade é necessário que o habilite no app FGTS em seu celular."
},
{
"code": "10",
"exit": "SAIR",
"message":
"<b>{{contact.extras.userFirstName}}</b>, parece que a Caixa bloqueou seu CPF temporariamente. Isso indica que você fará aniversário em breve ou a Caixa está ajustando informações da sua conta. Aguarde o início do próximo mês para realizar uma nova consulta."
},
{
"code": "35",
"exit": "SAIR",
"message":
"<b>{{contact.extras.userFirstName}}</b>, foram realizadas mudanças cadastrais na sua conta do FGTS que impedem a contratação. Entre em contato com o setor de FGTS da CAIXA."
},
{
"code": "404",
"exit": "SAIR",
"message":
"<b>{{contact.extras.userFirstName}}</b>, você não possui saldo suficiente para realizar uma operação fiduciária agora, mas não se preocupe, faça uma nova simulação no mês que vem para verificarmos uma proposta especial pra você. 😉"
},
{
"code": "665",
"exit": "SAIR",
"message":
"<b>{{contact.extras.userFirstName}}</b>, verificamos que infelizmente você não possui parcelas disponíveis para antecipação."
},
{
"code": "-996",
"exit": "ATENDIMENTO",
"message": "O valor da operação é maior do que o permitido para o produto."
},
{
"code": "-998",
"exit": "SAIR",
"message":
"Olá! No momento você não possui saldo suficiente para a antecipação do FGTS. Não se preocupe, você pode tentar novamente no próximo mês. Estaremos aqui para ajudar quando precisar. 😊"
},
{
"code": "-999",
"exit": "SAIR",
"message":
"<b>{{contact.extras.userFirstName}}</b>, você não possui saldo suficiente para fazer a antecipação agora, mas não se preocupe, faça uma nova simulação no mês que vem para verificarmos uma proposta especial pra você. 😉"
},
{
"code": "-1",
"exit": "ATENDIMENTO",
"message":
"<b>{{contact.extras.userFirstName}}</b>, infelizmente não conseguimos gerar uma simulação."
}
]

Erro : 
 

{
"id": "2641613a-b9b3-48b2-bc46-ed9c23626127",
"inputActions": [
{
"order": 0,
"type": "TrackContactsJourney",
"parsedSettings": {
"previousStateId": "0adc6737-0d85-4828-8d6d-d0feb8b591e0",
"previousStateName": "Converte Date",
"stateId": "2641613a-b9b3-48b2-bc46-ed9c23626127",
"stateName": "[A.1.0.2] Validate POST Api Batch Simulation"
},
"continueOrError": false,
"timestamp": "2024-06-04T17:25:05.3352598+00:00",
"elapsedMilliseconds": 1,
"warning": null,
"error": null
},
{
"order": 0,
"type": "ExecuteScript",
"parsedSettings": {
"function": "run",
"source": "function run(fncFGTSSimulate, responseApiPostBatchSimulation, messFGTSSimulationErrors) {\n\n eval(fncFGTSSimulate)\n\n return ProcessBatchSimulation(responseApiPostBatchSimulation, messFGTSSimulationErrors);\n}",
"inputVariables": [
"fncFGTSSimulate",
"responseApiPostBatchSimulation",
"messFGTSSimulationErrors"
],
"outputVariable": "batchSimulation",
"LocalTimeZoneEnabled": false
},
"continueOrError": false,
"timestamp": "2024-06-04T17:25:05.337235+00:00",
"elapsedMilliseconds": 3,
"warning": null,
"error": "SyntaxError: null"
}
],
"outputActions": [],
"outputs": [],
"extensionData": {
"name": "[A.1.0.2] Validate POST Api Batch Simulation"
},
"timestamp": "2024-06-04T17:25:05.333072+00:00",
"elapsedMilliseconds": 8,
"warning": null,
"error": "Take.Blip.Builder.ActionProcessingException: The processing of the action 'ExecuteScript' has failed\n ---> SyntaxError: null\n --- End of inner exception stack trace ---\n at Take.Blip.Builder.FlowManager.ProcessActionsAsync(LazyInput lazyInput, IContext context, Action[] actions, ICollection`1 actionTraces, State state, CancellationToken cancellationToken)\n at Take.Blip.Builder.FlowManager.ProcessStateInputActionsAsync(State state, LazyInput lazyInput, IContext context, StateTrace stateTrace, CancellationToken cancellationToken)\n at Take.Blip.Builder.FlowManager.ProcessInputAsync(Message message, Flow flow, IContext messageContext, CancellationToken cancellationToken)"
}

 

Descobri qual o problema é que a função armazenada no resources contem comentários e as strings estão com aspas duplas, eu tive que remover os comentários e passar para aspas simples para que executasse corretamente a função.