2017-02-01 58 views
0

用戶訪問它自己的PC上的網站並使用javaScript創建NotesSession。
Lotus Notes JavaScript獲取用戶信息

var ns = new ActiveXObject("Lotus.NotesSession"); 
ns.Initialize(pass); // user password 

我想獲得用戶信息,如姓名和公司電話號碼成功的會議結束後初始化。對於像「你好%username%,你的手機是%number%」的消息,如果我知道名字或其他東西,我知道如何從Domino服務器獲取有關特定用戶的信息,但在這種情況下,我會卡住一點。 如果我嘗試使用GetDatabase InternetExplorer掛起。

var db = ns.GetDatabase("", "names.nsf"); 

獲取網絡地址將是一件好事

+0

您可以查看Session class http://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_10_NOTES_CLASSES_ATOZ_JAVA.html –

+0

我現在可以獲取用戶名通過ns.CommonUserName,但仍然不知道如何獲得電話,使用循環從服務器數據庫找到電話用戶名不是一個選項,因爲它需要很多時間。 – Paul

回答

2

我不知道爲什麼你這樣做是在JavaScript在瀏覽器端,而不是做它在服務器端的,因爲這樣只會對用戶的工作誰已安裝並正確配置Notes客戶端。然而,如果這真的是你想要去的方式......

你會自動獲得的會話的唯一信息是用戶的名字(用幾種不同的格式)。如果你想要其他東西,你必須在服務器上查找用戶信息。

您可以使用

var nd = ns.getDirectory() 
var userinfo = NotesDirectory.LookupNames("$Users",ns.UserName, fieldsArray) 

,以獲得更多信息。

請注意,Domino目錄中有多個電話號碼字段,根據您組織的政策和程序,它們可能不會全部填入。您需要查找項目名稱(例如「OfficePhoneNumber」,「 PhoneNumber「,」CellPhoneNumber「..還有其他的),並把你想要檢索的那些放到你傳遞給LookupNames的fieldsArray中。您會將結果作爲NotesDirectoryNavigator對象返回,您可以使用該對象的方法和屬性來獲取該值。

+0

我正在用JS做它,因爲服務器屬於組織的其他部門,甚至位於其他地區,因此我不能在服務器端修改任何東西,這是如何完成的唯一方法。我需要現場OfficePhoneNumber,您的答案解決了我的問題。並授權蓮花客戶端限制除用戶工作場所以外的任何地方訪問用戶帳戶。 。 – Paul

+0

辦公室號碼是從我的自動電話系統服務器獲取有關用戶電話信息的關鍵,因此網頁將成爲小型成員區域,並提供有關呼叫的信息 – Paul

+0

這不一定是可以完成的唯一方式。例如,如果您的Web服務器對用戶進行身份驗證並運行Java,則可以編寫運行在Web服務器上的代碼以連接到Domino服務器,並使用NCSO.jar執行查找。或者從您的Web服務器上的任何語言開始,您都可以使用Domino REST API或甚至使用LDAP。是的,您的Domino服務器必須設置爲支持這些方法,但它可能已經爲其中的一個設置。無論如何,通過瀏覽器進行操作確實有效,但可能會稍慢一些。 –