2017-02-01 35 views
0

ユーザーの訪問Webサイトは自分の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"); 

インターネットアドレスはこれが唯一のユーザーのために動作しますので、私は、なぜあなたは、ブラウザ側でJavaScriptでこれを行う代わりに、サーバー側でそれをやって思ったんだけど、あまりにも

+0

セッション・クラス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

良いだろうゲットNotesクライアントがインストールされ、正しく構成されているユーザーしかし、これが本当にあなたが行きたいと思う方法であれば...

セッションで自動的に取得できる唯一の情報は、ユーザーの名前です(いくつかの形式で)。他にも必要な場合は、サーバー上のユーザー情報を参照する必要があります。

あなたはより多くの情報を取得するために

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

を使用することができます。

ドミノディレクトリにいくつかの電話番号フィールドがあり、組織のポリシーと手順によってはすべてが入力されない場合があります。アイテム名(たとえば、 PhoneNumber "、" CellPhoneNumber "など)、LookupNamesに渡すfieldsArrayに取得するものを入れます。結果はNotesDirectoryNavigatorオブジェクトとして返され、そのオブジェクトのメソッドとプロパティを使用して値を取得できます。

+0

JSはサーバーが他の組織部門に属し、他の地域にも所在しているため、JSでやっているので、サーバー側では何も変更できません。これが唯一の方法です。フィールドOfficePhoneNumberが必要でした。あなたの答えは私の問題を解決しました。また、ユーザーの職場以外の場所からユーザーアカウントへのアクセスを制限するために作成されたLotusクライアントで承認します。 。 – Paul

+0

オフィス番号は、私の自動電話システムサーバーからのユーザーの電話に関する情報を得るためのキーです。そのため、Webページは小規模なメンバーエリアになり、電話に関する情報を持っています – Paul

+0

それは必ずしも実行できる唯一の方法ではありません。たとえば、Webサーバーがユーザーを認証してJavaを実行する場合、Webサーバー上で実行されるコードを記述してDomino Serverに接続し、NCSO.jarを使用して参照を実行できます。または、Webサーバー上の任意のlangaugeから、Domino REST APIを使用したり、LDAPを使用したりすることもできます。はい、Dominoサーバーはこれらの方法をサポートするように設定する必要がありますが、その1つに対して既に設定されている可能性があります。いずれにせよ、ブラウザから実行すると機能しますが、少し遅くなる可能性があります。 –

関連する問題