367.4. メッセージの消費
Yammer コンポーネントは、メッセージを消費するためのいくつかのエンドポイントを提供します。
URI | 説明 |
---|---|
yammer:messages?[options] | ユーザー (API 呼び出しを行うためにアクセストークンが使用されている) の Yammer ネットワーク内のすべてのパブリックメッセージ。Yammer Web インターフェイスのすべての会話に対応します。 |
yammer:my_feed?[options] | フォロー中とトップの会話の間で行った選択に基づく、ユーザーのフィード。 |
yammer:algo?[options] | 上位の会話に対応するユーザーのアルゴリズムフィード。これは、大多数のユーザーが Yammer Web インターフェイスに表示するものです。 |
yammer:following?[options] | ユーザーがフォローしている人々、グループ、およびトピックに関する会話であるフォロー中フィード。 |
yammer:sent?[options] | ユーザーが送信したすべてのメッセージ。 |
yammer:private?[options] | ユーザーが受信したプライベートメッセージ。 |
yammer:received?[options] | Camel 2.12.1: ユーザーが受信したすべてのメッセージ。 |
367.4.1. メッセージの形式
デフォルトでは、すべてのメッセージが org.apache.camel.component.yammer.model
パッケージで提供される POJO モデルに変換されます。yammer からの元のメッセージは JSON です。メッセージを消費および生成するすべてのエンドポイントに対して、Messages
オブジェクトが返されます。たとえば、次のようなルートを取ります。
from("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken")
.to("mock:result");
Copy to clipboardCopiedそして、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 clipboardCopied
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 clipboardCopied
とはいえ、このデータを POJO にマーシャリングするのは無料ではないため、必要な場合は、useJson=false
オプションを URI に追加して、純粋な JSON の使用に戻すことができます。