2012-05-11 21 views
6

Một trong những yêu cầu của chúng tôi là tạo tệp iCalendar (.ics) và gửi từng tệp trong email dưới dạng tệp đính kèm. Chúng tôi đang sử dụng để tạo ra các file DDay.Ical.dll ics như dưới:Làm cách nào để hủy sự kiện lịch bằng tệp ics?

// Create a new iCalendar 
iCalendar iCal = new iCalendar(); 

// Create the event, and add it to the iCalendar 
Event evt = iCal.Create<Event>(); 

// Set information about the event 
evt.Start = new iCalDateTime(SomeStartTime); 
evt.End = new iCalDateTime(SomeEndTime); 
evt.Location = "At so and so place"; 
evt.Description = "Some Description"; 
evt.Summary = "About Some Subject"; 
iCal.Method = "PUBLISH"; 

// Serialize (save) the iCalendar 
iCalendarSerializer serializer = new iCalendarSerializer(); 
serializer.Serialize(iCal, @"iCalendar.ics"); 

quá trình Toàn bộ là:

  1. User1 tạo một file iCal cho ngày và thời gian cụ thể và gửi cho User2.
  2. User2 sẽ mở tệp ics và chấp nhận lời mời. Một mục cuộc hẹn sẽ được tạo trong triển vọng LOCAL của người dùng.

Bây giờ, giả sử, vì bất kỳ lý do nào nếu cuộc hẹn bị hủy, sau đó User1 sẽ tạo tệp ics và gửi cho User2, để User2 có thể hủy sự kiện của anh ấy khỏi triển vọng cục bộ.

Cách tạo tệp ics như vậy?

Trả lời

10

Tệp được tạo theo cùng cách với tệp ics gốc. Trạng thái sự kiện sẽ khác. UID sẽ xác định sự kiện và số thứ tự sẽ cho biết ưu tiên cập nhật, sau đó chi tiết sự kiện sẽ được ghi chú (thay đổi hoặc hủy)

Nếu bạn muốn thay đổi/hủy sự kiện sau khi gửi lời mời, bạn cần phải xác định sự kiện/cuộc hẹn bằng UID của nó và phân bổ một số SEQUENCE lớn hơn so với sự kiện ics gốc.

UID (định danh duy nhất): http://tools.ietf.org/html/rfc5545#page-117

trình tự: http://tools.ietf.org/html/rfc5545#page-138

và thiết lập trạng thái sự kiện

  /"CANCELLED" ;Indicates event was cancelled. 

Tình trạng: http://tools.ietf.org/html/rfc5545#page-92

oh - và phương pháp Nếu bạn cần gửi trong một hủy bỏ cho một sự kiện UID nên được giống như bản gốc thậm chí t và các thuộc tính thành phần nên được thiết lập để hủy bỏ Ex. PHƯƠNG PHÁP: CANCEL TÌNH TRẠNG: HỦY CẢNH

Tất nhiên điều này sẽ chỉ 'hủy' sự kiện nếu người nhận thực sự nhấp để tải/đăng ký nó vào cùng một ứng dụng lịch như lần đầu tiên. Đối với các ứng dụng đã 'đăng ký' ics từ xa - khi chúng tiếp theo thực hiện 'cập nhật', hãy kiểm tra cập nhật sẽ được xử lý và ghi đè sự kiện ban đầu.

+1

Tôi đã thử nghiệm điều này với khách hàng xem của tôi, đáng ngạc nhiên khi tôi hủy bỏ một cuộc họp từ triển vọng và đọc tập tin ics trên đầu thu, tôi không tìm thấy cờ STATUS ở đó, hãy để một mình bị hủy bỏ. Ngoài ra, VEVENT được đặt thành HỦY, nhưng tôi không chắc liệu đó có phải là một dấu hiệu đủ tốt nếu cuộc họp đã bị hủy không? Bạn có thể vui lòng cho tôi biết những thứ khác tôi có thể kiểm tra ở phía người nhận để biết liệu đây có phải là cuộc họp bị hủy không? Tôi cần nó cho một số công việc! – k2ibegin

Các vấn đề liên quan