Share via


Remplacer les messages d’erreur par défaut

Vous pouvez masquer les messages d’erreur par défaut de l’analytique incorporée Power BI sur les rapports et afficher plutôt des messages d’erreur personnalisés qui correspondent à la conception de votre application.

Par exemple, vous pouvez remplacer cette boîte de dialogue d’erreur par défaut :

Capture d’écran montrant la boîte de dialogue d’erreur par défaut de l’analytique incorporée Power BI.

Avec cette boîte de dialogue d’erreur personnalisée :

Capture d’écran montrant une boîte de dialogue d’erreur personnalisée.

Comment remplacer les erreurs

Pour utiliser des messages d’erreur personnalisés, masquez d’abord les messages d’erreur d’analytique incorporée Power BI par défaut en définissant la propriété truehideErrors sur l’objet de configuration d’analytique incorporée Power BI. Cette configuration inclut powerbi.embed(element, config) également d’autres paramètres et options. Pour plus d’informations, consultez Configurer les paramètres de rapport.

let config = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: embedReportId,
    permissions: permissions,
    settings: {
        hideErrors: true
    }
};

Lorsque vous masquez les messages d’erreur par défaut, les boîtes de dialogue d’erreur et les messages ne s’affichent plus si des erreurs se produisent. Pour que les utilisateurs de votre application obtiennent des réponses cohérentes et utiles lorsque des erreurs se produisent, vous êtes responsable de la gestion des événements d’erreur.

Pour gérer les erreurs, commencez par obtenir les erreurs en écoutant l’événement error :

report.off("error");
report.on("error", function(event) {
    // Handle errors
});

La level propriété sur l’interface IError vous permet de spécifier les types d’erreurs à gérer :

interface IError {
    message: string;
    detailedMessage?: string;
    errorCode?: string;
    level?: TraceType;
    technicalDetails?: ITechnicalDetails;
}

enum TraceType {
    Information = 0,
    Verbose = 1,
    Warning = 2,
    Error = 3,
    ExpectedError = 4,
    UnexpectedError = 5,
    Fatal = 6,
}

Fatal les erreurs sont le type d’erreur le plus grave, car elles ne répondent pas au rapport. Veillez à gérer les Fatal erreurs pour empêcher les utilisateurs finaux d’être confrontés à des rapports non satisfaits ou rompus sans aucune messagerie d’erreur.

Exemple

L’exemple de code suivant montre comment remplacer les erreurs en écoutant et en gérant les error événements. L’exemple n’affiche pas les fonctions ou error.detailedMessage les newAccessToken fonctions. Implémentez vos propres fonctions lorsque cela est indiqué.

// Embed the loadConfiguration that hides the default errors.
let config = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: embedReportId,
    permissions: permissions,
    settings: {
        hideErrors: true
    }
};

// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];

// Embed the report and display it within the div container.
let report = powerbi.embed(embedContainer, config);

// Set report.off to remove any pre-existing error event handler.
report.off("error");

// Set report.on to add the new error event handler.
report.on("error", function(event) {
    const error = event.detail;

    // If the error level isn't Fatal, log the error and continue.
    if (error.level !== models.TraceType.Fatal) {
        console.error(error);
        return;
    }

    // If the Fatal error is TokenExpired, refresh the token.
    if (error.message === models.CommonErrorCode.TokenExpired) {
        // Implement your own function here.
        let newAccessToken = refreshToken();
        
        // Set the new access token.
        report.setAccessToken(newAccessToken);
    } else {
        // If the error isn't TokenExpired, show the custom
        // dialog with detailed error message in the iframe.
        // Implement your own function here.
        showError(error.detailedMessage);
    }
});

Étapes suivantes