0

私たちのツールは、接続 API を使用して、設定されたコミュニティの ID ブログにブログ エントリを送信しています。

したがって、コミュニティ ID のみを指定して、次のワークフローを使用します。

1) query /blogs/api/blogs?commUuid=<ID_HERE>&blogType=ideationblog
2) retrieve the link to the communities ideation blog from the xml result of aboves query. the xPath for this is "/app:service/app:workspace/app:collection[a:category[@term='entries']][1]/@href"
3) post the created blog entry payload to this url.

当方の環境ではこれで問題なく動作しました。しかし、これを顧客に導入したところ、機能しなくなりました。最初のステップの URL は空の xml ドキュメントを返すため、次のステップは実行できません。/blogs/{homepageHandle}/api/blogs?commUuid=&blogType=ideationblog のような顧客サーバーでさまざまな URL をクエリしようとしましたが、これらは正常に動作しますが、上記の API サービス ドキュメントへのクエリは、コレクション要素を含む唯一のものです。私が必要とするリンク。

この URL を取得するために、私ができる他の A​​PI 呼び出しはありますか? 私たちの環境では通話が正常に機能しているのに、顧客では失敗する理由を知っていますか? これはアクセス権の問題でしょうか?

おそらく「blogs//api/entries」のような URL を作成して投稿できることは承知していますが、communityUuid しか構成していないため、またそれがまさにその方法であるため、上記の方法をお勧めします。 API ドキュメントで説明されていること:

http://www-10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+4.5+API+Documentation#action=openDocument&res_title=Creating_blog_posts_ic45&content=pdcontent

ServiceDoc -> コレクション -> href

アップデート:

これは本当にSBTの問題かもしれません。空の xml ドキュメントが返されたという私の仮定は間違っていました。むしろ、SBT エンドポイント クラスを介した呼び出しが null を返しているということです。

Endpoint endpoint = EndpointFactory.getEndpoint("connections");
Object result = endpoint.xhrGet("/blogs/api"); // also tried for /blogs/<homepage>/api

これらの URL をブラウザで再度試したところ、完全な結果が得られました。これらすべての問題は、私自身の環境でこれを再現することも、顧客でこれをデバッグすることもできないことです. これから考えられる例外をキャッチしようとしましたが、何もスローされません。結果がnullになるだけです。

明確にするために: 同じ要求が、私たち自身の (Connections 4.0) 環境でも、顧客のブラウザーからでも完全に正常に機能します。もちろん、API 呼び出しと同様にブラウザでも同じユーザーを使用して認証を行っています。

endpoint.isAuthenticationValid();

もtrueを返すので、一見問題はありません...

4

1 に答える 1

2

私はずっと前に、IBM が文書化した REST API の指示に従おうとすることをあきらめていました (特に、リクエストを送信する必要がある URL に到達するためだけに、常に無数の REST リクエストで終わるため)。

すべての Connections 4.5 システムに対して両方の URL (/blogs/api/blogs?commUuid=... と /blogs/<homepage>/api/blogs...) を試してみましたが、xml ドキュメントが返されます。 ideaationblog への参照がどこにも含まれていません (そうです、私は確実に、ideation blog を含むコミュニティに対してクエストを行いました)。

これは、あなたがやりたくないと言った汚い回避策ですが、文書化された方法が機能しないため、私はこれを使用します:

ブログエントリを投稿するには、POST に対してする必要があります

/blogs/<bloghandle>/api/entries

コミュニティ内のアイデア ブログのハンドル (<snx:handle>) を見つけるには、次の操作を実行できます。

1.) Get the widgets-feed for the community: /communities/service/atom/community/widgets?communityUuid=...
2.) Navigate to the entry of the Ideation Blog widget: <snx:widgetDefId>IdeationBlog</snx:widgetDefId>. 

顧客システムの誰かが widgets-config.xml をいじっていない限り、widgetDefId は IdeationBlog になります。

3.) Take the <snx:widgetInstanceId> text of the Ideation Blog entry. 

それがアイデアブログのハンドルです。(はい、コミュニティのアイデア ブログは、アイデア ブログ ウィジェットの widgetInstanceId をハンドルとして作成されます。通常のブログは、タイトルのマッシュアップをハンドルとして作成されます)。エントリを投稿する URL を作成できるようになりました。

于 2013-10-29T12:49:01.740 に答える