嵌入独立的 Q&A 视觉对象
提示
请尝试在 power BI Embedded Analytics Playground的
本文介绍在应用程序中嵌入独立 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 使用的数据架构的数据集 ID。 可以使用 数据集 API 来获取数据集。 两个示例包括:注意
目前只能配置一个数据集。
embedUrl
- 要嵌入的 Q&A 数据集的 URL。 此 URL 将成为包含嵌入式 Q&A 的 HTMLiframe
元素的源。 具体而言,API 将 URL 分配给iframe
的src
属性。 可以使用 数据集 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);
更改显示的问题
如果使用 ResultOnly
viewMode
并提供问题,则可以使用 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");
捕获用户的问题
如果使用 Interactive
viewMode
,API 可以在显示视觉对象更改时通知应用。 每当视觉对象更改以响应更新的输入查询时,嵌入组件都会发出 visualRendered
事件。 如果应用侦听此类事件,则代码可以响应新查询。
例如,可以记录用户输入的问题。 稍后可能会出于 AI 或遥测目的使用这些问题。
使用以下代码行侦听 visualRendered
事件:
qna.on("visualRendered", function(event) {
...
});
有关侦听事件的详细信息,请参阅 如何处理事件。
注意事项和限制
嵌入式 Q&A 使用数据架构。 目前只能配置一个架构,而不能配置多个架构。