共用方式為


內嵌獨立 Q&視覺效果

提示

請嘗試在 Power BI Embedded Analytics 遊樂場探索我們的 API 一節中內嵌 Q&A 或實驗用戶端 API。

本文涵蓋在應用程式中內嵌獨立 Q&A 視覺效果的步驟。

這項功能可讓使用者提出問題。 然後,他們會以圖表或圖表等視覺效果形式立即收到答案。 若要深入瞭解這項功能,請參閱 在Power BI中建立Q&A 視覺效果。

顯示內嵌Q和A功能的動畫影像。當使用者修改問題時,視覺效果數據就會變更。

如何內嵌 Q&A

當您在應用程式中內嵌 Power BI 內容時,您可以使用組態物件來定義您要內嵌的內容,以及指定內容的設定。 然後將該對象傳遞至 API。

當您內嵌 Q&A 時,請使用類型為 ILoadQnaConfiguration的組態物件:

interface ILoadQnaConfiguration {
    accessToken: string;
    datasetIds: string[];
    embedUrl: string;
    question?: string; 
    tokenType?: models.TokenType;
    type: string;
    viewMode?: models.QnaMode;
}

此介面包含下列屬性:

  • accessToken - 可讓您存取您要內嵌的 Power BI 數據令牌。 若要深入瞭解存取令牌,請參閱 瞭解不同的內嵌解決方案

  • datasetIds - 定義內嵌 Q&A 使用之資料架構的數據集識別碼。 您可以使用 資料集 API 來取得資料集。 兩個範例包括:

    注意

    目前您只能設定一個數據集。

  • embedUrl - 您要內嵌之 Q&A 的數據集 URL。 此 URL 會成為 HTML iframe 專案的來源,其中包含內嵌的 Q&A。 具體來說,API 會將URL指派給 iframesrc 屬性。 您可以使用 資料集 API 來取得此 URL。 兩個範例包括:

  • question - 決定 API 所顯示視覺效果的問題。 這個屬性只會用於結果模式。

  • tokenType - 可讓您存取所內嵌之 Power BI 數據的令牌類型。

    • 如果您要內嵌組織(使用者擁有數據),請使用 models.TokenType.Aad
    • 如果您要為客戶內嵌 models.TokenType.Embed (應用程式擁有資料)。

    如需詳細資訊,請參閱 瞭解不同的內嵌解決方案

  • type - 您要內嵌的內容種類。 針對 Q&A 使用 'qna'

  • viewMode - 內嵌 Q&A 的模式。 有兩種模式可供使用:

    • Interactive - 使用者可以輸入問題。 API 會顯示問題並據以更新視覺效果。
    • ResultOnly 您提供特定問題。 API 會顯示該問題及其視覺效果。

此範例示範如何內嵌 Q&A:

// Set up the configuration object that determines what to embed and how to embed it.
let embedConfiguration = {
    accessToken: anAccessToken,
    datasetIds: [aDatasetID],
    embedUrl: anEmbedUrl,
    question: aTextQuestion,
    tokenType: aTokenType,
    type: 'qna',
    viewMode: QnaMode.ResultOnly
};
 
// Get a reference to the HTML element that contains the embedded Q&A.
let embedContainer = $('#embedContainer')[0];
 
// Embed the Q&A.
let visual = powerbi.embed(embedContainer, embedConfiguration);

變更顯示的問題

如果您使用 viewModeResultOnly 並提供問題,您可以使用 setQuestion 方法來變更顯示的問題。 然後,API 會變更顯示的視覺效果。

您可以針對常見問題清單使用此方法。 當使用者經歷問題時,您可以在內嵌項目內顯示答案。

PowerBI JavaScript Qna 類別setQuestion 方法定義為:

setQuestion(question: string): Promise<void>

question 參數包含文字格式的問題。

此範例示範如何使用此方法來變更顯示的問題:

// Get a reference to the embedded Q&A HTML element.
let qnaContainer = $('#qnaContainer')[0];

// Get a reference to the embedded Q&A.
let qna = powerbi.get(qnaContainer);

// Change the displayed question.
await qna.setQuestion("This year sales");

擷取用戶的問題

如果您使用 viewModeInteractive,API 可以在顯示視覺效果變更時通知您的應用程式。 每當視覺效果變更以回應更新的輸入查詢時,內嵌元件就會發出 visualRendered 事件。 如果您的 app 會接聽這種類型的事件,您的程式代碼可以回應新的查詢。

例如,您可以記錄使用者輸入的問題。 您稍後可能會針對 AI 或遙測目的使用這些問題。

使用類似這幾行的程式代碼來接聽 visualRendered 事件:

qna.on("visualRendered", function(event) {
    ...
});

如需接聽事件的詳細資訊,請參閱 如何處理事件

考慮和限制

內嵌 Q&A 會使用資料架構。 目前您只能設定一個架構,而不是多個架構。