将Azure搜索与Virtual Assistant Template Bot集成

时间:2019-06-26 16:13:36

标签: c# azure botframework azure-search

我目前有一个功能齐全的基于虚拟助手模板的聊天机器人,并且具有附加的技能。我的目标是将该技能用作一种搜索功能,可以在CosmosDB中查找资源并将其拉回以供用户使用。经过一些研究,我相信最好的方法是使用Azure搜索来检索所说的信息。从我在Virtual Assistant模板文档中看到的与Azure搜索的集成绝对应该是可能的...我只是没有找到任何有关此操作的示例或教程。如果有人知道如何创建天蓝色搜索资源并将其集成到bot中,或者知道可以告诉您如何执行此操作的资源,请告诉我!

2 个答案:

答案 0 :(得分:0)

对于您的情况,要做的事情概述是:

  1. 创建一个Azure search service
  2. 在其中创建一个indexer,它将指向您的Cosmos DB数据源。以下是特定于您如何在Cosmos DB中爬网数据的文档:https://docs.microsoft.com/en-us/azure/search/search-howto-index-cosmosdb
  3. 一旦索引器运行并已对数据进行爬网,就可以从搜索索引中的应用中进行搜索。

没有关于与机器人集成的端到端教程,但是这里有一个Azure搜索教程,它显示了通过SQL数据库进行爬网然后使用全文本搜索进行搜索的完整方案。 https://docs.microsoft.com/en-us/azure/search/search-indexer-tutorial

除了上面链接中Cosmos DB Indexer的详细信息替换有关SQL indexer的部分之外,您应该能够遵循此处的大多数指南。

答案 1 :(得分:0)

我想进行类似的搜索(仅在AzureBlob中而不是Cosmos DB中)。我正在将sdk v4用于我的bot框架和Visual Studio2019。我正在尝试通过以下代码调用该服务:

    public ISearchIndexClient CreateSearchIndexClient()
    {
        string searchServiceName = "MySearchServiceName";
        string queryApiKey = "MySearchServiceKey";
        string indexName = "MyIndexName";

        SearchIndexClient indexClient = new SearchIndexClient(searchServiceName, indexName, new SearchCredentials(queryApiKey));
        return indexClient;
    }

    public async Task StartAsync(ITurnContext turnContext, string searchText){
        ISearchIndexClient infoClient = CreateSearchIndexClient();

        string indexname = infoClient.IndexName;
        DocumentSearchResult<Document> results = infoClient.Documents.Search(searchText);

        await turnContext.SendActivityAsync(MessageFactory.Text($"Here should be the results: {results} \n...and then my index: {indexname}."));
    }

它可以正常运行,因此可以使用它。但是它永远不会在StartAsync上显示该消息。如果有人看到我想念的东西,请先谢谢你。