2017-03-10 89 views
2

我一直在嘗試使用Domino數據服務REST API創建客房預訂,但我似乎錯過了一個技巧。使用Domino數據服務創建客房預訂REST API

發送POST請求發送到文檔端點我可以提交和創造出現在的房間和資源視圖,但底層的房間預訂文件仍然顯示在Notes客戶端可用。

這裏是請求主體的樣本:

{ 
    "@authors": [ 
    "CN=Andrew Jones/O=MyCorp", 
    "" 
    ], 
    "@form": "Reservation", 
    "From": "CN=Andrew Jones/O=MyCorp", 
    "Chair": "CN=Andrew Jones/O=MyCorp", 
    "AltChair": "CN=Andrew Jones/O=MyCorp", 
    "Principal": "CN=Andrew Jones/O=MyCorp", 
    "SequenceNum": 1, 
    "OrgState": "5", 
    "ResourceType": "1", 
    "ResourceName": "Room/Office", 
    "ROOM": "Room/[email protected]", 
    "Capacity": 1, 
    "AppointmentType": "3", 
    "StartTimeZone": "Z=0$DO=1$DL=3 -1 1 10 -1 1$ZX=47$ZN=GMT", 
    "EndTimeZone": "Z=0$DO=1$DL=3 -1 1 10 -1 1$ZX=47$ZN=GMT", 
    "TOPIC": "Test", 
    "SendTo": "CN=Room/O=Office", 
    "SelectedRR": "CN=Room/O=Office", 
    "$BusyName":"CN=Room/O=Office", 
    "Encrypt": "0", 
    "Categories": "", 
    "RouteServers": "CN=dominonode/O=MyCorp", 
    "DeliveredDate": { "data":"2017-03-09T12:38:34Z","type":"datetime"}, 
    "StartDate": {"data":"2017-03-09T20:00:00Z","type":"datetime"}, 
    "StartTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"}, 
    "StartDateTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"}, 
    "EndDate": {"data":"2017-03-09T21:00:00Z","type":"datetime"}, 
    "EndTime": {"data":"2017-09-03T21:00:00Z","type":"datetime"}, 
    "EndDateTime": {"data":"2017-03-09T21:00:00Z","type":"datetime"}, 
    "CalendarDateTime": {"data":"2017-03-09T20:00:00Z","type":"datetime"}, 
    "UpdateSeq": 1, 
    "Author": "CN=Andrew Jones/O=MyCorp", 
    "ResourceOwner": "", 
    "ReservedFor": "CN=Andrew Jones/O=MyCorp", 
    "ReservedBy": "CN=Andrew Jones/O=MyCorp", 
    "RQStatus": "A", 
    "Purpose": "API Test", 
    "NoticeType": "A", 
    "Step": 3, 
    "Site": "Office", 
    "ReserveDate": {"data":"2017-03-09T20:00:00Z","type":"datetime"} 
} 

This question建議我應該改爲嘗試創建日曆事件,但一切我送似乎變得不好的請求被拒絕,其中包括sample

我也看過another question這表明我需要創建一個約會,然後爲該房間的通知文件,但雖然我可以創建這些文件,但它似乎並沒有創建一個保留。

有沒有人嘗試這樣做,得到它的工作還是我剛剛加盟了大象的墓地?

+1

我需要更好地理解你的用例。如果您嘗試在用戶的日曆上創建事件,則日曆API很有意義。您可以預訂房間作爲創建此類事件的副作用,但請求將爲「POST/{database}/api/calendar/events」,其中{database}是用戶的郵件文件。我不認爲{數據庫}可以成爲預訂數據庫本身。當你說所有的東西都會被「拒絕並且請求不好」時,你使用了什麼樣的數據庫? –

+0

我們的目的是在我們辦公室的每個房間的外面安裝平板電腦設備。平板電腦將顯示當天房間的時間表。如果沒有預定的房間,用戶應該能夠立即預訂下一個30分鐘,1小時等的房間。所以我期望通過向某個終端發送POST請求來完成此操作。我使用的是resource.nsf,所以我應該使用與房間的郵件文件相對應的數據庫? –

+1

一個房間本身沒有郵件文件,但我認爲有一個答案可以幫你。敬請關注。我會稍後發佈答案。 –

回答

3

我建議註冊一個特殊的「用戶」作爲預訂代理。然後,您可以使用日曆API來預訂任何房間。我認爲這種方法比數據API更好。

詳情:

  • 註冊一個新的 「用戶」 作爲訂艙代理。讓我們打電話給用戶「Room Agent/MyCorp」。用戶的郵件文件是「mail/ragent.nsf」。

  • 確保日曆API是在郵件服務器上啓用了「郵件/ ragent.nsf」的翻版。

  • 當某人使用您的平板電腦應用預訂房間時,應用會發送請求在房間代理的日曆上創建活動(POST /mail/ragent.nsf/api/calendar/events)。新活動應包括與會者名單中的房間。

  • 日曆API發送邀請室(實際上是資源數據庫)。只要房間尚未預訂,資源數據庫就會接受邀請,並且該房間在該時間段內變得繁忙。

這使您不必處理數據API和資源數據庫的複雜性。您的平板電腦應用程序只需知道郵件服務器主機名,郵件文件的名稱和房間代理的憑證。我也喜歡能夠「審覈」來自平板電腦應用的所有預訂的想法。您可以在房間代理的郵件文件中找到所有事件和通知(接受或拒絕)。

一個缺點是預訂不會瞬間,但資源數據庫應該能夠接受在幾秒鐘之內發出了邀請。

順便說一句,這裏是你的POST請求的一些示例JSON輸入:

{ 
    "events":[ 
    { 
     "summary":"Calendar API test", 
     "location":"test", 
     "description":"test", 
     "start":{"date":"2018-01-01","time":"13:00:00","utc":true}, 
     "end":{"date":"2018-01-01","time":"14:00:00","utc":true}, 
     "organizer":{"email":"[email protected]"}, 
     "attendees":[ 
     { 
      "role":"req-participant", 
      "userType":"room", 
      "status":"needs-action", 
      "rsvp":true, 
      "email":"[email protected]" 
     } 
     ] 
    } 
    ] 
} 

爲與會者指定"userType":"room"是很重要的。否則,資源數據庫將不接受邀請。

+0

非常感謝。但是,我收到一個500錯誤:''code「:500,」text「:」內部服務器錯誤「,」cserror「:1026,」message「:」錯誤創建事件「,」type「:」text「 ,「data」:「com.ibm.domino.calendar.store.StoreException:創建事件時出錯\ r \ n \ tat com.ibm.domino.calendar.dbstore.NotesCalendarStore.createE ... 引起:NotesException:Error發送通知\ r \ n \ tat lotus.domino.local.NotesCalendar.createEntry(Unknown Source)\ r \ n \ tat com.ibm.domino.calendar.dbstore.NotesCalendarStore.createEvent(NotesCalendarStore.java:201)\ r \ n \ t ... 65更多\ r \ n「} –

+0

這是請求:{ 」events「:[ { 」summary「:」Calendar API test「, 」location「:」Room 5「, 「description」:「test」, 「start」:{「date」:「2017-03-11」,「time」:「13:00:00」,「utc」:true}, 「end」 :{「日期」: 「2017-03-11」,「time」:「14:00:00」,「utc」:true}, 「organizer」:{「email」:「[email protected]」}, 「與會者 「: { 」角色「:」 REQ參與者 「 」用戶類型「: 」房間「, 」狀態「: 」需要採取行動「, 」RSVP「:真實, 」電子郵件「:」 [email protected]「 } ] } ] } –

+1

REST API正在調用Java方法(NotesCalendar.createEntry)。該方法拋出一個異常,並顯示「錯誤發送通知」消息。該消息記錄於此:https://www.ibm.com/support/knowledgecenter/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_CREATEENTRY_METHOD_CAL_JAVA.html。不幸的是,文檔沒有多大幫助。您是否嘗試過使用iNotes Web客戶端在room.display的日曆上創建類似的會議?在這種情況下邀請的房間? –