Поделиться через


Чтение и запись в веб-каналах социальных медиа при помощи клиентской объектной модели .NET в SharePoint

Создайте консольное приложение, которое читает канал социальных медиа и пишет в него с помощью клиентской объектной модели .NET для SharePoint.

Предварительные требования для создания консольного приложения, которое считывает и записывает в веб-канал социальных сетей с помощью клиентской объектной модели SharePoint .NET

Консольное приложение, которое вы создадите получает канал для конечного пользователя и печатает post корневой из каждого потока нумерованного списка. Затем публикует ответ простой текст для выбранного потока. Один и тот же метод ( CreatePost ) используется для публикации обоих публикации и ответы на канал.

Создание консольного приложения, необходимо следующее:

  • SharePoint с настроенным личным сайтом, с личными сайтами, созданными для текущего пользователя и целевого пользователя, и с несколькими записями, написанными целевым пользователем
  • Visual Studio 2012
  • Полный доступ к приложению-службе профилей пользователей для пользователя, вошедшего в систему

Примечание.

Если вы не разрабатываете разработку на компьютере под управлением SharePoint, получите скачивание клиентских компонентов SharePoint , содержащих клиентские сборки SharePoint.

Основные понятия, которые необходимо знать о работе с социальными веб-каналами SharePoint

В таблице 1 приведены ссылки на статьи, в которых описываются основные понятия, которые нужно знать перед началом работы.

Таблица 1. Основные понятия для работы с социальными каналами SharePoint

Название статьи Описание
Начало разработки с использованием социальных функций в SharePoint Узнайте, как начать программирование с помощью социальных каналов и записей микроблогов, отслеживания людей и содержимого (документы, сайты и tags.md), а также работы с профилями пользователей.
Работа с веб-каналами социальных сетей в SharePoint Сведения о распространенных задач программирования по работе с социальными веб-каналов и API, которое используется для выполнения задачи.

Создание консольного приложения в Visual Studio 2012 и добавление ссылок на сборки клиента

  1. Откройте Visual Studio 2012 на компьютере разработчика.

  2. В строке меню выберите пункты Файл, Создать и Проект. . В раскрывающемся списке в верхней части диалогового окна Новый проект выберите пункт .NET Framework 4.5.

  3. В списке шаблонов выберите Windows и затем выберите шаблон Консольное приложение.

  4. Назовите проект ReadWriteMySiteи затем нажмите кнопку ОК.

  5. Добавление ссылки на сборки клиента следующим образом:

    1. В Обозревателе решений откройте контекстное меню для проекта ReadWriteMySite и затем выберите команду Добавить ссылку.

    2. В диалоговом окне Диспетчер ссылок выберите следующие сборки:

      • Microsoft.SharePoint.Client
      • Microsoft.SharePoint.Client.Runtime
      • Microsoft.SharePoint.Client.UserProfiles

      Если вы разрабатываете на компьютере с SharePoint, сборки находятся в категории Расширения . В противном случае перейдите к папке, которая имеет клиентских сборок, загруженный ( Клиентские компоненты SharePointсм).

  6. В файле Program.cs добавьте следующие using инструкции.

using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

Получение веб-канала социальных сетей для целевого пользователя с помощью клиентской объектной модели SharePoint .NET

  1. Объявите переменные для URL-адрес сервера и создания решений учетные данные учетной записи пользователя.

    const string serverUrl = "http://serverName/";
    const string targetUser = "domainName\\userName";
    

    Примечание.

    Не забудьте заменить http://serverName/ значения заполнителей и domainName\\userName перед выполнением кода.

  2. В методе инициализируйте Main() контекст клиента SharePoint.

    ClientContext clientContext = new ClientContext(serverUrl);
    
  3. Создайте экземпляр SocialFeedManager .

    SocialFeedManager feedManager = new SocialFeedManager(clientContext);
    
  4. Задание параметров для веб-канала активности контент, который требуется получить.

    SocialFeedOptions feedOptions = new SocialFeedOptions();
    feedOptions.MaxThreadCount = 10;
    

    Параметры по умолчанию возвращения первых 20 потоков в веб-канал, отсортированные по дату последнего изменения.

  5. Получите конечного пользователя веб-канал.

    ClientResult<SocialFeed> feed = feedManager.GetFeedFor(targetUser, feedOptions);
    clientContext.ExecuteQuery();
    

    GetFeedFor возвращает ClientResult<T> объект, который хранит коллекцию потоков в свойстве Value .

Итерация и чтение из веб-канала социальных сетей с помощью клиентской объектной модели SharePoint .NET

Приведенный ниже код перебирает потоков в веб-канал. Он проверяет, имеет ли каждый поток атрибут CanReply, а затем получает идентификатор потока и текст корневой записи. Код также создает словарь для хранения идентификатор потока (который используется для ответов на поток) и записывает текста post корневой на консоль.

Dictionary<int, string> idDictionary = new Dictionary<int, string>();
for (int i = 0; i < feed.Value.Threads.Length; i++)
{
    SocialThread thread = feed.Value.Threads[i];
    string postText = thread.RootPost.Text;
    if (thread.Attributes.HasFlag(SocialThreadAttributes.CanReply))
    {
        idDictionary.Add(i, thread.Id);
        Console.WriteLine("\\t" + (i + 1) + ". " + postText);
    }
}

Публикация ответа в веб-канале социальных сетей с помощью клиентской объектной модели SharePoint .NET

  1. (Связанные с Интерфейсом только) Получите поток для ответов, чтобы и запрос ответа пользователя.

    Console.Write("Which post number do you want to reply to?  ");
    string threadToReplyTo = "";
    int threadNumber = int.Parse(Console.ReadLine()) - 1;
    idDictionary.TryGetValue(threadNumber, out threadToReplyTo);
    Console.Write("Type your reply:  ");
    
  2. Определите ответ. Следующий код получает текст ответа из консольного приложения.

    SocialPostCreationData postCreationData = new SocialPostCreationData();
    postCreationData.ContentText = Console.ReadLine();
    
  3. Публикация ответ. Параметр threadToReplyTo представляет свойство Id потока.

    feedManager.CreatePost(threadToReplyTo, postCreationData);
    clientContext.ExecuteQuery();
    

    Примечание.

    Метод CreatePost также используется для публикации корневой записи в веб-канал текущего пользователя путем передачи null для первого параметра.

  4. (Связанные с Интерфейсом только) Выйти из программы.

    Console.WriteLine("Your reply was published.");
    Console.ReadKey(false);
    
  5. Тестирование консольного приложения в строке меню выберите команду Отладка, Начать отладку.

Пример кода. Получение веб-канала и ответ на публикацию с помощью клиентской объектной модели SharePoint .NET

Следующий пример является полный код из файла Program.cs.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

namespace ReadWriteMySite
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target server running SharePoint and the
            // target thread owner.
            const string serverUrl = "http://serverName/";
            const string targetUser = "domainName\\userName";

            // Connect to the client context.
            ClientContext clientContext = new ClientContext(serverUrl);

            // Get the SocialFeedManager instance.
            SocialFeedManager feedManager = new SocialFeedManager(clientContext);

            // Specify the parameters for the feed content that you want to retrieve.
            SocialFeedOptions feedOptions = new SocialFeedOptions();
            feedOptions.MaxThreadCount = 10;

            // Get the target owner's feed (posts and activities) and then run the request on the server.
            ClientResult<SocialFeed> feed = feedManager.GetFeedFor(targetUser, feedOptions);
            clientContext.ExecuteQuery();

            // Create a dictionary to store the Id property of each thread. This code example stores
            // the ID so a user can select a thread to reply to from the console application.
            Dictionary<int, string> idDictionary = new Dictionary<int, string>();
            for (int i = 0; i < feed.Value.Threads.Length; i++)
            {
                SocialThread thread = feed.Value.Threads[i];

                // Keep only the threads that can be replied to.
                if (thread.Attributes.HasFlag(SocialThreadAttributes.CanReply))
                {
                    idDictionary.Add(i, thread.Id);

                    // Write out the text of the post.
                    Console.WriteLine("\\t" + (i + 1) + ". " + thread.RootPost.Text);
                }
            }
            Console.Write("Which post number do you want to reply to?  ");

            string threadToReplyTo = "";
            int threadNumber = int.Parse(Console.ReadLine()) - 1;
            idDictionary.TryGetValue(threadNumber, out threadToReplyTo);

            Console.Write("Type your reply:  ");

            // Define properties for the reply.
            SocialPostCreationData postCreationData = new SocialPostCreationData();
            postCreationData.ContentText = Console.ReadLine();

            // Post the reply and make the changes on the server.
            feedManager.CreatePost(threadToReplyTo, postCreationData);
            clientContext.ExecuteQuery();

            Console.WriteLine("Your reply was published.");
            Console.ReadKey(false);

            // TODO: Add error handling and input validation.
        }
    }
}

Дальнейшие действия

Чтобы узнать, как для более чтения задачи и записи задач с социальными веб-канал с помощью клиентской объектной модели .NET, см.:

См. также