ebeigarts / exchanger

Ruby client for Exchange Web Services
MIT License
57 stars 36 forks source link

Exchanger::Operation::ResponseError creating calendar items #5

Open link82 opened 12 years ago

link82 commented 12 years ago

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:

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

ebeigarts commented 12 years ago

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

link82 commented 12 years ago

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.

link82 commented 12 years ago

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

ebeigarts commented 12 years ago

Can you create a pull request for this?

link82 commented 12 years ago

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.

link82 commented 12 years ago

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:

<?xml version="1.0" encoding="UTF-8"?> #<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'.&gt;

ebeigarts commented 12 years ago

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

ebeigarts commented 12 years ago

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
link82 commented 12 years ago

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

link82 commented 12 years ago

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

azurewraith commented 11 years ago

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

azurewraith commented 11 years ago

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.

ebeigarts commented 11 years ago

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

link82 commented 11 years ago

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. :(