嵌入独立的 Q&A 视觉对象

提示

请尝试在 power BI Embedded Analytics Playground的 浏览 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 使用的数据架构的数据集 ID。 可以使用 数据集 API 来获取数据集。 两个示例包括:

    注意

    目前只能配置一个数据集。

  • embedUrl - 要嵌入的 Q&A 数据集的 URL。 此 URL 将成为包含嵌入式 Q&A 的 HTML iframe 元素的源。 具体而言,API 将 URL 分配给 iframesrc 属性。 可以使用 数据集 API 来获取此 URL。 两个示例包括:

  • question - 确定 API 显示的可视化效果的问题。 此属性仅在结果模式下使用。

  • tokenType - 用于访问要嵌入的 Power BI 数据的令牌类型。

    • 如果要为组织嵌入内容(用户拥有数据),请使用 models.TokenType.Aad
    • 如果要为客户嵌入内容(应用拥有数据),请使用 models.TokenType.Embed

    有关详细信息,请参阅 了解不同的嵌入解决方案

  • type - 要嵌入的内容类型。 将 'qna' 用于 Q&A。

  • 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);

更改显示的问题

如果使用 ResultOnlyviewMode 并提供问题,则可以使用 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");

捕获用户的问题

如果使用 InteractiveviewMode,API 可以在显示视觉对象更改时通知应用。 每当视觉对象更改以响应更新的输入查询时,嵌入组件都会发出 visualRendered 事件。 如果应用侦听此类事件,则代码可以响应新查询。

例如,可以记录用户输入的问题。 稍后可能会出于 AI 或遥测目的使用这些问题。

使用以下代码行侦听 visualRendered 事件:

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

有关侦听事件的详细信息,请参阅 如何处理事件

注意事项和限制

嵌入式 Q&A 使用数据架构。 目前只能配置一个架构,而不能配置多个架构。