স্ট্যাটিক কার্ড

আপনি সাধারণ REST API ব্যবহার করে স্ট্যাটিক কার্ড সন্নিবেশ, আপডেট, পড়তে এবং মুছতে পারেন। উপরন্তু, আপনি একটি স্ট্যাটিক কার্ডে বস্তু সংযুক্ত করতে পারেন, যেমন একটি অবস্থান বা মিডিয়া।

তারা কিভাবে কাজ করে

স্ট্যাটিক কার্ডগুলি ডিফল্টরূপে গ্লাস ঘড়ির ডানদিকে থাকে এবং বিতরণের সময় ব্যবহারকারীর সাথে প্রাসঙ্গিক তথ্য প্রদর্শন করে। যাইহোক, তাদের লাইভ কার্ডের মতো অবিলম্বে মনোযোগের প্রয়োজন নেই এবং ব্যবহারকারীরা তাদের নিজস্ব অবসর সময়ে কার্ডটি পড়তে বা কাজ করতে বেছে নিতে পারেন।

যখন গ্লাসওয়্যার টাইমলাইনে স্ট্যাটিক কার্ড সন্নিবেশ করে, তখন ব্যবহারকারীদের সতর্ক করার জন্য গ্লাস একটি বিজ্ঞপ্তি শব্দ বাজাতে পারে। সমস্ত পূর্ববর্তী স্ট্যাটিক কার্ডগুলিও ডানদিকে সরে যায় এবং 7 দিন পরে বা 200টি কার্ড নতুন হলে টাইমলাইন থেকে অদৃশ্য হয়ে যায়।

কখন এগুলো ব্যবহার করবেন

স্ট্যাটিক কার্ডগুলি গুরুত্বপূর্ণ জিনিসগুলি ঘটলে ব্যবহারকারীদের কাছে পর্যায়ক্রমিক বিজ্ঞপ্তিগুলি সরবরাহ করার জন্য দুর্দান্ত৷ উদাহরণস্বরূপ, একটি নিউজ ডেলিভারি পরিষেবা যা ঘটে যাওয়ার সাথে সাথে শীর্ষ সংবাদ পাঠায়। মিরর API স্ট্যাটিক কার্ডগুলিও OPEN_URI মেনু আইটেমের মাধ্যমে লাইভ কার্ড বা নিমজ্জন শুরু করতে পারে৷ এটি আপনাকে হাইব্রিড মিথস্ক্রিয়া তৈরি করতে দেয় যা স্ট্যাটিক কার্ডগুলিকে বিজ্ঞপ্তি হিসাবে ব্যবহার করে এবং একটি লাইভ কার্ড বা আরও ইন্টারেক্টিভ অভিজ্ঞতার জন্য নিমজ্জন করে।

টাইমলাইন আইটেমগুলির জন্য সম্ভাব্য ক্রিয়াকলাপগুলির সম্পূর্ণ তালিকার জন্য, রেফারেন্স ডকুমেন্টেশন দেখুন।

স্ট্যাটিক কার্ড ঢোকানো

স্ট্যাটিক কার্ড (টাইমলাইন আইটেম) সন্নিবেশ করতে, REST এন্ডপয়েন্টে একটি টাইমলাইন আইটেমের JSON উপস্থাপনা পোস্ট করুন।

একটি টাইমলাইন আইটেমের বেশিরভাগ ক্ষেত্র ঐচ্ছিক। এর সহজতম আকারে, একটি টাইমলাইন আইটেমে শুধুমাত্র একটি ছোট পাঠ্য বার্তা রয়েছে, যেমন এই উদাহরণে:

কাঁচা HTTP

POST /mirror/v1/timeline HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer {auth token}
Content-Type: application/json
Content-Length: 26

{ "text": "Hello world" }

জাভা

TimelineItem timelineItem = new TimelineItem();
timelineItem.setText("Hello world");
service.timeline().insert(timelineItem).execute();

পাইথন

timeline_item = {'text': 'Hello world'}
service.timeline().insert(body=timeline_item).execute()

সফল হলে, আপনি তৈরি করা আইটেমের সম্পূর্ণ অনুলিপি সহ একটি 201 Created প্রতিক্রিয়া কোড পাবেন। পূর্ববর্তী উদাহরণের জন্য, একটি সফল প্রতিক্রিয়া এইরকম দেখতে পারে:

কাঁচা HTTP

HTTP/1.1 201 Created
Date: Tue, 25 Sep 2012 23:30:11 GMT
Content-Type: application/json
Content-Length: 303

{
 "kind": "glass#timelineItem",
 "id": "1234567890",
 "selfLink": "https://www.googleapis.com/mirror/v1/timeline/1234567890",
 "created": "2012-09-25T23:28:43.192Z",
 "updated": "2012-09-25T23:28:43.192Z",
 "etag": "\"G5BI0RWvj-0jWdBrdWrPZV7xPKw/t25selcGS3uDEVT6FB09hAG-QQ\"",
 "text": "Hello world"
}

ঢোকানো আইটেম যা ব্যবহারকারীর টাইমলাইনে প্রদর্শিত হবে তা এইরকম দেখাচ্ছে:

একটি সংযুক্তি সহ একটি টাইমলাইন আইটেম সন্নিবেশ করা হচ্ছে৷

একটি ছবি হাজার শব্দের মূল্য, যা আপনি একটি টাইমলাইন আইটেমের সাথে ফিট করতে পারেন তার চেয়ে অনেক বেশি। এই লক্ষ্যে, আপনি একটি টাইমলাইন আইটেমের সাথে ছবি এবং ভিডিও সংযুক্ত করতে পারেন। একটি ফটো সংযুক্তি সহ একটি টাইমলাইন আইটেম কীভাবে সন্নিবেশ করা যায় তার একটি উদাহরণ এখানে রয়েছে:

কাঁচা HTTP

POST /upload/mirror/v1/timeline HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer {auth token}
Content-Type: multipart/related; boundary="mymultipartboundary"
Content-Length: {length}

--mymultipartboundary
Content-Type: application/json; charset=UTF-8

{ "text": "A solar eclipse of Saturn. Earth is also in this photo. Can you find it?" }
--mymultipartboundary
Content-Type: image/jpeg
Content-Transfer-Encoding: binary

[binary image data]
--mymultipartboundary--

জাভা

TimelineItem timelineItem = new TimelineItem();
timelineItem.setText("Hello world");
InputStreamContent mediaContent = new InputStreamContent(contentType, attachment);
service.timeline().insert(timelineItem, mediaContent).execute();

পাইথন

timeline_item = {'text': 'Hello world'}
media_body = MediaIoBaseUpload(
    io.BytesIO(attachment), mimetype=content_type, resumable=True)
service.timeline().insert(body=timeline_item, media_body=media_body).execute()

একটি সংযুক্ত চিত্র সহ একটি টাইমলাইন আইটেম গ্লাসে এরকম কিছু দেখায়:

ভিডিও সংযুক্ত করা হচ্ছে

আপনি যদি আপনার টাইমলাইন আইটেমগুলিতে ভিডিও ফাইল সংযুক্ত করে থাকেন তবে আমরা সুপারিশ করি যে আপনি একবারে পুরো পেলোড আপলোড করার পরিবর্তে ভিডিওটি স্ট্রিম করুন৷ গুগল মিরর API HTTP লাইভ স্ট্রিমিং, প্রগতিশীল ডাউনলোড এবং রিয়েল টাইম স্ট্রিমিং প্রোটোকল (RTSP) সহ স্ট্রিমিং সমর্থন করে। RTSP প্রায়ই ফায়ারওয়াল দ্বারা ব্লক করা হয়, তাই যখন সম্ভব অন্য বিকল্পগুলি ব্যবহার করুন।

ভিডিও স্ট্রিম করতে, PLAY_VIDEO বিল্ট-ইন মেনু আইটেমটি ব্যবহার করুন এবং মেনু আইটেমের payload হতে ভিডিওর URL নির্দিষ্ট করুন৷ আরও তথ্যের জন্য অন্তর্নির্মিত মেনু আইটেম এবং সমর্থিত মিডিয়া ফর্ম্যাট যোগ করা দেখুন।

পেজিনেটিং

আপনি টাইমলাইন আইটেমগুলি পেজিনেট করতে পারেন যেগুলি একটি একক টাইমলাইন কার্ডে খাপ খায় না, তবে অন্যথায় একই কার্ডের সাথে যুক্ত হওয়া উচিত৷ পেজিনেটেড আইটেমগুলি সব একই timeline.id শেয়ার করে এবং সেইজন্য মেনু আইটেমগুলির একই সেট রয়েছে৷ যখন একজন ব্যবহারকারী একটি পেজিনেটেড টাইমলাইন আইটেম ট্যাপ করে, তখন একটি আরও পড়ুন মেনু আইটেম প্রদর্শিত হয়।

গ্লাস স্বয়ংক্রিয়ভাবে টাইমলাইন আইটেমগুলিকে পেজিনেট করে যা text প্রদর্শন করে। গ্লাস স্বয়ংক্রিয়ভাবে html পেজিনেট করার জন্য, নীচের উদাহরণের মতো auto-paginate সেট করা article ট্যাগটি ক্লাস প্রপার্টি সহ ব্যবহার করুন:

<article class="auto-paginate">
 <h3>Very long list</h3>
 <ul>
   <li>First item</li>
   <li>Second item</li>
   <li>Third item</li>
   <li>Fourth item</li>
   <li>Fifth item</li>
   <li>Sixth item</li>
   <li>...</li>
 </ul>
<article>

ম্যানুয়ালি পেজিনেট করতে, আপনি প্রতিটি কার্ডে যে বিষয়বস্তু প্রদর্শন করতে চান তার জন্য article ট্যাগ ব্যবহার করুন। গ্লাস একটি পৃথক সাব-টাইমলাইন কার্ডে প্রতিটি article ট্যাগের বিষয়বস্তু প্রদর্শন করে। উদাহরণস্বরূপ, আপনি নিম্নলিখিত এইচটিএমএল দিয়ে একটি পেজিনেটেড টাইমলাইন আইটেম তৈরি করতে পারেন:

<article>
 <section>
   <p>First page</p>
 </section>
</article>

<article>
 <section>
   <p>Second page</p>
 </section>
</article>

<article>
 <section>
   <p>Third page</p>
 </section>
</article>

ডিফল্টরূপে, পেজিনেটেড টাইমলাইন আইটেমের প্রথম কার্ডটি কভার কার্ড হিসাবে প্রদর্শিত হয় এবং ব্যবহারকারী যখন আরও পড়ুন মেনু আইটেমটি নির্বাচন করে তখন আবার প্রদর্শিত হয়। আরও পড়ুন ট্যাপ করার পরে প্রথম কার্ডটি আবার উপস্থিত হওয়া থেকে রোধ করতে, আপনি প্রথম <article> ট্যাগের জন্য cover-only সিএসএস ক্লাস নির্দিষ্ট করতে পারেন:

<article class="cover-only">
...

cover-only ক্লাসটি স্বয়ংক্রিয়-প্যাজিনেটেড টাইমলাইন আইটেমগুলিকে সমর্থন করে:

<article class="auto-paginate cover-only">
...

বান্ডলিং

বান্ডলিং আপনাকে একটি ইমেল থ্রেডে পৃথক বার্তার মতো সম্পর্কিত কিন্তু স্বতন্ত্র আইটেমগুলিকে একত্রে গোষ্ঠীভুক্ত করতে দেয়৷ বান্ডেলের একটি প্রধান কভার কার্ড থাকে যা একজন ব্যবহারকারী একটি সাব-টাইমলাইন প্রদর্শন করতে ট্যাপ করে যাতে বান্ডেলের অন্যান্য কার্ড থাকে। বান্ডেলগুলিকে সাধারণ টাইমলাইন কার্ড থেকে আলাদা করা হয় বান্ডেলের কভার কার্ডের উপরের ডানদিকে কোণার ভাঁজ দ্বারা।

টাইমলাইন আইটেমগুলিকে বান্ডেল করতে, সেগুলিকে bundleId এর জন্য একই মান দিয়ে তৈরি করুন৷ অতি সম্প্রতি যোগ করা আইটেমটি হল বান্ডেলের কভার কার্ড৷

নীচের চিত্রগুলি উপরের ডানদিকে কোণার ভাঁজ সহ একটি বান্ডিল কভার কার্ড এবং নীচে দুটি বান্ডিল কার্ড দেখায়৷

টাইমলাইন আইটেম পড়া

আপনার পরিষেবা এটি তৈরি করা সমস্ত টাইমলাইন আইটেম এবং এটির সাথে শেয়ার করা সমস্ত টাইমলাইন আইটেম অ্যাক্সেস করতে পারে৷ আপনার পরিষেবাতে দৃশ্যমান টাইমলাইন আইটেমগুলি কীভাবে তালিকাভুক্ত করবেন তা এখানে।

কাঁচা HTTP

GET /mirror/v1/timeline HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer {auth token}

জাভা

TimelineItem timelineItem = new TimelineItem();
service.timeline().list().execute();

পাইথন

service.timeline().list().execute()

আপনি টাইমলাইন আইটেমগুলি পেতে , আপডেট করতে এবং মুছতে অন্যান্য REST অপারেশনগুলি ব্যবহার করতে পারেন৷

সংযুক্তিগুলি অ্যাক্সেস করা হচ্ছে

আপনি attachments নামের একটি অ্যারে প্রোপার্টির মাধ্যমে একটি টাইমলাইন আইটেমের সংযুক্তি অ্যাক্সেস করতে পারেন। তারপরে আপনি সংযুক্তির contentUrl সম্পত্তির মাধ্যমে বা সংযুক্তির শেষ পয়েন্টের মাধ্যমে একটি সংযুক্তির বাইনারি ডেটা পেতে পারেন।

কাঁচা HTTP

GET /mirror/v1/timeline/{itemId}/attachments/{attachmentId} HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer {auth token}

জাভা

TimelineItem item = service.timeline().get(itemId).execute();
String attachmentId = item.getAttachments().get(0).getId();
service.attachments().get(itemId, attachmentId).executeAsInputStream();

মেনু আইটেম তৈরি করা হচ্ছে

মেনু আইটেমগুলি ব্যবহারকারীদের টাইমলাইন কার্ডের সাথে সম্পর্কিত অ্যাকশনগুলির জন্য অনুরোধ করতে দেয় এবং দুটি প্রকারে আসে: অন্তর্নির্মিত মেনু আইটেম এবং কাস্টম মেনু আইটেম।

অন্তর্নির্মিত মেনু আইটেমগুলি গ্লাস দ্বারা প্রদত্ত বিশেষ কার্যকারিতাগুলিতে অ্যাক্সেস প্রদান করে, যেমন একটি টাইমলাইন কার্ড জোরে পড়া, একটি অবস্থানে নেভিগেট করা, একটি চিত্র ভাগ করা বা একটি বার্তার উত্তর দেওয়া:

কাস্টম মেনু আইটেমগুলি আপনার অ্যাপ্লিকেশনকে আপনার গ্লাসওয়্যারের সাথে নির্দিষ্ট আচরণ প্রকাশ করার অনুমতি দেয় এবং আপনি আপনার ব্র্যান্ডিংয়ের সাথে মেলে একটি মেনু আইটেম আইকনও প্রদান করতে পারেন।

অন্তর্নির্মিত মেনু আইটেম যোগ করা হচ্ছে

আপনি অন্তর্নির্মিত মেনু আইটেমগুলি আপনার টাইমলাইন আইটেমগুলিতে যোগ করতে পারেন যখন আপনি সেগুলি ঢোকাতে পারেন menuItems array পপুলেট করে৷ একটি অন্তর্নির্মিত মেনু আইটেম ব্যবহার করতে, আপনাকে শুধুমাত্র প্রতিটি menuItem action পূরণ করতে হবে।

কাঁচা HTTP

HTTP/1.1 201 Created
Date: Tue, 25 Sep 2012 23:30:11 GMT
Content-Type: application/json
Content-Length: 303

{
  "text": "Hello world",
  "menuItems": [
    {
      "action": "REPLY"
    }
  ]
}

কাস্টম মেনু আইটেম সংজ্ঞায়িত করা

যদি অন্তর্নির্মিত মেনু আইটেমগুলি আপনার জন্য কাজ না করে, আপনি একটি টাইমলাইন আইটেম সন্নিবেশ বা আপডেট করার সময় নিম্নলিখিতগুলি করে আপনার নিজের ক্রিয়াগুলির সাথে কাস্টম মেনু আইটেম তৈরি করতে পারেন:

  • menuItem.action এর জন্য CUSTOM নির্দিষ্ট করুন।
  • একটি menuItem.id উল্লেখ করুন। যখন ব্যবহারকারীরা কাস্টম মেনু আইটেমটি আলতো চাপেন, তখন আপনার গ্লাসওয়্যার menuItem.id জনবহুল সহ একটি বিজ্ঞপ্তি পায়। এটি আপনাকে বিজ্ঞপ্তির উত্স নির্ধারণ করতে দেয়।
  • গ্লাসে প্রদর্শিত একটি iconUrl এবং displayName যোগ করতে menuItem.values ​​নির্দিষ্ট করুন। একটি 50 x 50 PNG চিত্রের দিকে নির্দেশ করুন যা iconUrl এর জন্য একটি স্বচ্ছ পটভূমি সহ সাদা রঙের।
  • একটি displayTime নির্দিষ্ট করুন। আপনি যদি displayTime নির্দিষ্ট না করেন, টাইমলাইন আইটেমটি টাইমলাইনের সামনে চলে যায় যখনই ব্যবহারকারীরা কাস্টম মেনু আইটেমটি আলতো চাপেন।

কাঁচা HTTP

HTTP/1.1 201 Created
Date: Tue, 25 Sep 2012 23:30:11 GMT
Content-Type: application/json
Content-Length: 303

{
  "text": "Hello world",
  "displayTime": "2013-08-08T22:47:31-07:00",
  "menuItems": [
    {
      "action": "CUSTOM",
      "id": "complete"
      "values": [{
        "displayName": "Complete",
        "iconUrl": "http://example.com/icons/complete.png"
      }]
    }
  ]
}

ব্যবহারকারীদের আপনার টাইমলাইন কার্ড পিন করার অনুমতি দেয়

আপনি একটি মেনু আইটেম তৈরি করতে পারেন যা আপনার ব্যবহারকারীদের টাইমলাইন কার্ড পিন করতে দেয়, যা স্থায়ীভাবে প্রধান ঘড়ি কার্ডের বাম দিকে টাইমলাইন কার্ড প্রদর্শন করে। ব্যবহারকারীরা একই মেনু আইটেম ব্যবহার করে কার্ডটি আনপিন করতে পারেন।

পিনিং মেনু আইটেমটি একটি অন্তর্নির্মিত মেনু আইটেম, তাই আপনাকে যা করতে হবে তা হল একটি menuItem জন্য TOGGLE_PINNED action প্রদান করা।

কাঁচা HTTP

HTTP/1.1 201 Created
Date: Tue, 25 Sep 2012 23:30:11 GMT
Content-Type: application/json
Content-Length: 303

{
  "text": "You can pin or unpin this card.",
 "menuItems": [
    {
      "action": "TOGGLE_PINNED"
    }
  ...
 ]
}

সদস্যতা

মিরর এপিআই আপনাকে বিজ্ঞপ্তিগুলিতে সদস্যতা নিতে দেয় যা ব্যবহারকারী যখন একটি টাইমলাইন আইটেমে নির্দিষ্ট পদক্ষেপ নেয় বা ব্যবহারকারীর অবস্থান আপডেট করা হয় তখন পাঠানো হয়। আপনি যখন একটি বিজ্ঞপ্তিতে সদস্যতা নেন, আপনি একটি কলব্যাক URL প্রদান করেন যা বিজ্ঞপ্তিটি প্রক্রিয়া করে৷

বিজ্ঞপ্তি প্রাপ্তি

মিরর এপিআই থেকে একটি বিজ্ঞপ্তি একটি JSON অনুরোধ বডি ধারণকারী সদস্যতা শেষ পয়েন্টে একটি POST অনুরোধ হিসাবে পাঠানো হয়।

কাঁচা HTTP

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "<TYPE>",
      "payload": "<PAYLOAD>"
    }
  ]
}

জাভা

import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.mirror.model.Notification;

import java.io.IOException;
import java.io.InputStream;
// ...

public class MyClass {
  // ...

  /**
    * Parse a request body into a Notification object.
    *
    * @param requestBody The notification payload sent by the Mirror API.
    * @return Parsed notification payload if successful, {@code null} otherwise.
    */
  static Notification parseNotification(InputStream requestBody) {
    try {
      JsonFactory jsonFactory = new JacksonFactory();

      return jsonFactory.fromInputStream(requetBody, Notification.class);
    } catch (IOException e) {
      System.out.println("An error occurred: " + e);
      return null;
    }
  }

  // ...
}

পাইথন

import json

def parse_notification(request_body):
  """Parse a request body into a notification dict.

  Params:
    request_body: The notification payload sent by the Mirror API as a string.
  Returns:
    Dict representing the notification payload.
  """
  return json.load(request_body)

কোনো ত্রুটি না ঘটলে আপনার পরিষেবাকে অবশ্যই 200 OK HTTP স্ট্যাটাস কোড সহ API-এ সাড়া দিতে হবে। যদি আপনার পরিষেবা একটি ত্রুটি কোডের সাথে প্রতিক্রিয়া জানায়, মিরর API আপনার পরিষেবাতে বিজ্ঞপ্তিটি পুনরায় পাঠানোর চেষ্টা করতে পারে৷

বিজ্ঞপ্তি প্রকার

মিরর API বিভিন্ন ইভেন্টের জন্য একটি ভিন্ন বিজ্ঞপ্তি পেলোড পাঠায়।

উত্তর দিন

বিল্ট-ইন REPLY মেনু আইটেম ব্যবহার করে ব্যবহারকারী আপনার টাইমলাইন আইটেমের উত্তর দিয়েছেন:

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "INSERT",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "REPLY"
    }
  ]
}

itemId অ্যাট্রিবিউটটি আইটেমের ID সেট করা আছে যেটিতে রয়েছে:

  • টাইমলাইন আইটেমের ID inReplyTo অ্যাট্রিবিউট সেট করা এটি একটি উত্তর।
  • টেক্সট ট্রান্সক্রিপশনে text অ্যাট্রিবিউট সেট করা হয়েছে।
  • recipients টাইমলাইন আইটেমের creator কাছে সেট করা অ্যাট্রিবিউট যদি এটি বিদ্যমান থাকে তবে এটি একটি উত্তর।

উদাহরণ:

{
  "kind": "glass#timelineItem",
  "id": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "inReplyTo": "3236e5b0-b282-4e00-9d7b-6b80e2f47f3d",
  "text": "This is a text reply",
  "recipients": [
    {
      "id": "CREATOR_ID",
      "displayName": "CREATOR_DISPLAY_NAME",
      "imageUrls": [
        "CREATOR_IMAGE_URL"
      ]
    }
  ]
}

মুছে ফেলা

ব্যবহারকারী একটি টাইমলাইন আইটেম মুছে দিয়েছেন:

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "DELETE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "DELETE"
    }
  ]
}

itemId অ্যাট্রিবিউটটি মুছে ফেলা আইটেমের আইডিতে সেট করা আছে। আইটেমটির ID এবং isDeleted প্রপার্টি ছাড়া আর কোনো মেটাডেটা নেই।

কাস্টম মেনু আইটেম নির্বাচন করা হয়েছে

ব্যবহারকারী আপনার পরিষেবা দ্বারা সেট করা একটি কাস্টম মেনু আইটেম নির্বাচন করেছেন:

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "userActions": [
    {
      "type": "CUSTOM",
      "payload": "PING"
    }
  ]
}

itemId বৈশিষ্ট্যটি ব্যবহারকারীর নির্বাচিত মেনু আইটেমের আইডিতে সেট করা হয়।

userActions অ্যারেতে ব্যবহারকারীর এই আইটেমটিতে নেওয়া কাস্টম ক্রিয়াগুলির তালিকা রয়েছে৷ আপনার পরিষেবা সেই অনুযায়ী সেই কর্মগুলি পরিচালনা করা উচিত।

অবস্থান আপডেট

বর্তমান ব্যবহারকারীর জন্য একটি নতুন অবস্থান উপলব্ধ:

{
  "collection": "locations",
  "itemId": "latest",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer"
}

যখন আপনার গ্লাসওয়্যার একটি অবস্থান আপডেট পায়, সর্বশেষ পরিচিত অবস্থান পুনরুদ্ধার করতে glass.locations.get এন্ডপয়েন্টে একটি অনুরোধ পাঠান৷ আপনার গ্লাসওয়্যার প্রতি দশ মিনিটে অবস্থান আপডেট পায়।

ভয়েস কমান্ড

আপনার ব্যবহারকারী একটি ভয়েস কমান্ড সক্রিয় করেছে, উদাহরণস্বরূপ: "ওকে গ্লাস, একটি নোট নিন, ক্যাট স্ট্রিম, চিপটলের জন্মদিন আগামীকাল"। নিম্নলিখিত বিজ্ঞপ্তিটি আপনার গ্লাসওয়্যারে পাঠানো হয়েছে:

{
  "collection": "timeline",
  "operation": "INSERT",
  "userToken": "chipotle's_owner",
  "verifyToken": "mew mew mew",
  "itemId": "<ITEM_ID>",
  "userActions": [
    {“type”: "LAUNCH"}
  ]
}

এই বিজ্ঞপ্তিটি userActions সম্পত্তিতে LAUNCH মান দ্বারা অন্যান্য বিজ্ঞপ্তি থেকে আলাদা করা হয়েছে।

তারপরে আপনি টাইমলাইন আইটেমটি আনতে itemId মানটি ব্যবহার করতে পারেন:

{
  "id": "<ITEM_ID>",
  "text": "Chipotle's birthday is tomorrow",
  "recipients": [
    {"id": "CAT_STREAM"}
  ]
}

recipients সম্পত্তিতে পরিচিতির id থাকে যা ব্যবহৃত ভয়েস কমান্ডের প্রতিনিধিত্ব করে।