Dynamics CRM 2011 アクティビティフィードの Like‐Unlike 機能

みなさん、こんにちは。

今日は次期バージョンのアクティビティフィードについて、最新情報をお届けします。
尚、画面ショット等一部英語のままですが、まだ日本語版での情報がないため
ご了承ください。

情報元 : Like-Unlike for Activity Feeds

アクティビティ フィードは昨年マーケットプレース上に公開されました。その後多くの
フィードバックをいただき、とうとう次期 Update Rollup にて機能追加をすることと
なりました。新しい機能には、より柔軟なフィルター機能や、既定のビュー機能、また
Like‐Unlike 機能などがありますが、この記事では Like‐Unlike 機能について
紹介します。

多くの SNS のでは、特定の投稿に対する人気の度合いを測る機能を提供しています。
例えば Facebook のいいね!ボタンや、Google+ の +1 です。このシステムがある
ことで、より積極的にユーザーが投稿を作成したり、コメントすることとなり、その結果
ユーザがよりコミュニティに参加している意思が高くなります。

Like-Unlike 機能はアクティビティフィードに同様のユーザー体験をもたらすことと
なります。現在投稿にはコメントボタンしかありませんが、時期バージョンでは
以下のように Like-Unlike ボタンが表示されます。

Clicking it likes a post and changes the button text to
‘Unlike’. The content below the post text now indicates that you’ve liked this
post:

Like がクリックされた投稿を他のユーザーが見ると、以下のように表示されます。

Like の数は Like ボタンをクリックしたユーザーの数と同一です。また表示されている
数字をクリックすることで、誰が Like ボタンをクリックしたかが表示されます。

Windows Phone アプリケーションにもこの機能が提供されます。

左下に見えるスマイルアイコンが Like ボタンです。

Like-Unlike 機能は個人ウォールでもレコードウォールでも同様に機能します。
また読取り最適化フォームでも同じ経験を提供します。またユーザーが作成
した投稿でも、ワークフローや SDK で作成された投稿に対しても Like-Unlike
が行えます。

以下に SDK のサンプルを紹介します。特定の投稿に Like を作成することや
Like したユーザーの一覧を取得することが可能です。

// Like a post with a particular Id
var postLike = new PostLike { PostId = new EntityReference(Post.EntityLogicalName, post.Id) };
Guid likeId = _serviceProxy.Create(postLike);
Console.WriteLine("Post with Id :{0} liked.", post.Id);

// Retrieve list of likes for a particular post
string retrieveLikesFetchXml = "<fetch version=\"1.0\" output-format=\"xml-platform\" mapping=\"logical\" distinct=\"true\" returntotalrecordcount='true'>" + 
                                   "<entity name=\"systemuser\">" +
                                   "<attribute name=\"fullname\"/>" +
                                   "<attribute name=\"systemuserid\"/>" + 
                                   "<order descending=\"false\" attribute=\"fullname\"/>" +
         "<link-entity name=\"postlike\" alias=\"aa\" to=\"systemuserid\" from=\"createdby\">" +
                                   "<filter type=\"and\">" + 
                  "<condition attribute=\"postid\" value=\"{" + post.Id +"}\" operator=\"eq\"/>" +
                                  "</filter>" + 
                                   "</link-entity>" + 
                                   "</entity>" +
                                   "</fetch>";

var fetchExpression = new FetchExpression(retrieveLikesFetchXml);
var likes = _serviceProxy.RetrieveMultiple(fetchExpression);

Console.WriteLine("{0} users like this post. They are:", likes.Entities.Count);

foreach (var entity in likes.Entities)
{
Console.WriteLine(entity.Attributes["fullname"]);
}

アクティビティフィードはユーザーのコミュニケーションを推進するために
提供されているため、投稿を dislike することや、ワークフローを利用して
Like-Dislike 機能を利用することはできません。

まとめ

いよいよ次期バージョンのアクティビティフィードのリリースが迫ってきました。
Like-Dislike 機能だけでなく、他にも便利な機能の追加や、既存の問題の
修正も含まれる予定です。逐次情報は提供していきますので、お楽しみに!

‐ Dynamics CRM サポート 中村 憲一郎