web-servicesms-wordoffice-2010word-2010

Is there a way to add custom web services to Word 2010 via the Research Pane?


I have been wondering if I can add custom web services with the wsdl or asmx file extension via the Research Pane in Microsoft Word 2010. I have searched just about every site that has those services, but no luck finding instructions. Rather than trial and error, I felt more confident if I were to ask someone here.

Basically, what I would like to be able to do is add a site like http://www.ebi.ac.uk/Tools/webservices/wsdl or some other source and be able to send queries via the research pane. Research Pane in Microsoft Word 2010 after unsuccessful addition


Solution

  • Start by reading this http://msdn.microsoft.com/en-us/library/bb226691(v=office.11).aspx

    Then the shortcut bellow (it's not perfect, and the actual search is not implemented, but I hope it helps)

    1 Service interface

    namespace CustomResearchServiceWCF {
    
    [ServiceContract(Namespace="urn:Microsoft.Search")]
    public interface IOfficeResearchService
    {
        [OperationContract(Action = "urn:Microsoft.Search/Registration")]
        string Registration(string regXML);
    
        [OperationContract(Action = "urn:Microsoft.Search/Query")]
        string Query(string queryXml);
    }
    

    }

    2 Implementation

    namespace CustomResearchServiceWCF
    {
    
    public class OfficeResearchService : IOfficeResearchService
    {
    
    
        public string Registration(string regXML)
        {
            var providerUpdate = new ProviderUpdate();
    
            var writerSettings = new XmlWriterSettings {OmitXmlDeclaration = true,Indent=true};
            var stringWriter = new StringWriter();
            var serializer = new XmlSerializer(typeof(ProviderUpdate));
            using (var xmlWriter = XmlWriter.Create(stringWriter, writerSettings))
            {
                serializer.Serialize(xmlWriter, providerUpdate);
            }
            return stringWriter.ToString();
    
        }
    
        public string Query(string queryXml)
        {
            throw new NotImplementedException();
        }
      }}
    

    3 ProviderUpdate, ResearchService and License

    namespace CustomResearchServiceWCF
    {
    
    public class License
    {
        [XmlAttribute(AttributeName = "acceptRequired")]
        public bool AcceptRequired;
        public string LicenseText { get; set; }
    
        public License()
        {
            LicenseText = "some licensing information";
            AcceptRequired = true;
        }
    }
    
    public class Provider
    {
        public string Message { get; set; }
        public License License { get; set; }
        public string Id { get; set; }
        public string Name { get; set; }
        public string QueryPath { get; set; }
        public string RegistrationPath { get; set; }
        public string Type { get; set; }
        public string AboutPath { get; set; }
        [XmlAttribute]
        public string Action { get; set; }
    
        [DataMember]
        public List<ResearchService> Services;
    
        public Provider()
        {
            Type = "SOAP";
            License = new License();
            Services = new List<ResearchService>
                           {
                               new ResearchService
                                   {
                                       Id = "{942F685E-0935-42c8-80C5-95DB0D129910}",
                                       Name = "Service",
                                       Description = "Custom Research Service",
                                       Copyright = "All content Copyright (c) 2003",
                                       Display = "ON"
                                   }
                           };
        }
    }
    
    
    
    [XmlType("Service")]
    public class ResearchService
    {
        /// <summary>
        /// The GUID that is used when the Query function is called to differentiate a response from your Research service from a response from another Research service
        /// </summary>
        public string Id { get; set; }
    
    
        /// <summary>
        /// The name displayed in the Research task pane's Show Results From dropdown
        /// </summary>
        public string Name { get; set; }
    
        /// <summary>
        /// //The description displayed in the Properties dialog box for the service
        /// </summary>
        public string Description { get; set; }
    
        public string Copyright { get; set; }
    
        //Either On or Off; indicates whether the service should be displayed in the Show Results From dropdown.
        public string Display { get; set; }
    
    
        /// <summary>
        /// The category with which the service should be grouped in the Show Results From dropdown and the Research options dialog box. See the Microsoft.Search.Registration.Response schema for a list of all the choices.
        /// </summary>
        public string Category { get; set; }
    
        public ResearchService()
        {
            Category = "RESEARCH_GENERAL";
        }
    }
    
    
    [XmlRoot(Namespace = "urn:Microsoft.Search.Registration.Response")]
    public class ProviderUpdate
    {
        public string Status { get; set; }
    
        public List<Provider> Providers;
    
        public ProviderUpdate()
        {
            Status = "SUCCESS";
            Providers = new List<Provider>
                            {
                                new Provider
                                    {
                                        Message = "Congratulations! You've registered Research Pane Examples!",
                                        Action = "UPDATE",
                                        Id = "{942F685E-0935-42c8-80C5-95DB0D129910}",
                                        Name = "Wiktionary",
                                        QueryPath = "http://services.highbeam.com/office/office.asmx",
                                        RegistrationPath = "http://services.highbeam.com/office/office.asmx",
                                        AboutPath = "http://www.highbeam.com"
                                    }
                            };
        }
    }
    }