第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>
Copy to Clipboard Toggle word wrap

URI 形式

yammer:[function]?[options]
Copy to Clipboard Toggle word wrap

YammerComponent

yammer コンポーネントは、Yammer アカウント設定で設定可能です。これは、使用前に設定する必要があります。これらのオプションは、エンドポイントで直接設定することもできます。
Expand
オプション 説明
consumerKey コンシューマーキー
consumerSecret コンシューマーシークレット
accessToken アクセストークン

メッセージの消費

camel-yammer コンポーネントは、メッセージを消費するための複数のエンドポイントを提供します。
Expand
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 オプション

Expand
名前 デフォルト値 説明
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");
Copy to Clipboard Toggle word wrap
yammer サーバーが以下を返すとします。
{
	"messages":[
		{
			"replied_to_id":null,
			"network_id":7654,
			"url":"https://www.yammer.com/api/v1/messages/305298242",
			"thread_id":305298242,
			"id":305298242,
			"message_type":"update",
			"chat_client_sequence":null,
			"body":{
				"parsed":"Testing yammer API...",
				"plain":"Testing yammer API...",
				"rich":"Testing yammer API..."
			},
			"client_url":"https://www.yammer.com/",
			"content_excerpt":"Testing yammer API...",
			"created_at":"2013/06/25 18:14:45 +0000",
			"client_type":"Web",
			"privacy":"public",
			"sender_type":"user",
			"liked_by":{
				"count":1,
				"names":[
					{
						"permalink":"janstey",
						"full_name":"Jonathan Anstey",
						"user_id":1499642294
					}
					
				]
				
			},
			"sender_id":1499642294,
			"language":null,
			"system_message":false,
			"attachments":[
				
			],
			"direct_message":false,
			"web_url":"https://www.yammer.com/redhat.com/messages/305298242"
		},
		{
			"replied_to_id":null,
			"network_id":7654,
			"url":"https://www.yammer.com/api/v1/messages/294326302",
			"thread_id":294326302,
			"id":294326302,
			"message_type":"system",
			"chat_client_sequence":null,
			"body":{
				"parsed":"(Principal Software Engineer) has [[tag:14658]] the redhat.com network. Take a moment to welcome Jonathan.",
				"plain":"(Principal Software Engineer) has #joined the redhat.com network. Take a moment to welcome Jonathan.",
				"rich":"(Principal Software Engineer) has #joined the redhat.com network. Take a moment to welcome Jonathan."
			},
			"client_url":"https://www.yammer.com/",
			"content_excerpt":"(Principal Software Engineer) has #joined the redhat.com network. Take a moment to welcome Jonathan.",
			"created_at":"2013/05/10 19:08:29 +0000",
			"client_type":"Web",
			"sender_type":"user",
			"privacy":"public",
			"liked_by":{
				"count":0,
				"names":[
					
				]
				
			}
		}	
		]
		
	}
Copy to Clipboard Toggle word wrap
Camel は、これを 2 つの Message オブジェクトが含まれる Messages オブジェクトにマーシャリングします。以下に示すように、必要な情報を簡単に取得できる豊富なオブジェクトモデルがあります。
        Exchange exchange = mock.getExchanges().get(0);
        Messages messages = exchange.getIn().getBody(Messages.class);

        assertEquals(2, messages.getMessages().size());
        assertEquals("Testing yammer API...", messages.getMessages().get(0).getBody().getPlain());
        assertEquals("(Principal Software Engineer) has #joined the redhat.com network. Take a moment to welcome Jonathan.", messages.getMessages().get(1).getBody().getPlain());
Copy to Clipboard Toggle word wrap
そのため、このデータを POJO にマーシャリングすることは無料ではないので、useJson=false オプションを URI に追加して、純粋な JSON を使用するように切り替える必要がある場合は、URI に useJson=false オプションを追加します。

メッセージの作成

現在のユーザーの アカウントに新しいメッセージを作成するには、以下の URI を使用できます。
yammer:messages?[options]
Copy to Clipboard Toggle word wrap
現在の Camel メッセージボディーは、Yammer メッセージのテキストを設定するために使用されるものです。応答本文には、メッセージ(デフォルトでは Messages オブジェクトとして)を消費する場合と同じようにフォーマットされた新しいメッセージが含まれます。
たとえば、以下のルートを作成します。
from("direct:start").to("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken").to("mock:result");
Copy to Clipboard Toggle word wrap
direct:start エンドポイントに "Hi from Camel!" メッセージボディーを送信すると、以下を行います。
template.sendBody("direct:start", "Hi from Camel!");
Copy to Clipboard Toggle word wrap
新しいメッセージがサーバーの現在のユーザーのアカウントに作成され、この新しいメッセージは 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());
Copy to Clipboard Toggle word wrap

ユーザー関係の取得

camel-yammer コンポーネントは、ユーザー関係を取得できます。
yammer:relationships?[options]
Copy to Clipboard Toggle word wrap

関係を取得するための URI オプション

Expand
名前 デフォルト値 説明
useJson false POJO に変換せずに raw JSON を使用する場合は true に設定します。
delay 5000 ミリ秒単位
consumerKey null Consumer Key。代わりに、YammerComponent レベルでも設定できます。
consumerSecret null コンシューマーシークレット。代わりに、YammerComponent レベルでも設定できます。
accessToken null アクセストークン。代わりに、YammerComponent レベルでも設定できます。
userId 現在のユーザー 現在のユーザー以外のユーザーの関係を表示します。

ユーザーの取得

camel-yammer コンポーネントは、ユーザーを取得するための複数のエンドポイントを提供します。
Expand
URI 説明
yammer:users?[options] 現在のユーザーの Yammer ネットワークでユーザーを取得します。
yammer:current?[options] 現在のユーザーのデータを表示します。

ユーザーを取得するための URI オプション

Expand
名前 デフォルト値 説明
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");
Copy to Clipboard Toggle word wrap
これにより、現在のユーザーの User オブジェクトを取得して、Camel メッセージボディーとして設定します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat