使用Exchange Web服务和UCWA发送Lync会议邀请

时间:2015-02-24 15:22:10

标签: c# outlook-addin exchangewebservices ucwa

我想制作一个向与会者发送lync会议邀请的网络服务。我已经完成了UCWA Part,用于生成会议地址。

但现在我正在尝试使用EWS创建邀请。我可以发送标准约会,会议URL作为正文,但Outlook Lync插件不会将其识别为lync会议。

感谢Outlook Spy addin,我可以看到正确的标签,可以将我的约会转变为lync会议。所以我认为我只需要添加与原始Lync会议相同的标签(使用lync addin for outlook创建)。

我试图设置约会的扩展属性:

Guid MY_PROPERTY_SET_GUID0 = Guid.NewGuid();
            Guid MY_PROPERTY_SET_GUID1 = Guid.NewGuid();
            Guid MY_PROPERTY_SET_GUID2 = Guid.NewGuid();
            Guid MY_PROPERTY_SET_GUID3 = Guid.NewGuid();
            Guid MY_PROPERTY_SET_GUID4 = Guid.NewGuid();
            Guid MY_PROPERTY_SET_GUID5 = Guid.NewGuid();
            Guid MY_PROPERTY_SET_GUID6 = Guid.NewGuid();
            Guid MY_PROPERTY_SET_GUID7 = Guid.NewGuid();

            ExtendedPropertyDefinition EPD0 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID0, "MeetingType", MapiPropertyType.Long);
            ExtendedPropertyDefinition EPD1 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID1, "OnlineMeetingConfLink", MapiPropertyType.String);
            ExtendedPropertyDefinition EPD2 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID2, "UCMeetingSetting", MapiPropertyType.String);
            ExtendedPropertyDefinition EPD3 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID3, "UCOpenedConferenceID", MapiPropertyType.String);
            ExtendedPropertyDefinition EPD5 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID5, "UCMeetingSettingSent", MapiPropertyType.String);
            ExtendedPropertyDefinition EPD4 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID4, "OnlineMeetingExternalLink", MapiPropertyType.String);
            ExtendedPropertyDefinition EPD6 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID6, "UCInband", MapiPropertyType.String);
            ExtendedPropertyDefinition EPD7 = new ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID7, "UCCapabilities", MapiPropertyType.String);

            appointment.SetExtendedProperty(EPD0, 65536);
            appointment.SetExtendedProperty(EPD1, cd.HttpJoinLink);
            appointment.SetExtendedProperty(EPD2, cd.getUCMeetingSettings());
            appointment.SetExtendedProperty(EPD3, Guid.NewGuid().ToString());
            appointment.SetExtendedProperty(EPD4, cd.ConfJoinLink);
            appointment.SetExtendedProperty(EPD5, cd.getUCMeetingSettings());
            appointment.SetExtendedProperty(EPD6,[XMLVALUE]);
            appointment.SetExtendedProperty(EPD7, [XMLVALUE]);

             string mailAddress;
            foreach (string a in attendees)
            {
                if (a.StartsWith("sip:"))
                {
                    mailAddress = a.Substring(4, a.Length - 4);
                }
                else
                {
                    mailAddress = a;
                }
                appointment.RequiredAttendees.Add(mailAddress);
            }

             appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);

这两个[XMLVALUES]只是来自outlook spy的复制/粘贴,这是一个非常长的文本,为了清楚起见,我不在这里写。

之后我收到了邀请,但是这些标签在Outlookspy中没有显示为属性标签,因此我的约会未被重新统一为“Lync会议”。

你有什么想法吗?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以考虑以编程方式在Outlook功能区上执行 Lync Meeting 按钮,以获取正确的会议项目。 CommandBars类的ExecuteMso方法执行idMso参数标识的控件。在没有特定命令的对象模型的情况下,此方法很有用。适用于内置按钮,toggleButtons和splitButtons的控件。请参阅Office 2013 Help Files: Office Fluent User Interface Control Identifiers

答案 1 :(得分:-1)

这是您将EWS会议设置为在线会议所需的内容。

ExtendedPropertyDefinition extendedUCMeetingSetting = new ExtendedPropertyDefinition(Guid.NewGuid(), "OnlineMeetingExternalLink",MapiPropertyType.String);

appointment.SetExtendedProperty(extendedUCMeetingSetting,skype_meeting_join_url)