ebeigarts/exchanger

Exchanger::Operation::ResponseError creating calendar items

link82 opened this issue · 14 comments

Hello, I'm trying to create a calendar event but when saving it complains I need to specify a "SendMeetingInvitations" attribute.
I cannot find where to set it up, is that an issue or do i miss to configure anything?

I'm connected to a MS Exchange 2010 server.

Here is the error description: <Exchanger::Operation::ResponseError: The SendMeetingInvitations attribute is required for calendar items.>

Here is my code:

Exchanger::Client.new
cal = Exchanger::Folder.find(:calendar,'my.name@mydomain.com')

@item = cal.new_calendar_item
@item.subject = "Launch time!!"
@item.start = Time.parse('2012-06-27 13:00:00')
@item.end = Time.parse('2012-06-27 14:00:00')
@item.is_all_day_event = false
@item.location = 'Room 1'
@item.is_meeting = false

@item.save()

Thank you in advance,
Davide

Sorry, I currently don't have access to Exchange server, but I can try to direct you to the right direction.

Exchanger's CreateItem operation currently doesn't support SendMeetingInvitations attribute.

You can try adding a send_meeting_invitations option here

And also override CalendarItem#create method with CreateItem.run(:folder_id => parent_folder_id.id, :items => [self], :send_meeting_invitations => "SendToAllAndSaveCopy").

More details - http://msdn.microsoft.com/en-us/library/aa564690.aspx

Thank you!
I'm going to try this way.

I was trying to ovverride "to_xml" method in element class but the schema validation failed sending a CalendarItem with this additional attribute.

it works!!
I need to make some changes but it worked.

Can you create a pull request for this?

As soon as possible i will handle the generation of the custom attribute required when "SendMeetingAttributes" is equal to "SendToAllAndSaveCopy" and then I'll create a pull request.

I want to advise you I'm a newbie of rails, maybe I will need your support.

Ok, soon I will create the pull request.

I just want to check if it works sending requests to my meeting attendees but something is wrong in my code.
How can I specify required / optional attendees for a meeting ?

@item.required_attendees = [ Exchanger::Attendee.new(:key => "mailbox", :text=> Exchanger::EmailAddress.new(:key => "EmailAdress", :text => "address1@mycompany.com"))]

Error:

#<Exchanger::Operation::ResponseError: The request failed schema validation: The element 'RequiredAttendees' in namespace 'http://schemas.microsoft.com/exchange/services/2006/types' has invalid child element 'RequiredAttendees' in namespace 'http://schemas.microsoft.com/exchange/services/2006/types'. List of possible elements expected: 'Attendee' in namespace 'http://schemas.microsoft.com/exchange/services/2006/types'.>

@link82 @item.required_attendees = [ Exchanger::Attendee.new(:mailbox => Exchanger::Mailbox.new(:email_address => "user@example.com"))]

Also you will need to add tag_name to Attendee class:

module Exchanger
  # The Attendee element represents attendees and resources for a meeting.
  #
  # http://msdn.microsoft.com/en-us/library/aa580339.aspx
  class Attendee < Element
    element :mailbox, :type => Mailbox
    element :response_type # Unknown Organizer Tentative Accept Decline NoResponseReceived
    element :last_response_time, :type => Time

    def tag_name
      "Attendee"
    end
  end
end

I found it is also necessary to specify a new attribute while updating a calendar event, instead of "SendMeetingInvitations" it needs a "SendMeetingInvitationsOrCancellations"

http://msdn.microsoft.com/en-us/library/aa580254(v=exchg.140)

overriding calendar_item.rb update method and adding the custom attribute in the update_item class it works.

I need anyway to skip the serialization of these attributes while not communication with 2007+ MS Exchange server.

Is there a way to understand the server version? So i can skip serializing the attributes if < 2007

get_user_availability tests are failing I see, I also need to take a look at them later.

This seems to have stalled out, are there any updates on this? I ran into this issue today...

Ah, I see @link82's fork and the changes he made. I'll fork this repo and add in the updates (since link's commits are kind of a mess) and see what comes out of it.

@azurewraith it would be nice if you get this sorted out, so that I can merge this in.

Sorry but it was my first fork. I started fixing it up locally but later the project I've been working on was suspend and i never completed the changes.
I'm sorry about that. :(