Доступ к документам Sharepoint из основного приложения .NET (версия 4 для платформы ботов) - PullRequest
1 голос
/ 05 июля 2019

Я использую C # (.NET Core) с Bot Framework v4 для разработки службы бота.Я новичок в Bot Framework.

Суть проблемы заключается в следующем: - Подавать большие пальцы вверх и вниз в конце каждого сообщения для обратной связи.- Когда пользователь нажимает на большие пальцы вниз, получить соответствующие документы из Sharepoint.- Показать список загруженных документов в виде карусели в окне чата.

Я смог сделать это с помощью версии 3 .NET SDK.Однако у меня возникают проблемы с его репликацией в версии 4 платформы - у нас нет пакета NuGet для SharePoint CSOm, доступного для .NET Core.следовательно добавил dlls как предложено в https://rajujoseph.com/getting-net-core-and-sharepoint-csom-play-nice/

public static async Task<List<SearchContent>> SearchContent(string queryText, short resultCount)
    {
        List<SearchContent> searchResult = new List<SearchContent>();
        string SiteUrl = "https:--";
        try
        {
            using (ClientContext clientContext = new ClientContext(SiteUrl))
            {
               // AccessPolicyEntry ape= getAccessPolicies();

                if (SpUserName == string.Empty || SpUserPass == string.Empty)
                {
                    await GetKeyVaultSecret();
                }

                SecureString securePassword = GetSecureString(SpUserPass);
                clientContext.Credentials = new SharePointOnlineCredentials(SpUserName, securePassword);
                KeywordQuery keywordQuery = new KeywordQuery(clientContext);
                keywordQuery.RowLimit = 5;
                keywordQuery.SummaryLength = 3000;
                keywordQuery.QueryText = queryText + " site:\"https://----/Deploy\"";
                SearchExecutor searchExecutor = new SearchExecutor(clientContext);
                ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
                clientContext.ExecuteQuery();
                short counter = 0;
                foreach (var oResultRow in results.Value[0].ResultRows)
                {
                    if (counter < resultCount)
                    {
                        counter++;
                        string optimizeSummary = OptimizeContent(queryText, oResultRow["HitHighlightedSummary"].ToString());
                        searchResult.Add(new SearchContent() { Title = oResultRow["Title"].ToString(), Summery = optimizeSummary, Path = oResultRow["Path"].ToString() });
                    }
                    else
                    {
                        break;
                    }   
                }
            }
        }
        catch (Exception ex)
        {
            searchResult = null;
            ExceptionUtility.LogException(ex, "SharePointSearchService.SearchContent");
        }
        return searchResult;

    }

1 Ответ

1 голос
/ 13 июля 2019

Используйте Microsoft.SharePoint.Client.Runtime.Portable.dll, а не Microsoft.SharePoint.Client.Runtime.Windows.dll.В проектах SharePoint CSOM у вас всегда должны быть сборки Client и Client.Runtime (и они должны совпадать).

...