Pessoal, bom dia!
Estou sofrendo com uma configuração. Toda vez que executo o disparo de uma msg com a função change user state eu ainda caio no bloco de início e não no bloco específico!!
Pelo que os logs indicam, mesmo após a mudança de estado (que é executada com sucesso), o bot continua movendo o usuário para o estado "Boas vindas" (stateId: welcome
), o que sugere que há algo no fluxo do bot ou nas configurações que está sobrescrevendo a mudança de estado realizada via API.
Os stateid
e o flowIdentifier
estão conferidos e correspondem ao id do bloco e ao id do fluxo. Um disparo manual via curl foi enviado e a mensagem caiu no bloco correto. Porém, não através do seguinte script.
Basicamente o script está montado neste formato:
// Define o payload para enviar a mensagem
// Envia a mensagem
// Adiciona um pequeno atraso para garantir que a mensagem foi processada
// Define o payload para alterar o estado do usuário
// Altera o estado do usuário
function sendBlipMessage() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
// Iterate through all rows in the sheet
for (var i = 1; i < data.length; i++) {
var row = datagi];
var phoneNumber = row[2]; // assuming the phone number is in the third column (index 2)
var status = row(5]; // assuming the status is in the sixth column (index 5)
if (status !== "Enviado") {
var identificadorCliente = phoneNumber + "@wa.gw.msging.net";
// Define the payload for sending message
var payloadMessage = {
"id": generateUUID(),
"to": identificadorCliente,
"type": "application/json",
"content": {
"type": "template",
"template": {
"name": "sulamericadental1",
"language": {
"code": "pt_BR",
"policy": "deterministic"
},
"components": ]
}
}
};
var optionsMessage = {
"method" : "post",
"contentType": "application/json",
"headers": {
"Authorization": "Key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"payload" : JSON.stringify(payloadMessage)
};
// Send the message
var responseMessage = UrlFetchApp.fetch("https://http.msging.net/messages", optionsMessage);
var responseMessageText = responseMessage.getContentText();
Logger.log("Response Message: " + responseMessageText);
if (responseMessage.getResponseCode() === 202) {
// Adiciona um pequeno atraso para garantir que a mensagem foi processada
Utilities.sleep(2000); // Espera 2 segundos
// Define the payload for changing user state
var payloadChangeState = {
"id": generateUUID(),
"to": "[email protected]",
"method": "set",
"uri": "/contexts/" + identificadorCliente + "/stateid@d62e756b-512a-4c27-8901-eaa6b1de0f79",
"type": "text/plain",
"resource": "4e141eab-f0ba-42fa-8ddd-4cf58d0561f0"
};
var optionsChangeState = {
"method" : "post",
"contentType": "application/json",
"headers": {
"Authorization": "Key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"payload" : JSON.stringify(payloadChangeState)
};
// Change the user state
var responseChangeState = UrlFetchApp.fetch("https://http.msging.net/commands", optionsChangeState);
var responseChangeStateText = responseChangeState.getContentText();
Logger.log("Response Change State: " + responseChangeStateText);
if (responseChangeState.getResponseCode() === 200) {
// Mark as "Enviado" in column F
sheet.getRange(i + 1, 6).setValue("Enviado"); // i+1 because rows in Sheets are 1-indexed
} else {
Logger.log("Failed to change user state. Status code: " + responseChangeState.getResponseCode());
}
} else {
Logger.log("Failed to send message. Status code: " + responseMessage.getResponseCode());
}
}
}
}
function generateUUID() { // Generate a unique identifier
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/xxy]/g, function(c) {
var r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c=='x' ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
}
Estou fazendo algo errado? Isso é comum de acontecer?