內嵌獨立 Q&視覺效果
提示
請嘗試在 Power BI Embedded Analytics 遊樂場的 探索我們的 API 一節中內嵌 Q&A 或實驗用戶端 API。
本文涵蓋在應用程式中內嵌獨立 Q&A 視覺效果的步驟。
這項功能可讓使用者提出問題。 然後,他們會以圖表或圖表等視覺效果形式立即收到答案。 若要深入瞭解這項功能,請參閱 在Power BI中建立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 會成為 HTMLiframe
專案的來源,其中包含內嵌的 Q&A。 具體來說,API 會將URL指派給iframe
的src
屬性。 您可以使用 資料集 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);
變更顯示的問題
如果您使用 viewMode
ResultOnly
並提供問題,您可以使用 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");
擷取用戶的問題
如果您使用 viewMode
Interactive
,API 可以在顯示視覺效果變更時通知您的應用程式。 每當視覺效果變更以回應更新的輸入查詢時,內嵌元件就會發出 visualRendered
事件。 如果您的 app 會接聽這種類型的事件,您的程式代碼可以回應新的查詢。
例如,您可以記錄使用者輸入的問題。 您稍後可能會針對 AI 或遙測目的使用這些問題。
使用類似這幾行的程式代碼來接聽 visualRendered
事件:
qna.on("visualRendered", function(event) {
...
});
如需接聽事件的詳細資訊,請參閱 如何處理事件。
考慮和限制
內嵌 Q&A 會使用資料架構。 目前您只能設定一個架構,而不是多個架構。