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

আপনি সহজ REST API ব্যবহার করে স্ট্যাটিক কার্ড যোগ, আপডেট, পড়া এবং মুছে ফেলতে পারেন। এছাড়াও, আপনি একটি স্ট্যাটিক কার্ডের সাথে অবস্থান বা মিডিয়ার মতো অবজেক্ট সংযুক্ত করতে পারেন।

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

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

যখন গ্লাসওয়্যার টাইমলাইনে স্ট্যাটিক কার্ড যুক্ত করে, তখন ব্যবহারকারীদের সতর্ক করার জন্য গ্লাস একটি নোটিফিকেশন সাউন্ড বাজাতে পারে। ৭ দিন পর অথবা ২০০টি কার্ড নতুন হলে, আগের সমস্ত স্ট্যাটিক কার্ডও ডানদিকে সরে যায় এবং টাইমলাইন থেকে অদৃশ্য হয়ে যায়।

কখন সেগুলি ব্যবহার করবেন

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

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

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

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

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

কাঁচা 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()

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

ভিডিও সংযুক্ত করা

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

To stream video, use the PLAY_VIDEO built-in menu item and specify the video's URL to be the menu item's payload . See Adding built-in menu items and supported media formats for more information.

পৃষ্ঠা সংখ্যা

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

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

<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 ট্যাগের কন্টেন্ট একটি আলাদা সাব-টাইমলাইন কার্ডে প্রদর্শন করে। উদাহরণস্বরূপ, আপনি নিম্নলিখিত HTML ব্যবহার করে একটি পেজিনেটেড টাইমলাইন আইটেম তৈরি করতে পারেন:

<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 CSS ক্লাসটি নির্দিষ্ট করে দিতে পারেন:

<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 প্রপার্টির মাধ্যমে অথবা 'attachments' এন্ডপয়েন্ট ব্যবহার করে অ্যাটাচমেন্টটির বাইনারি ডেটা পেতে পারেন।

কাঁচা 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 নির্দিষ্ট করুন। ব্যবহারকারীরা যখন কাস্টম মেনু আইটেমটিতে ট্যাপ করেন, তখন আপনার Glassware-এ menuItem.id টি সহ একটি নোটিফিকেশন আসে। এর মাধ্যমে আপনি নোটিফিকেশনটির উৎস নির্ধারণ করতে পারবেন।
  • Glass-এ প্রদর্শিত হওয়ার জন্য একটি iconUrl এবং displayName যোগ করতে menuItem.values ​​নির্দিষ্ট করুন। iconUrl এর জন্য একটি স্বচ্ছ ব্যাকগ্রাউন্ডসহ সাদা রঙের ৫০ x ৫০ আকারের PNG ইমেজ নির্দেশ করুন।
  • একটি 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"
    }
  ...
 ]
}

সাবস্ক্রিপশন

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

বিজ্ঞপ্তি গ্রহণ করা

মিরর এপিআই থেকে একটি নোটিফিকেশন একটি 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)

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

বিজ্ঞপ্তির প্রকারভেদ

মিরর এপিআই বিভিন্ন ইভেন্টের জন্য ভিন্ন ভিন্ন নোটিফিকেশন পেলোড পাঠায়।

উত্তর

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

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

itemId অ্যাট্রিবিউটটি নিম্নলিখিত আইটেম ধারণকারী আইটেমটির ID -তে সেট করা হয়:

  • inReplyTo অ্যাট্রিবিউটটি সেই টাইমলাইন আইটেমের ID সেট করা হয়, যার উত্তর হিসেবে এটি দেওয়া হচ্ছে।
  • 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 অ্যাট্রিবিউটটি মুছে ফেলা আইটেমটির আইডিতে সেট করা হয়। আইটেমটিতে এর আইডি এবং 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 থাকে।