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”)并收到“我们没有找到任何匹配项”是预期的行为。在撰写区域,即使您清除搜索查询,您也会得到结果,但目前在命令栏中它不起作用。这是设计使然。