Microsoft Teams Messaging Extension 查询结果调用问题
Microsoft Teams Messaging Extension query result invoke issue
我正在创建一个应用程序,它在 Microsoft Graph 的 Teams 命令栏中显示结果并将其显示给用户。当用户然后单击结果时,我想显示一张自适应卡,其中包含有关所选结果的更具体数据。我正在使用 preview.content.tap
来触发 onSelectItem
函数以获得所选结果的自适应卡,效果很好。我面临的问题是当我想从命令栏中清除所选项目时(单击查看结果的“X”),我希望看到我之前搜索的结果,但我却得到“我们没有”找不到任何匹配项
我能做些什么来保留结果(例如回调函数、缓存),或者可能在没有用户进一步输入的情况下重新开始搜索?
1. The list of results
2. The "X" in question
3. The result of clicking "X"
我的代码如下:
@PreventIframe("/myMessageExtension/config.html")
export default class MyMessageExtension implements IMessagingExtensionMiddlewareProcessor {
public async onQuery(context: TurnContext, query: MessagingExtensionQuery): Promise<MessagingExtensionResult> {
const results = await getGraphSearchResults(query);
const attachments = results?.map((result: any) => {
const name = result.resource.name ?? result.resource.fields?.title;
const preview = CardFactory.heroCard(name, result.resource.fields.url);
preview.content.tap = { type: 'invoke', value: { type: "SearchResult", result } };
return preview;
});
return Promise.resolve({
type: "result",
attachmentLayout: "list",
attachments
} as MessagingExtensionResult);
}
public async onSelectItem(context: TurnContext, value: { type: string, result: any }): Promise<MessagingExtensionResult> {
if (value.type === "SearchResult") {
const attachment = await getAdaptiveCard(value.result);
return Promise.resolve({
type: "result",
attachmentLayout: "list",
attachments: [attachment]
} as MessagingExtensionResult);
}
return Promise.resolve({
type: "result",
attachmentLayout: "list",
attachments: []
} as MessagingExtensionResult);
}
}
感谢任何帮助或指导,
谢谢
当您从命令栏中清除所选项目(单击查看结果的“X”)并收到“我们没有找到任何匹配项”是预期的行为。在撰写区域,即使您清除搜索查询,您也会得到结果,但目前在命令栏中它不起作用。这是设计使然。
我正在创建一个应用程序,它在 Microsoft Graph 的 Teams 命令栏中显示结果并将其显示给用户。当用户然后单击结果时,我想显示一张自适应卡,其中包含有关所选结果的更具体数据。我正在使用 preview.content.tap
来触发 onSelectItem
函数以获得所选结果的自适应卡,效果很好。我面临的问题是当我想从命令栏中清除所选项目时(单击查看结果的“X”),我希望看到我之前搜索的结果,但我却得到“我们没有”找不到任何匹配项
我能做些什么来保留结果(例如回调函数、缓存),或者可能在没有用户进一步输入的情况下重新开始搜索?
1. The list of results
2. The "X" in question
3. The result of clicking "X"
我的代码如下:
@PreventIframe("/myMessageExtension/config.html")
export default class MyMessageExtension implements IMessagingExtensionMiddlewareProcessor {
public async onQuery(context: TurnContext, query: MessagingExtensionQuery): Promise<MessagingExtensionResult> {
const results = await getGraphSearchResults(query);
const attachments = results?.map((result: any) => {
const name = result.resource.name ?? result.resource.fields?.title;
const preview = CardFactory.heroCard(name, result.resource.fields.url);
preview.content.tap = { type: 'invoke', value: { type: "SearchResult", result } };
return preview;
});
return Promise.resolve({
type: "result",
attachmentLayout: "list",
attachments
} as MessagingExtensionResult);
}
public async onSelectItem(context: TurnContext, value: { type: string, result: any }): Promise<MessagingExtensionResult> {
if (value.type === "SearchResult") {
const attachment = await getAdaptiveCard(value.result);
return Promise.resolve({
type: "result",
attachmentLayout: "list",
attachments: [attachment]
} as MessagingExtensionResult);
}
return Promise.resolve({
type: "result",
attachmentLayout: "list",
attachments: []
} as MessagingExtensionResult);
}
}
感谢任何帮助或指导,
谢谢
当您从命令栏中清除所选项目(单击查看结果的“X”)并收到“我们没有找到任何匹配项”是预期的行为。在撰写区域,即使您清除搜索查询,您也会得到结果,但目前在命令栏中它不起作用。这是设计使然。