Typescript Microsoft团队消息传递扩展查询结果调用问题

Typescript Microsoft团队消息传递扩展查询结果调用问题,typescript,botframework,microsoft-teams,Typescript,Botframework,Microsoft Teams,我正在创建一个应用程序,在Microsoft图形的团队命令栏中显示结果,并将结果显示给用户。当用户单击一个结果时,我想显示一个自适应卡,其中包含所选结果的更具体数据。我正在使用preview.content.点击,以触发onSelectItem功能,获得所选结果的自适应卡,效果良好。我面临的问题是,当我想从命令栏中清除所选项目(单击查看结果的“X”)时,我希望看到以前搜索的结果,但得到的却是“我们没有找到任何匹配项” 我可以做些什么来保留结果(例如回调函数、缓存),或者在没有用户进一步输入的情况

我正在创建一个应用程序,在Microsoft图形的团队命令栏中显示结果,并将结果显示给用户。当用户单击一个结果时,我想显示一个自适应卡,其中包含所选结果的更具体数据。我正在使用
preview.content.点击
,以触发
onSelectItem
功能,获得所选结果的自适应卡,效果良好。我面临的问题是,当我想从命令栏中清除所选项目(单击查看结果的“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);
    }
}
@PreventIframe(“/myMessageExtension/config.html”)
导出默认类MyMessageExtension实现IMessagingExtensionMiddlewareProcessor{
公共异步onQuery(上下文:TurnContext,查询:MessagingExtensionQuery):承诺{
const results=等待getGraphSearchResults(查询);
常量附件=结果?.map((结果:任意)=>{
const name=result.resource.name??result.resource.fields?.title;
const preview=CardFactory.heroCard(名称、结果、资源、字段、url);
preview.content.tap={type:'invoke',value:{type:'SearchResult',result};
返回预览;
});
还愿({
键入:“结果”,
附件布局:“列表”,
附件
}作为MessagingExtensionResult);
}
公共异步onSelectItem(上下文:TurnContext,值:{type:string,结果:any}):承诺{
如果(value.type==“SearchResult”){
常量附件=等待getAdaptiveCard(value.result);
还愿({
键入:“结果”,
附件布局:“列表”,
附件:[附件]
}作为MessagingExtensionResult);
}
还愿({
键入:“结果”,
附件布局:“列表”,
附件:[]
}作为MessagingExtensionResult);
}
}
感谢您的帮助或指导


当您从命令栏中清除所选项目(单击查看结果的“X”)并获得“我们未找到任何匹配项”时,将表示感谢。在合成区域中,即使清除搜索查询,您也会得到结果,但当前在命令栏中它将不起作用。这是经过设计的。

Hi@Beier22-如果在清单中将initialRun设置为true,则在调用搜索命令后,您会立即收到调用消息。请仔细阅读此内容以了解更多信息。Hi@Mamatha MSFT,感谢您的回复,initialRun在清单中已设置为true,它将第一次运行,但在我清除所选结果时不会运行。