1

「UserEndpoint」で OCS に接続する UCMA 2.0 アプリケーションを作成しています。プレゼンス メッセージをカスタム プレゼンス メッセージと一緒に設定できるようにしたいです。

途中でいくつかの問題に遭遇し、グーグルに多くの時間を費やし、いくつかの記事を試しましたが、大部分は同じことを言っているようです(MS自体を含む):

XML を使用して「userState」アクティビティをカスタムに設定し、メッセージを含めてから、エンドポイントの「LocalOwnerPresence.BeginPublishPresence」メソッドを介してカスタム カテゴリで公開します。

これを行っても OCS からエラーは返されませんが (以下の XML の例を参照)、Office Communicator (MOC) のプレゼンスを見ると、問題のユーザーは引き続きオフラインのように見えます。「machineState」も公開すると、MOC にプレゼンス アイコンが表示されることを意味することがわかりましたが、残念ながら、カスタム アクティビティ メッセージを機能させることができません。

さらに読むと、これを可能にするために実行する必要がある OCS DB 内のストアド プロシージャなど、野生のガチョウの追跡に私が送られました (単なるカスタム メッセージを既存の状態に追加するのではなく、新しいプレゼンス カテゴリを追加するように聞こえます)。私は「オンライン」で 1 日を過ごした後、自分のテザーの終わりにいるようなものです。

ヘルプや落とし穴を指摘していただければ幸いです。これを読んだときに使用したサイトのいくつかを含めました。

プレゼンスの概要: http://msdn.microsoft.com/en-us/library/dd253506(v=office.13).aspx

パブリッシング プレゼンス: http://msdn.microsoft.com/en-us/library/dd253494(v=office.13).aspx

プレゼンス + カスタム メッセージ: http://blogs.claritycon.com/blog/2009/03/04/how-to-publish-presence-using-ucma-v2-0-and-have-a-clever-communicator-status /

マシン状態のアイデア: http://social.msdn.microsoft.com/Forums/en-US/ucmanagedsdk/thread/d3bd3569-66c0-4b52-86f0-900d2fb6d22e/

プレゼンス スキーマ ドキュメント: http://msdn.microsoft.com/en-us/library/dd941536(v=office.13).aspx

これが私のコードで使用している XML (文字列) です。オンザフライで文字列を作成します。カスタム メッセージと可用性の整数値 ("テスト メッセージ" と引数のために 3500) を使用してプレースホルダーをフォーマットします。

string userStateXmlFormat = "<state xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" manual=\"true\" xsi:type=\"userState\">\n"
            + "<availability>{0}</availability>\n"
                + "<activity>\n" 
                   + "<custom xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\">{1}</custom>\n" 
                + "</activity>\n"
            + "</state>";

フォーマットを行い、プレゼンスを公開しようとする C# は次のとおりです。

var machineStateXml = string.Format(machineStateXmlFormat, 3500);
var userStateXml = string.Format(userStateXmlFormat, 3500, "Test Message");
var machineState = new CustomPresenceCategory("state", machineStateXml);
var userState = new CustomPresenceCategory("state", userStateXml);                
PresenceCategory[] categoriesToPublish = new PresenceCategory[] { machineState, userState };
this.Endpoint.LocalOwnerPresence.BeginPublishPresence(categoriesToPublish, this.PublishPresenceCompleted, null);

何も抜けていないことを願っています。何か欠けていると思われる場合はコメントしてください。

乾杯ピート

4

1 に答える 1

1

わかりました、これは私がなんとか解決したので少し恥ずかしいですが、MSに責任を負わせることができると思います:

MOC がカスタム メッセージを取得するには、カスタム メッセージで LCID (カルチャ情報 ID) を指定する必要があるようです。です)

http://msdn.microsoft.com/en-us/library/dd941468(v=office.13).aspx

LCID (int): ロケーション ID を表す整数。オプション

これは、カスタム メッセージを複数回追加する必要があることを意味しますが、MOC を使用する受信者がいる可能性のあるロケールごとに、最善の方法とは思えません (例として以下を参照)。

string userStateXmlFormat = "<state xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" manual=\"true\" xsi:type=\"userState\">\n"
  + "<availability>{0}</availability>\n"
  + "<activity>\n" 
    + "<custom LCID=\"1033\" xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\">{1}</custom>\n"
    + "<custom LCID=\"2057\" xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\">{1}</custom>\n" 
  + "</activity>\n"
+ "</state>";

とにかく、これがすべての文化のための一般的なメッセージを望んでいる他の誰かに役立つことを願っています。同様のものを作成したい場合は、上記のリンクも役立つかもしれません.

于 2011-06-21T09:14:52.333 に答える