interrogate the Data in Lync 2010? - c#

I developed a seat plan website - it uses the Lync SDK to pull back user details - (i.e. when a name is clicked on the map it passes the name into the Search box and then lists the person in the results list and then you can start an instant conversation, etc).
I want to possibly expand upon this now and I was wondereing does anyone know if its possible/have any URLS, source code that would allow me to pull back the status of all the people in the office from there Lync status (i.e. available/busy,etc).
Also the other information stored about the person withing Lync - the Office/Mobile/Calendar details - is it possible to pull this off to be used?

If you want to see "real" presence of a user, and recieve realtime updates to that presence, then you need to add the user as contacts in Lync. I'm guessing in your scenario that's not ideal (or even possible) so you'll need to search for contacts, and then query for their presence.
This article should get you started with searching for a contact

Have you looked at the Lync 2010 SDK? I would think that's the place to start...

Related

Unique appointment identifier in outlook when using different computers through sync'd account

Running into a slight annoyance. The application I'm developing has a calendar system built in that feeds appointments to an icloud calendar in outlook for the purpose of synchronising to phones are spread out over multiple icloud calendars (one for each person)
My problem lies in updating these appointments when changes are made on the main application. I know already that I can use AppointmentItem.GlobalAppointmentID to gain the id of the entry placed in the calendar on the computer it was created on, however I'm lead to believe this is only unique for that system (ie, another user on a different computer with the calendar synchronised would have a different set of global ID numbers)
As this number is different for each item, simply storing the GlobalAppointmentID in the database and having the application refer to that when adding/deleting/modifying an appointment wouldn't work as a reference point.
In an ideal world, I'd be using an exchange server to handle all of this, or directly modifying the appointments in icloud using c# (despite my best efforts ive been unable to find a simple method to implement this)
Am I missing something here, or is there no way to identify a unique calendar appointment entry after it has been synchronised?
Your approach is correct. GlobalAppointmentID is the proper way to obtain a global identifier for an Outlook calendar item:
The Global Object ID is the same across all copies of the item.
Detailed information on the properties related to that can be found in MS-OXOCAL.
In the case of the iCloud Control Panel, the GlobalAppointmentID will be derived from the UID iCalendar property. It should also have the raw iCalendar UID available in a separate MAPI property (you can discover such using a tool like OutlookSpy - a tool you should buy if you want to do any serious MAPI development, really).
Note that you should use the GlobalAppointmentID only for operations which are cross folder. The local identification property is the EntryID, which is like the primary key in a relational database.
P.S.: This question has some information on building a CalDAV client. Depending on what exactly you want to do, it might not be that hard - it's just an HTTP protocol with a text based payload (iCalendar).

How to capture an event from a UI (web) when I don't have access to the source code

So, here's the use case. I work for Salesforce Marketing Cloud as a technology architect. We have a very robust "Marketing Cloud" app which I don't do any development on. I don't have access to source code/etc. I do have access to the application though, as a user.
Quick 2 sentence overview of the application: big companies like "Company A" utilize our software to be able to send billions of emails (promotional and transactional) to their customers. So, say you get an email from "Company A" telling you of all the great products they offer - that email is sent from our system.
So, the use case: the Marketing Cloud application, for simplicity's sake, is able to create an email from HTML. Basically, the user (myself) can copy/paste HTML into the huge text field, and click Save, and the email code is saved into the back end (SQL Server table). This application does not have any kind of source control to manage the different versions of the "email" that the user decides to create/change/modify.
Now, I have access to develop a customized "whatever" via C#/SSJS that has access to all of the elements in the database that the application writes to. So, if I wanted to grab the latest version of an "email" saved by a user, I can simply write a SQL query to grab this content.
Here's my goal: To create a very simple version control system without getting into the source code of the application. Ambitious, I know. I have all the different pieces of this mapped out in a document, but the one obstacle I'm running into is "how can I capture the 'save' event for when a user clicks 'save' and saves an email"? I believe this is a client side event, but I'm not 100% sure. My initial thought is to write a browser extension, but not knowing exactly what browser extensions have the capability of doing, I'm not sure if this is a good route to take. How can I capture an event from a UI from a web based application when I don't have access to the source code?

Recognize record created from outlook/email in plugin

I'd like to perform some operation in mscrm plugin, if a new record is created automatically by CRM client for Outlook. Eg. it can be a contact or an incident created from an email.
Is there way to check this condition?
We have contact's first name and last name filled oppositely and incident without the caseorigincode field filled, when created from an email in Outlook. Maybe there is a better workarround to solve these two issues. But still I am wondering about the original question.
According to the sources available online, there is really no reliable way to solve this.
There was property CallerOrigin until CRM 4. Then it got deprecated, but continued working for some time, as state in another answer (https://stackoverflow.com/a/14812885/1474519). But it doesn’t seem to be working anymore in CRM 2015.
I found couple advices with IsExecutingOffline and IsOfflinePlayback, but it is really not solving the problem.
I also found a tip to check this code HttpContext.Current.Request.Url.ToString();. This doesn’t work for me.
I found the most complete information here: http://blog.simpletrees.com/2012/03/executioncontextcallerorigin-in.html
According to this article, I am sending a value in a hidden field from my form (or thru API, from plugin, from workflow). As this field is not set when a record is created from outlook, I can recognize the record being created from Outlook. There is of course problem, this field might not be set when importing records or when using mobile app. But I don’t see a better way to go.
Therefore, I started request on Microsoft Connect to add this functionality. You can vote for it here: https://connect.microsoft.com/dynamicssuggestions/feedback/details/1776771
You could add an attribute to the contact and incident to save the origin of the creation.
Then you add a plugin that listens to the Create event of the entities and register it only for client side (offline) execution.
Or you check the PluginExecutionContext for the IsExecutingOffline and IsOfflinePlayback properties to check if the creation was initiated from outlook and store the appropriate value.
https://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.ipluginexecutioncontext_members.aspx

How to see my app users are from where?

development of my app has finished, but I want to have general information about my app users.
How can I know they are from which Store/country? store/country-specific downloads
How can I know which languages they are using for focusing on it more.
Will such these informations appear on the dev center or I should have my own server for receiving these information?
Which codes I need, where can I start?
I know I can use device location, but I don't want to use this option
(sorry I couldn't find anything useful by searching)
Update I don't want these informations locally (providing it to the user himself) But I want to know who are my users after sending it to the store.
How can I know they are from which Store/country? store/country-specific downloads
That information is already available in the Store statistics
How can I know which languages they are using for focusing on it more.
Read the Thread.CurrentCulture and Thread.CurrentUICulture , if you want to know what local language/culture the user is user.
The store is bound to the country specified for the users live account.

Get logged in user details in sharepoint c# webpart

After much wrangling I have a development environment for building sharepoint webparts in c#.
I'm completely new to SP development, so I haven't quite found the various API docs, so I'm hoping someone can help get me started.
Eventually, I want to write a simple web part that allows its user to display different content depending on who the current user is.
What I'd like to do first though is just build a dead simple webpart that will simply print out the current user's details - username, full name and any permissions groups that they have.
Thanks
SPContext.Current.Web.CurrentUser

Categories