Cet article vous montre les étapes de stockage de votre rapport d'erreur et de plantage de projet Backtrace dans des entités personnalisées brainCloud avec une application Unity intégrant Backtrace.
Étape 1: Créer un webhook avec un script lié depuis la console brainCloud
Connectez-vous à la console brainCloud, sélectionnez une application pour stocker les rapports de backtrace, créez une collection personnalisée, définissez la propriété Owned sur true si vous souhaitez classer les rapports par utilisateurs.
Créez un webhook et liez-le au script suivant. Veuillez modifier le nom
entityType
de votre collection personnalisée et l'identifiant de profil utilisateur par défaut. Consultez ce lien pour configurer un webhook dans brainCloud."use strict";
function main() {
var response = {};
bridge.logInfoJson("Script inputs", data);
var webHookParms = JSON.parse(JSON.stringify(data));
webHookParms.headers = safeMap(data.headers);
webHookParms.parameters = safeMap(data.parameters);
webHookParms.jsonBody = safeMap(data.jsonBody);
webHookParms.jsonBody.attributes = safeMap(data.jsonBody.attributes);
// for the case backtrace error coming but user not logging in yet
// save the log to default user
var profileId = "d5127546-b027-464d-bade-96b1832e97eb";
if (data.jsonBody.attributes.profileId[0][0].length > 5 ){
profileId = data.jsonBody.attributes.profileId[0][0];
}
bridge.logInfo("passed in profileId from backtrace", profileId);
bridge.logInfoJson("Received the webhook start...", data);
var userSession = bridge.getSessionForProfile(profileId);
//store backtrace jsonBody to an owned custom entity
var entityType = "backTraceReport";
var dataJson = {
"fingerprint": data.jsonBody.fingerprint,
"jsonBody": webHookParms.jsonBody
};
var acl = {
"other": 1
};
var timeToLive = null;
var isOwned = true;
var customEntityProxy = bridge.getCustomEntityServiceProxy(userSession);
var postResult = customEntityProxy.createEntity(entityType, dataJson, acl, timeToLive, isOwned);
if (postResult.status == 200) {
response.createdEntityStatus = "successfully create a custom entity with fingerprint " + webHookParms.jsonBody.fingerprint;
}
var logService = bridge.getLogServiceProxy();
logService.logInfo("Webhook [ " + webHookParms.requestUrl + " ] - dumping parameters...", JSON.stringify(webHookParms));
response.jsonResponse = {};
response.message = "Webhook received";
response.jsonResponse.receivedInCCdata = data;
return response;
}
function safeMap(aMap) {
var newMap = {};
var newKey = "";
for (var key in aMap) {
newKey = key.replace(/\./g, "_");
newMap[newKey] = aMap[key];
}
return newMap;
}
main();
Étape 2: Configurer un projet dans Backtrace
Connectez-vous à votre compte de backtrace, créez un projet, puis accédez aux paramètres du projet. Suivez les guides d'intégration pour intégrer Backtrace à votre plateforme. Notre exemple utilise Unity.
Accédez à la section Intégrations de workflow, ajoutez-y le webhook brainCloud.
Ouvrez la section Attribut, ajoutez-y un attribut profileId, nous l'utiliserons dans l'application Unity.
Si votre application utilise l'API de Backtrace, générez-en une à partir de la section des jetons d'API.
Étape 3: Envoyer un rapport de Backtrace depuis l'application Unity
Une fois que vous avez suivi les guides d'intégration de Backtrace pour intégrer Backtrace à votre application Unity, assurez-vous d'ajouter la méthode d'envoi de rapport de Backtrace à chaque rappel d'erreur brainCloud.
public void authError_BCcall(int statusCode, int reasonCode, string statusMessage, object cbObject)
{
AddStatusText("authenticate bc fail \n " + statusMessage);
var report = new BacktraceReport(
message: statusMessage,
attributes: new Dictionary<string, string>() { { "attibutestest", "attibutestestvalue" }, { "profileId", profileId } },
attachmentPaths: new List<string>() { @"file_path_1", @"file_path_2" }
);
_backtraceClient.Send(report);
//_backtraceClient.Send(new Exception(statusMessage));
}