How to: Perform Run-Time Registration for an Extensibility Application

[This is preliminary documentation and is subject to change.]

This topic shows how to set Microsoft Lync 2013 Preview Conversation Window Extension properties, use a Run-Time Registration object to register an application, and then start an IM conversation. For more information about Run-Time Registration, see Register Contextual Conversation Packages.

For a list of prerequisites, see How to: Start an Instant Message Conversation. In addition, you must install Internet Information Services (IIS) on the sending and receiving client computers.

Create and install a simple HTML page to represent a context application packaged in a conversation. In a production environment, substitute an application install procedure that installs the application on the appropriate client computers. The context application must be installed and registered on each sending and receiving client computer. For more information, in How to: Perform Install Registration for an Extensibility Application, see “Creating a Sample Context Application.”

Use registry entries to register the context application together with Lync 2013 Preview. The context application must be registered on each sending and receiving client computer. For more information, in How to: Perform Install Registration for an Extensibility Application, see “Adding Registry Entries.” The GUID that you add to the registry for this walkthrough must match the value that you specify in the code that appears in the next section.

The following procedure shows how to create a sample application that is used to start an instant messaging conversation with the sample context application that runs in the Lync 2013 Preview Conversation Window Extension.

To create the registration application

  1. In the Microsoft Visual Studio development system, create a new application. The application can be any kind of managed code application. In this procedure, you create a Microsoft Windows Forms application.

  2. Add a project reference to Microsoft.Lync.Model. The default location is %ProgramFiles%\Microsoft Lync\SDK\Assemblies\WPF.

  3. In Form1.cs, add the following using statements.

    using Microsoft.Lync.Model;
    using Microsoft.Lync.Model.Extensibility;
    
  4. Add the following declarations to the Form class.

    ApplicationRegistration myApplicationRegistration;
    ConversationWindow cWindow;
    
  5. In the Form1 constructor that follows the InitializeComponent method, add the following code.

    // Call this method to perform Run-Time 
    // Registration using the ApplicationRegistration class.
    PerformRunTimeRegistration();
    
    // Conversation participant list. Initial value set in constructor.
    // Update the sample URL here with a valid value.
    List<string> ConversationParticipantList = new List<string>();
    ConversationParticipantList.Add("sip:elise@contoso.com");
    
    // Declare instance of Dictionary to pass the conversation context data.
    Dictionary<AutomationModalitySettings, object> conversationContextData = new Dictionary<AutomationModalitySettings, object>();
    
    // Provide Conversation context: First IM Message.
    conversationContextData.Add(AutomationModalitySettings.FirstInstantMessage, "Contoso Application Context");
    
    // Provide Conversation context: Send first IM message immediately after conversation starts.
    conversationContextData.Add(AutomationModalitySettings.SendFirstInstantMessageImmediately, true);
    
    // Provide Conversation context: Set the Application ID of the registered application that provides context.
    conversationContextData.Add(AutomationModalitySettings.ApplicationId, "{90B996A3-2BDB-48FB-BF74-2FE14D1BA6F4}");
    
    // Provide Conversation context: Set application data. 
    conversationContextData.Add(AutomationModalitySettings.ApplicationData, "1234");
    
    // Register the application.
    this.myApplicationRegistration.AddRegistration();
    
    // Create an Automation object.
    Automation myUIAuto = LyncClient.GetAutomation();
    
    // Start the conversation.
    IAsyncResult beginconversation = myUIAuto.BeginStartConversation(
    AutomationModalities.InstantMessage
    , ConversationParticipantList
    , conversationContextData
    , BeginConversationCallBack
    , myUIAuto);
    
    
    
    
  6. In the Form1 class, add the following code.

    // Perform Run-Time Registration by using the ApplicationRegistration class.
    void PerformRunTimeRegistration()
    {
      // Ensure that this GUID matches the registry value entered in the previous section.
      string guid = "{90B996A3-2BDB-48FB-BF74-2FE14D1BA6F4}";
      string appname = "Contoso Test Application";
      myApplicationRegistration = LyncClient.GetClient().CreateApplicationRegistration(guid, appname);
    
      // Set the Conversation Window Extension properties.
      // Ensure that the internalURL parameter is valid on your computer.
      myApplicationRegistration.SetExtensibilityWindowProperties(
        "http://localhost/Test/sample2.html"
        , "http://msn.com"
        , ConversationWindowExtensionSize.Medium);
    
      // Register the application.
      this.myApplicationRegistration.AddRegistration();
    }
    
    // Notify the Automation object and ConversationWindow
    // that the conversation started.
    private void BeginConversationCallBack(IAsyncResult ar)
    {
      if (ar.IsCompleted == true)
      {
        Automation _automation = ar.AsyncState as Automation;
        cWindow = _automation.EndStartConversation(ar);
        IAsyncResult OpenExtensibilityResult = cWindow.BeginOpenExtensibilityWindow("{90B996A3-2BDB-48FB-BF74-2FE14D1BA6F4}",null,null);
        cWindow.EndOpenExtensibility(OpenExtensibilityResult);
      }
    }
    
    // End the conversation.
    private void EndConversation_Click(object sender, EventArgs e)
    {
      try
      {
        // Unregister Run-Time Registration for application context.
        myApplicationRegistration.RemoveRegistration();
        this.cWindow.Close();
      }
      catch (Exception) { }
      this.Close();
    }
    
  7. Build and run the application.

  8. In the conversation window on the sending and receiving clients, the Conversation Window Extension appears with the context application inside it.

Community Additions

Show:
© 2014 Microsoft