BOCCO API を使って、メッセージを取得する方法を学びます。

準備

追加権限の取得

メッセージを取得するAPIにアクセスするためには、追加の権限が必要です。BOCCOサポートにお問い合わせください。

アクセストークンの取得

API リクエストに、 access_token が必要です。
アクセストークンの取得 の手順に従い、access_token を事前に取得してください。

room_id の取得

メッセージを送信するチャットルームを指定するために、 room_id が必要です。 チャットルームの取得 の手順に従い、uuid (以後 room_id として使う) を事前に取得してください。

範囲を指定せずに取得

リクエスト

curl を使った場合のリクエスト例です。

room_id として、チャットルームの取得で返ってきた E7607BA3-2AA0-4DEB-8959-XXXXXXXXXXXX を使用します。

curl -i "https://api.bocco.me/alpha/rooms/E7607BA3-2AA0-4DEB-8959-XXXXXXXXXXXX/messages?access_token=x2c4sjxacw4tq72q5h9vrsgjbcz3p55ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

レスポンス

成功

正しいアクセストークンとチャットルームuuidを使用すれば、 JSON でチャットルームの配列が返ってきます。

レスポンスHeaders

HTTP/1.1 200 OK
Server: Cowboy
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Vary: Accept-Encoding
Date: Thu, 08 Sep 2016 09:22:03 GMT
Transfer-Encoding: chunked
Via: 1.1 vegur

レスポンスBody

[
  {
    "id": 60,
    "unique_id": "4ECD2AC5-C9EB-4415-BFAF-ZZZZZZZZZZZZ",
    "text": "こんにちはBOCCO!",
    "sender": "1bb7bf12-83cf-40fa-9c33-xxxxxxxxxxxx",
    "user": {
      "uuid": "1bb7bf12-83cf-40fa-9c33-xxxxxxxxxxxx",
      "user_type": "human",
      "nickname": "aopico",
      "icon": "http://localhost:8000/assets/images/23fe1d3a-c1e1-4c56-87ed-000000000000.png",
      "seller": ""
    },
    "date": "2014-12-23T14:58:06+09:00",
    "media": "text",
    "audio": "http://localhost:8000/1/messages/60.wav",
    "message_type": "normal",
    "detail": null
  },
  {
    "id": 61,
    "unique_id": "849C4F97-BB2D-4047-8A8E-YYYYYYYYYYYY",
    "text": "おはよう",
    "sender": "1bb7bf12-83cf-40fa-9c33-xxxxxxxxxxxx",
    "user": {
      "uuid": "1bb7bf12-83cf-40fa-9c33-xxxxxxxxxxxx",
      "user_type": "human",
      "nickname": "aopico",
      "icon": "http://localhost:8000/assets/images/23fe1d3a-c1e1-4c56-87ed-000000000000.png",
      "seller": ""
    },
    "date": "2014-12-23T14:58:38+09:00",
    "media": "text",
    "audio": "http://localhost:8000/1/messages/C4D86E06-2C1F-4672-988F-000000000000.wav",
    "message_type": "normal",
    "detail": null
  }
]

失敗

access_token が誤っていると、 401 が返ります。

レスポンスHeaders

HTTP/1.1 401 Unauthorized
Server: Cowboy
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Vary: Accept-Encoding
Date: Thu, 08 Sep 2016 09:03:25 GMT
Content-Length: 43
Via: 1.1 vegur

レスポンスBody

{
    "code" : 401001,
    "message" : "Unauthorized"
}

room_id が誤っている、もしくは権限が無い場合、404が返ります。

レスポンスHeaders

HTTP/1.1 404 Not Found
Server: Cowboy
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Vary: Accept-Encoding
Date: Fri, 07 Oct 2016 03:18:55 GMT
Content-Length: 37
Via: 1.1 vegur

レスポンスBody

{
    "code" : 404001,
    "message" : "Not Found"
}

範囲を指定して取得

先ほどのレスポンスでは、最新の id として 61 が取得出来ました。
次に、61より新しいメッセージのみを取得してみましょう。

リクエスト

先ほどのリクエストのクエリストリングに newer_than を追加します。

  • newer_than : 61 を指定します。この時、id:61 は含まれない点に注意してください。
curl -i "https://api.bocco.me/alpha/rooms/E7607BA3-2AA0-4DEB-8959-XXXXXXXXXXXX/messages?access_token=x2c4sjxacw4tq72q5h9vrsgjbcz3p55ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&newer_than=61"

レスポンス

[]

空のレスポンスが返ってきましたか?先ほどメッセージを取得してから新しいメッセージがなければ、このようなレスポンスが返って来ます。

メッセージの送信 のように、1件新しいメッセージを送信してみましょう。

再度リクエスト

メッセージを送信したら、先ほどと同じ内容で再度メッセージを取得してみます。

curl -i "https://api.bocco.me/alpha/rooms/E7607BA3-2AA0-4DEB-8959-XXXXXXXXXXXX/messages?access_token=x2c4sjxacw4tq72q5h9vrsgjbcz3p55ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&newer_than=61"

レスポンス

[
  {
    "id": 70,
    "unique_id": "DC1F23A2-7571-4CBE-8364-XXXXXXXXXXXX",
    "text": "こんばんは",
    "sender": "1bb7bf12-83cf-40fa-9c33-xxxxxxxxxxxx",
    "user": {
      "uuid": "1bb7bf12-83cf-40fa-9c33-xxxxxxxxxxxx",
      "user_type": "human",
      "nickname": "aopico",
      "icon": "http://localhost:8000/assets/images/23fe1d3a-c1e1-4c56-87ed-000000000000.png",
      "seller": ""
    },
    "date": "2014-12-23T15:30:13+09:00",
    "media": "text",
    "audio": "http://localhost:8000/1/messages/37025D32-CA82-4D86-9A0D-000000000000.wav",
    "message_type": "normal",
    "detail": null
  }
]

送信したメッセージが返ってきます。

これで「メッセージを取得する」のチュートリアルを終わります。
さらに詳細が知りたい場合は、リファレンス(メッセージ一覧の取得) をご覧ください。

Tags: tutorial