使用Microsoft的EWS创建在线的Lync / Skype的会议(Using Microsof

2019-09-27 01:07发布

任何人都知道如何创建具有在线会议(的Lync / SKYPE)使用EWS会议要求?

所以,我的做法是首先得到通过Outlook创建了一个在线和定期会议,然后模拟具有相同属性的创建活动。

这里是我得到的会议(代码片段calendarView已经开始日期,结束日期等初始化):

ExtendedPropertyDefinition extendedOnlineMeetingProperty =
                new ExtendedPropertyDefinition(new Guid("{00062008-0000-0000-c000-000000000046}"), 34112,
                    MapiPropertyType.Integer);

var properties = new PropertySet(
            ItemSchema.Id,
            AppointmentSchema.ICalUid,
            ItemSchema.Subject,
            AppointmentSchema.Start,
            AppointmentSchema.End,
            AppointmentSchema.Organizer,
            AppointmentSchema.Location,
            AppointmentSchema.LegacyFreeBusyStatus,
            AppointmentSchema.IsCancelled,
            AppointmentSchema.ICalRecurrenceId,
            AppointmentSchema.MyResponseType, // Mandatory Meeting.MyResponseType can be retrieved without a search in the participant list
            ItemSchema.LastModifiedTime,
            AppointmentSchema.IsOnlineMeeting,
            AppointmentSchema.IsMeeting,
            ItemSchema.DisplayTo) { };

 properties.Add(extendedOnlineMeetingProperty);


var activeResults = service.FindAppointments(WellKnownFolderName.Calendar, calendarView).ToList();
    if (activeResults.Count > 0)
    {
        service.LoadPropertiesForItems(activeResults, properties);
    }

我得到了财产IsOnlineMeeting用正确的布尔值(测试-在线创建和Outlook例会)可变activeResults ,但我不明白的地方拿到的会议链接,并需要参加会议的其他的Lync / Skype的性能。

另外,我不知道在哪里以及如何分配的Lync / Skype的会议URL和其它属性的值。

有时候我问自己,如果它是值得开发的基于MS的产品,因为它们的文档吮吸一些应用程序。

Answer 1:

MS骂一个星期后,我已经找到了解决方案。 使用工具MFCMAPI您可以检查哪些属性和它们的值您的项目在邮箱中。

  1. 下载该程序的链接
  2. 建立并运行它
  3. 会议 - 登录 - 选择您的邮件配置文件 - 选择邮箱并双击
  4. 操作 - 打开特殊的文件夹 - 日历 - 日历上双击
  5. 在线S4B /会议的Lync打开项目
  6. 在UC *属性是一个我一直在寻找。

如果您打开属性,你可以看到像这样的顶部:

ag: 0x8096001E
Type: PT_STRING8
DASL: http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/UCMeetingSetting
Named Prop Name: UCMeetingSetting
Named Prop Guid: {00020329-0000-0000-C000-000000000046} = PS_PUBLIC_STRINGS

所以,我的扩展属性的定义是错误的。 它不仅是一个属性,但实际上你需要他们的所有7个。

因此,定义应该是:

private static ExtendedPropertyDefinition CreateOnlineMeetingProperty()
        {
            ExtendedPropertyDefinition extendedUCMeetingSetting =
                new ExtendedPropertyDefinition(new Guid("{00020329-0000-0000-C000-000000000046}"), "UCMeetingSetting",
                    MapiPropertyType.String);

            return extendedUCMeetingSetting;
        }

有了正确的扩展定义,你可以很容易地从该项目中的值。

  1. 访问所述ValueExtendedProperties
  2. 调用TryGetProperty
 var activeResults = service.FindAppointments(new FolderId(WellKnownFolderName.Calendar, resource.Email),calendarView).ToList(); service.LoadPropertiesForItems(activeResults, properties); foreach (Appointment result in activeResults) { // 1. var b = result.ExtendedProperties[1].Value; // 2. string UCMeetingSetting; result.TryGetProperty(extendedUCMeetingSetting, out UCMeetingSetting); } 

通过以上步骤,你可以得到你想要的任何扩展属性,不仅统一通信(UC)的属性。



Answer 2:

好吧,我设法把这个工作由刚刚设置的扩展属性之一(差不多了!):

appointment.SetExtendedProperty(
                new ExtendedPropertyDefinition(
                    new Guid("00020329-0000-0000-C000-000000000046"),
                    "OnlineMeetingExternalLink",
                    MapiPropertyType.String
                    ),
                skypeMeeting.JoinUrl
                );

我说差不多,因为任命不完全一样Skype的会议上,当你在Outlook中打开它:没有页脚将加入链接和电话号码等,可能还有其他的差异,但现在我们看到它在Skype的业务与加入按钮,我们也看到了它在Outlook提醒与加入按钮。 作为一种变通方法,我们必须硬编码约会的主体内容。 也会议ID,可使用UCWA 2.0采取( https://docs.microsoft.com/en-us/skype-sdk/ucwa/myonlinemeetings_ref )

我们使用UCWA 2.0创建Skype的电话会议上,并连接到EWS约会对象。



文章来源: Using Microsoft's EWS to create online Lync/Skype meeting