370.5. メッセージの消費

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: ユーザーが受信したすべてのメッセージ。

370.5.1. メッセージの形式

デフォルトでは、すべてのメッセージが org.apache.camel.component.yammer.model パッケージで提供される POJO モデルに変換されます。yammer からの元のメッセージは JSON です。メッセージを消費および生成するすべてのエンドポイントに対して、Messages オブジェクトが返されます。たとえば、次のようなルートを取ります。

from("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken")
    .to("mock:result");

そして、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":[

                ]

            }
        }
        ]

    }

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());

とはいえ、このデータを POJO にマーシャリングするのは無料ではないため、必要な場合は、useJson=false オプションを URI に追加して、純粋な JSON の使用に戻すことができます。