2012-05-11 18 views
6

हमारी आवश्यकताओं में से एक iCalendar फ़ाइलें (.ics) बनाने और उन्हें प्रत्येक संलग्नक के रूप में ईमेल में भेजना है। हम नीचे के रूप में आईसीएस फ़ाइलों को बनाने के DDay.Ical.dll उपयोग कर रहे हैं: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"); 

पूरा प्रक्रिया है:

  1. User 1 विशिष्ट दिनांक और समय के लिए एक iCal फ़ाइल बनाने और User 2 को भेजें।
  2. उपयोगकर्ता 2 ics फ़ाइल खोल देगा और निमंत्रण स्वीकार करेगा। उपयोगकर्ता 2 के स्थानीय दृष्टिकोण में एक अपॉइंटमेंट आइटम बनाया जाएगा।

अब, मान लीजिए कि नियुक्ति रद्द होने पर किसी भी कारण से, तो उपयोगकर्ता 1 को एक ics फ़ाइल बनाने और उसे उपयोगकर्ता 2 पर भेजने के लिए है, ताकि उपयोगकर्ता 2 स्थानीय दृष्टिकोण से अपना ईवेंट रद्द कर सके।

ऐसी आईआईसी फाइल कैसे बनाएं?

उत्तर

10

फ़ाइल मूल ics फ़ाइल के समान ही बनाई गई है। घटना की स्थिति अलग होगी। यूआईडी घटना की पहचान करेगा और अनुक्रम संख्या अद्यतन की प्राथमिकता को इंगित करेगी, और फिर घटना विवरणों को नोट किया जाएगा (परिवर्तन या रद्दीकरण)

यदि आप आमंत्रण भेजने के बाद किसी ईवेंट को बदलना/रद्द करना चाहते हैं, तो आपको पहचानने की आवश्यकता है घटना/नियुक्ति अपने यूआईडी द्वारा, और मूल ics घटना की तुलना में एक बड़ा अनुक्रम संख्या आवंटित करें।

यूआईडी (अद्वितीय पहचानकर्ता): http://tools.ietf.org/html/rfc5545#page-117

अनुक्रम: http://tools.ietf.org/html/rfc5545#page-138

और घटना स्थिति सेट

  /"CANCELLED" ;Indicates event was cancelled. 

स्थिति: http://tools.ietf.org/html/rfc5545#page-92

ओह - और विधि आप के लिए की जरूरत है एक घटना के लिए रद्दीकरण में भेजें, यूआईडी मूल के समान भी होना चाहिए टी और घटक गुण पूर्व को रद्द करने के लिए सेट किया जाना चाहिए। विधि: रद्द स्थिति: रद्द

बेशक यह केवल 'रद्द करें' होगा घटना यदि प्राप्तकर्ता तो वास्तव में लोड/यह पहली बार के रूप में ही कैलेंडर एप्लिकेशन में सदस्यता के लिए क्लिक करता है के। उन अनुप्रयोगों के लिए जिन्होंने रिमोट ics को 'सब्सक्राइब किया है' - जब वे अगली बार 'अपडेट' चेक करते हैं तो अपडेट को संसाधित किया जाना चाहिए और मूल ईवेंट को ओवरराइट करना चाहिए।

+1

मैं अपने दृष्टिकोण क्लाइंट के साथ इसका परीक्षण कर रहा था, आश्चर्य की बात है कि जब मैं दृष्टिकोण से एक मीटिंग रद्द करता हूं और रिसीवर अंत में ics फ़ाइल पढ़ता हूं, तो मुझे वहां स्टेटस फ्लैग नहीं मिलता है, अकेले ही रद्द कर दें। इसके अलावा, VEVENT को कैंसल पर सेट किया गया है, लेकिन मुझे यकीन नहीं है कि अगर बैठक रद्द कर दी गई तो क्या यह पर्याप्त संकेत है? क्या आप कृपया मुझे बता सकते हैं कि रिसीवर पक्ष पर अन्य चीजें मैं कैसे जान सकता हूं कि यह एक रद्द की गई बैठक है या नहीं? मुझे कुछ वर्कफ़्लो के लिए इसकी ज़रूरत है! – k2ibegin