Чтение и запись в веб-каналах социальных медиа при помощи клиентской объектной модели .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 и добавление ссылок на сборки клиента
Откройте Visual Studio 2012 на компьютере разработчика.
В строке меню выберите пункты Файл, Создать и Проект. . В раскрывающемся списке в верхней части диалогового окна Новый проект выберите пункт .NET Framework 4.5.
В списке шаблонов выберите Windows и затем выберите шаблон Консольное приложение.
Назовите проект ReadWriteMySiteи затем нажмите кнопку ОК.
Добавление ссылки на сборки клиента следующим образом:
В Обозревателе решений откройте контекстное меню для проекта ReadWriteMySite и затем выберите команду Добавить ссылку.
В диалоговом окне Диспетчер ссылок выберите следующие сборки:
- Microsoft.SharePoint.Client
- Microsoft.SharePoint.Client.Runtime
- Microsoft.SharePoint.Client.UserProfiles
Если вы разрабатываете на компьютере с SharePoint, сборки находятся в категории Расширения . В противном случае перейдите к папке, которая имеет клиентских сборок, загруженный ( Клиентские компоненты SharePointсм).
В файле Program.cs добавьте следующие
using
инструкции.
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;
Получение веб-канала социальных сетей для целевого пользователя с помощью клиентской объектной модели SharePoint .NET
Объявите переменные для URL-адрес сервера и создания решений учетные данные учетной записи пользователя.
const string serverUrl = "http://serverName/"; const string targetUser = "domainName\\userName";
Примечание.
Не забудьте заменить
http://serverName/
значения заполнителей иdomainName\\userName
перед выполнением кода.В методе инициализируйте
Main()
контекст клиента SharePoint.ClientContext clientContext = new ClientContext(serverUrl);
Создайте экземпляр SocialFeedManager .
SocialFeedManager feedManager = new SocialFeedManager(clientContext);
Задание параметров для веб-канала активности контент, который требуется получить.
SocialFeedOptions feedOptions = new SocialFeedOptions(); feedOptions.MaxThreadCount = 10;
Параметры по умолчанию возвращения первых 20 потоков в веб-канал, отсортированные по дату последнего изменения.
Получите конечного пользователя веб-канал.
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
(Связанные с Интерфейсом только) Получите поток для ответов, чтобы и запрос ответа пользователя.
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: ");
Определите ответ. Следующий код получает текст ответа из консольного приложения.
SocialPostCreationData postCreationData = new SocialPostCreationData(); postCreationData.ContentText = Console.ReadLine();
Публикация ответ. Параметр threadToReplyTo представляет свойство Id потока.
feedManager.CreatePost(threadToReplyTo, postCreationData); clientContext.ExecuteQuery();
Примечание.
Метод CreatePost также используется для публикации корневой записи в веб-канал текущего пользователя путем передачи null для первого параметра.
(Связанные с Интерфейсом только) Выйти из программы.
Console.WriteLine("Your reply was published."); Console.ReadKey(false);
Тестирование консольного приложения в строке меню выберите команду Отладка, Начать отладку.
Пример кода. Получение веб-канала и ответ на публикацию с помощью клиентской объектной модели 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, см.: