Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第191章 Yammer
Yammer リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Yammer コンポーネントを使用すると、Yammer 企業のソーシャルネットワークと対話できます。メッセージ、ユーザー、およびユーザー関係、および新規メッセージの作成がサポートされます。
Yammer は、すべてのクライアントアプリケーション認証に OAuth 2 を使用します。アカウントで camel-yammer を使用するには、Yammer 内に新しいアプリケーションを作成し、アプリケーションにアカウントへのアクセスを許可する必要があります。最後に、アクセストークンを生成します。詳細は、https://developer.yammer.com/v1.0/docs/authentication を参照してください。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-yammer</artifactId> <version>${camel-version}</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-yammer</artifactId>
<version>${camel-version}</version>
</dependency>
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
yammer:[function]?[options]
yammer:[function]?[options]
YammerComponent リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
yammer コンポーネントは、Yammer アカウント設定で設定可能です。これは、使用前に設定する必要があります。これらのオプションは、エンドポイントで直接設定することもできます。
オプション | 説明 |
---|---|
consumerKey
|
コンシューマーキー |
consumerSecret
|
コンシューマーシークレット |
accessToken
|
アクセストークン |
メッセージの消費 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
camel-yammer コンポーネントは、メッセージを消費するための複数のエンドポイントを提供します。
URI | 説明 |
---|---|
Yammer:messages?オプション | ユーザーの(API 呼び出しを行うのにアクセストークンが使用されている)ユーザーのすべての公開メッセージ)Yammer ネットワーク。Yammer Web インターフェイスの "All" 会話に対応します。 |
Yammer:my_feed?オプション | "Follow" と "Top" 会話の間の選択に基づいて、ユーザーのフィード。 |
Yammer:algo?options | Yammer Web インターフェイスで大部分のユーザーに表示される Top 会話に対応するユーザーのアルゴリズムフィード。 |
Yammer:following?オプション | ユーザーが従うユーザー、グループ、トピックに関する会話となる "Follow" フィード。 |
Yammer:sent?オプション | ユーザーが送信するすべてのメッセージ。 |
Yammer:private?オプション | ユーザーが受信したプライベートメッセージ。 |
Yammer:received?オプション | Camel 2.12.1: ユーザーが受信したすべてのメッセージ |
メッセージの消費用の URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
useJson
|
false
|
POJO に変換せずに raw JSON を使用する場合は true に設定します。 |
delay
|
5000
|
ミリ秒単位 |
consumerKey
|
null
|
Consumer Key。代わりに、YammerComponent レベルでも設定できます。
|
consumerSecret
|
null
|
コンシューマーシークレット。代わりに、YammerComponent レベルでも設定できます。
|
accessToken
|
null
|
アクセストークン。代わりに、YammerComponent レベルでも設定できます。
|
limit
|
-1
|
指定されたメッセージ数のみを返します。threaded=true および threaded=extended で機能します。 |
threaded
|
null
|
threaded=true は、各スレッドの最初のメッセージのみを返します。このパラメーターは、メッセージスレッドが折りたたまれたアプリケーション向けのものです。threading=extended は、最後にアクティブなメッセージと、Yammer Web インターフェイスのデフォルトビューで表示される 2 つの最新のメッセージ順にスレッドスターターメッセージを返します。 |
olderThan
|
-1
|
数値の文字列として指定されたメッセージ ID よりも古いメッセージを返します。これは、メッセージのページネーションに役立ちます。たとえば、現在 20 個のメッセージが表示されており、最も古いメッセージが 2912 である場合は、リクエストに "?olderThan=2912? を追加して、表示しているメッセージの前に 20 個のメッセージを取得できます。 |
newerThan
|
-1
|
数値の文字列として指定されたメッセージ ID よりも新しいメッセージを返します。これは、新しいメッセージをポーリングする際に使用する必要があります。メッセージを確認し、返された最新のメッセージが 3516 の場合は、パラメーター "?newerThan=3516? で要求を行い、ページにすでにあるメッセージの複製コピーを取得しないようにします。 |
メッセージの形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、すべてのメッセージは org.apache.camel.component.yammer.model パッケージで提供される POJO モデルに変換されます。yammer からの元のメッセージは JSON にあります。エンドポイントの使用および生成を行うすべてのメッセージでは、Messages オブジェクトが返されます。以下のようなルートの例を以下に示します。
from("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken").to("mock:result");
from("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken").to("mock:result");
yammer サーバーが以下を返すとします。
Camel は、これを 2 つの Message オブジェクトが含まれる Messages オブジェクトにマーシャリングします。以下に示すように、必要な情報を簡単に取得できる豊富なオブジェクトモデルがあります。
そのため、このデータを POJO にマーシャリングすることは無料ではないので、useJson=false オプションを URI に追加して、純粋な JSON を使用するように切り替える必要がある場合は、URI に useJson=false オプションを追加します。
メッセージの作成 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
現在のユーザーの アカウントに新しいメッセージを作成するには、以下の URI を使用できます。
yammer:messages?[options]
yammer:messages?[options]
現在の Camel メッセージボディーは、Yammer メッセージのテキストを設定するために使用されるものです。応答本文には、メッセージ(デフォルトでは Messages オブジェクトとして)を消費する場合と同じようにフォーマットされた新しいメッセージが含まれます。
たとえば、以下のルートを作成します。
from("direct:start").to("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken").to("mock:result");
from("direct:start").to("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken").to("mock:result");
direct:start エンドポイントに "Hi from Camel!" メッセージボディーを送信すると、以下を行います。
template.sendBody("direct:start", "Hi from Camel!");
template.sendBody("direct:start", "Hi from Camel!");
新しいメッセージがサーバーの現在のユーザーのアカウントに作成され、この新しいメッセージは Camel に返され、Messages オブジェクトに変換されます。メッセージを使用するときと同様に、Messages オブジェクトを以下のように対話できます。
Exchange exchange = mock.getExchanges().get(0); Messages messages = exchange.getIn().getBody(Messages.class); assertEquals(1, messages.getMessages().size()); assertEquals("Hi from Camel!", messages.getMessages().get(0).getBody().getPlain());
Exchange exchange = mock.getExchanges().get(0);
Messages messages = exchange.getIn().getBody(Messages.class);
assertEquals(1, messages.getMessages().size());
assertEquals("Hi from Camel!", messages.getMessages().get(0).getBody().getPlain());
ユーザー関係の取得 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
camel-yammer コンポーネントは、ユーザー関係を取得できます。
yammer:relationships?[options]
yammer:relationships?[options]
関係を取得するための URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
useJson |
false
|
POJO に変換せずに raw JSON を使用する場合は true に設定します。 |
delay |
5000
|
ミリ秒単位 |
consumerKey |
null
|
Consumer Key。代わりに、YammerComponent レベルでも設定できます。
|
consumerSecret |
null
|
コンシューマーシークレット。代わりに、YammerComponent レベルでも設定できます。
|
accessToken |
null
|
アクセストークン。代わりに、YammerComponent レベルでも設定できます。
|
userId |
現在のユーザー
|
現在のユーザー以外のユーザーの関係を表示します。 |
ユーザーの取得 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
camel-yammer コンポーネントは、ユーザーを取得するための複数のエンドポイントを提供します。
URI | 説明 |
---|---|
yammer:users?[options]
|
現在のユーザーの Yammer ネットワークでユーザーを取得します。 |
yammer:current?[options]
|
現在のユーザーのデータを表示します。 |
ユーザーを取得するための URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
useJson |
false
|
POJO に変換せずに raw JSON を使用する場合は true に設定します。 |
delay |
5000
|
ミリ秒単位 |
consumerKey |
null
|
Consumer Key。代わりに、YammerComponent レベルでも設定できます。
|
consumerSecret |
null
|
コンシューマーシークレット。代わりに、YammerComponent レベルでも設定できます。
|
accessToken |
null
|
アクセストークン。代わりに、YammerComponent レベルでも設定できます。
|
Enricher の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
camel-yammer のポーリングコンシューマーの 1 つで始まるルートではなく、Enricher パターンを使用すると便利です(または、常にユーザーや関係コンシューマーの場合)。これは、コンシューマーが繰り返し実行されますが、多くの場合、遅延を設定します。ユーザーのデータを検索するか、一度にメッセージを取得する場合は、そのコンシューマーを一度呼び出してルートで取得することが推奨されます。
ある時点でルートを取得して、現在のユーザーのユーザーデータをフェッチする必要があるとします。このユーザーのポーリングを再度ポーリングするのではなく、pollEnrich DSL メソッドを使用します。
from("direct:start").pollEnrich("yammer:current?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken").to("mock:result");
from("direct:start").pollEnrich("yammer:current?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken").to("mock:result");
これにより、現在のユーザーの User オブジェクトを取得して、Camel メッセージボディーとして設定します。