Memerlukan otorisasi
Menyisipkan item baru ke linimasa. Lihat contoh.
Metode ini mendukung URI /upload dan menerima media yang diupload dengan karakteristik berikut:
- Ukuran file maksimum: 10 MB
- Jenis MIME Media yang Diterima:
image/*
,audio/*
,video/*
Jika disediakan, media yang diupload akan disisipkan sebagai lampiran ke item linimasa.
Permintaan
Permintaan HTTP
Metode ini menyediakan fungsi upload media melalui dua URI terpisah. Untuk mengetahui detail selengkapnya, lihat dokumen tentang upload media.
- URI upload, untuk permintaan upload media:
POST https://www.googleapis.com/upload/mirror/v1/timeline
- URI Metadata, untuk permintaan khusus metadata:
POST https://www.googleapis.com/mirror/v1/timeline
Parameter
Nama parameter | Nilai | Deskripsi |
---|---|---|
Parameter kueri yang diperlukan | ||
uploadType |
string |
Jenis permintaan upload ke URI /upload.
Nilai yang dapat diterima adalah:
|
Otorisasi
Permintaan ini memerlukan otorisasi dengan setidaknya satu cakupan berikut (baca selengkapnya tentang autentikasi dan otorisasi).
Cakupan |
---|
https://www.googleapis.com/auth/glass.timeline |
https://www.googleapis.com/auth/glass.location |
Isi permintaan
Dalam isi permintaan, sediakan resource Linimasa dengan properti berikut sebagai metadata. Untuk mengetahui informasi selengkapnya, lihat dokumen tentang upload media.
Nama properti | Nilai | Deskripsi | Catatan |
---|---|---|---|
Properti Opsional | |||
bundleId |
string |
ID paket untuk item ini. Layanan dapat menentukan bundleId untuk mengelompokkan banyak item sekaligus. Item-item tersebut muncul pada satu item tingkat atas di perangkat. | dapat ditulis |
canonicalUrl |
string |
URL kanonis yang mengarah ke versi kanonis/kualitas data data yang diwakili oleh item linimasa. | dapat ditulis |
creator |
nested object |
Pengguna atau grup yang membuat item ini. | dapat ditulis |
displayTime |
datetime |
Waktu yang akan ditampilkan saat item ini dilihat di linimasa, diformat sesuai dengan RFC 3339. Linimasa pengguna ini diurutkan secara kronologis pada waktu tampilan, sehingga juga akan menentukan tempat item ditampilkan di linimasa. Jika tidak disetel oleh layanan, waktu tampilan akan ditetapkan secara default ke waktu updated . |
dapat ditulis |
html |
string |
Konten HTML untuk item ini. Jika text dan html diberikan untuk satu item, html akan dirender dalam linimasa. Elemen HTML yang diizinkan - Anda dapat menggunakan elemen ini di kartu linimasa.
Elemen HTML yang diblokir: Elemen ini dan kontennya dihapus dari payload HTML.
Elemen lainnya: Elemen apa pun yang tidak tercantum akan dihapus, tetapi kontennya dipertahankan. |
dapat ditulis |
isBundleCover |
boolean |
Apakah item ini merupakan sampul paket. Jika item ditandai sebagai sampul paket, item tersebut akan menjadi titik entri ke paket item yang memiliki bundleId yang sama dengan item tersebut. Tugas hanya akan ditampilkan di linimasa utama — bukan dalam paket yang terbuka.Pada linimasa utama, item yang ditampilkan adalah:
|
dapat ditulis |
location |
nested object |
Lokasi geografis yang terkait dengan item ini. | dapat ditulis |
menuItems[] |
list |
Daftar item menu yang akan ditampilkan kepada pengguna saat item ini dipilih di linimasa. | dapat ditulis |
menuItems[].action |
string |
Mengontrol perilaku ketika pengguna memilih opsi menu. Nilai yang diizinkan adalah:
|
dapat ditulis |
menuItems[].id |
string |
ID untuk item menu ini. Ini dibuat oleh aplikasi dan diperlakukan sebagai token buram. | dapat ditulis |
menuItems[].payload |
string |
Payload umum yang artinya berubah bergantung pada tindakan Polyline ini.
|
dapat ditulis |
menuItems[].removeWhenSelected |
boolean |
Jika disetel ke benar pada item menu CUSTOM , item tersebut akan dihapus dari menu setelah dipilih. |
dapat ditulis |
menuItems[].values[] |
list |
Untuk item CUSTOM , daftar nilai yang mengontrol tampilan item menu di setiap statusnya. Nilai untuk status DEFAULT harus diberikan. Jika status PENDING atau CONFIRMED tidak ada, status tersebut tidak akan ditampilkan. |
dapat ditulis |
menuItems[].values[].displayName |
string |
Nama yang akan ditampilkan untuk item menu. Jika Anda menentukan properti ini untuk item menu bawaan, perintah suara kontekstual default untuk item menu tersebut tidak akan ditampilkan. | dapat ditulis |
menuItems[].values[].iconUrl |
string |
URL ikon yang akan ditampilkan dengan item menu. | dapat ditulis |
menuItems[].values[].state |
string |
Status tempat nilai ini diterapkan. Nilai yang diizinkan adalah:
|
dapat ditulis |
notification |
nested object |
Mengontrol cara notifikasi untuk item ini ditampilkan di perangkat. Jika informasi ini tidak ada, tidak ada notifikasi yang akan dibuat. | dapat ditulis |
notification.deliveryTime |
datetime |
Waktu pengiriman notifikasi. | dapat ditulis |
notification.level |
string |
Menjelaskan seberapa penting notifikasi tersebut. Nilai yang diizinkan adalah:
|
dapat ditulis |
recipients[] |
list |
Daftar pengguna atau grup yang diajak berbagi item ini. | dapat ditulis |
sourceItemId |
string |
String buram yang dapat Anda gunakan untuk memetakan item linimasa ke data dalam layanan Anda sendiri. | dapat ditulis |
speakableText |
string |
Versi konten yang dapat diucapkan dari item ini. Bersama dengan item menu READ_ALOUD , gunakan kolom ini untuk memberikan teks yang lebih jelas saat dibacakan secara lisan, atau untuk memberikan informasi yang diperluas tentang apa yang ditampilkan secara visual di Glass.Glassware juga harus menentukan kolom speakableType, yang akan diucapkan sebelum teks ini jika konteks tambahan berguna, misalnya saat pengguna meminta item dibacakan dengan keras setelah notifikasi. |
dapat ditulis |
speakableType |
string |
Deskripsi yang dapat diucapkan tentang jenis item ini. Ini akan diumumkan kepada pengguna sebelum membaca konten item jika konteks tambahan berguna, misalnya saat pengguna meminta agar item dibacakan secara lisan setelah notifikasi disampaikan. Ini harus berupa frasa kata benda singkat dan sederhana seperti "Email", "SMS", atau "Info Terbaru Planet Harian". Glassware sebaiknya mengisi kolom ini untuk setiap item linimasa, meskipun item tersebut tidak berisi speakableText atau teks sehingga pengguna dapat mempelajari jenis item tanpa melihat layar. |
dapat ditulis |
text |
string |
Konten teks item ini. | dapat ditulis |
title |
string |
Judul item ini. | dapat ditulis |
Tanggapan
Jika berhasil, metode ini menampilkan resource Linimasa dalam isi respons.
Contoh
Catatan: Contoh kode yang tersedia untuk metode ini tidak merepresentasikan semua bahasa pemrograman yang didukung (lihat halaman library klien untuk mengetahui daftar bahasa yang didukung).
Java
Menggunakan library klien Java.
import com.google.api.client.http.InputStreamContent; import com.google.api.services.mirror.Mirror; import com.google.api.services.mirror.model.NotificationConfig; import com.google.api.services.mirror.model.TimelineItem; import java.io.IOException; import java.io.InputStream; public class MyClass { // ... /** * Insert a new timeline item in the user's glass with an optional * notification and attachment. * * @param service Authorized Mirror service. * @param text timeline item's text. * @param contentType Optional attachment's content type (supported content * types are "image/*", "video/*" and "audio/*"). * @param attachment Optional attachment stream. * @param notificationLevel Optional notification level, supported values are * {@code null} and "AUDIO_ONLY". * @return Inserted timeline item on success, {@code null} otherwise. */ public static TimelineItem insertTimelineItem(Mirror service, String text, String contentType, InputStream attachment, String notificationLevel) { TimelineItem timelineItem = new TimelineItem(); timelineItem.setText(text); if (notificationLevel != null && notificationLevel.length() > 0) { timelineItem.setNotification(new NotificationConfig().setLevel(notificationLevel)); } try { if (contentType != null && contentType.length() > 0 && attachment != null) { // Insert both metadata and attachment. InputStreamContent mediaContent = new InputStreamContent(contentType, attachment); return service.timeline().insert(timelineItem, mediaContent).execute(); } else { // Insert metadata only. return service.timeline().insert(timelineItem).execute(); } } catch (IOException e) { System.err.println("An error occurred: " + e); return null; } } // ... }
.NET
Menggunakan library klien.NET.
using System; using System.IO; using Google.Apis.Mirror.v1; using Google.Apis.Mirror.v1.Data; public class MyClass { // ... /// <summary> /// Insert a new timeline item in the user's glass with an optional /// notification and attachment. /// </summary> /// <param name='service'>Authorized Mirror service.</param> /// <param name='text'>Timeline Item's text.</param> /// <param name='contentType'> /// Optional attachment's content type (supported content types are /// "image/*", "video/*" and "audio/*"). /// </param> /// <param name='attachment'>Optional attachment stream</param> /// <param name='notificationLevel'> /// Optional notification level, supported values are null and /// "AUDIO_ONLY". /// </param> /// <returns> /// Inserted timeline item on success, null otherwise. /// </returns> public static TimelineItem InsertTimelineItem(MirrorService service, String text, String contentType, Stream attachment, String notificationLevel) { TimelineItem timelineItem = new TimelineItem(); timelineItem.Text = text; if (!String.IsNullOrEmpty(notificationLevel)) { timelineItem.Notification = new NotificationConfig() { Level = notificationLevel }; } try { if (!String.IsNullOrEmpty(contentType) && attachment != null) { // Insert both metadata and media. TimelineResource.InsertMediaUpload request = service.Timeline.Insert( timelineItem, attachment, contentType); request.Upload(); return request.ResponseBody; } else { // Insert metadata only. return service.Timeline.Insert(timelineItem).Fetch(); } } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); return null; } } // ... }
PHP
Menggunakan library klien PHP.
/** * Insert a new timeline item in the user's glass with an optional * notification and attachment. * * @param Google_MirrorService $service Authorized Mirror service. * @param string $text timeline item's text. * @param string $contentType Optional attachment's content type (supported * content types are "image/*", "video/*" * and "audio/*"). * @param string $attachment Optional attachment content. * @param string $notificationLevel Optional notification level, * supported values are {@code null} * and "AUDIO_ONLY". * @return Google_TimelineItem Inserted timeline item on success, otherwise. */ function insertTimelineItem($service, $text, $contentType, $attachment, $notificationLevel) { try { $timelineItem = new Google_TimelineItem(); $timelineItem->setText($text); if ($notificationlevel != null) { $notification = new Google_NotificationConfig(); $notification->setLevel($notificationLevel); $timelineItem->setNotification($notification); } $optParams = array(); if ($contentType != null && $attachment != null) { $optParams['data'] = $attachment; $optParams['mimeType'] = $contentType; } return $service->timeline->insert($timelineItem, $optParams); } catch (Exception $e) { print 'An error occurred: ' . $e->getMessage(); return null; } }
Python
Menggunakan library klien Python.
import io from apiclient import errors from apiclient.http import MediaIoBaseUpload # ... def insert_timeline_item(service, text, content_type=None, attachment=None, notification_level=None): """Insert a new timeline item in the user's glass. Args: service: Authorized Mirror service. text: timeline item's text. content_type: Optional attachment's content type (supported content types are 'image/*', 'video/*' and 'audio/*'). attachment: Optional attachment as data string. notification_level: Optional notification level, supported values are None and 'AUDIO_ONLY'. Returns: Inserted timeline item on success, None otherwise. """ timeline_item = {'text': text} media_body = None if notification_level: timeline_item['notification'] = {'level': notification_level} if content_type and attachment: media_body = MediaIoBaseUpload( io.BytesIO(attachment), mimetype=content_type, resumable=True) try: return service.timeline().insert( body=timeline_item, media_body=media_body).execute() except errors.HttpError, error: print 'An error occurred: %s' % error
Ruby
Menggunakan library klien Ruby.
## # Insert a new Timeline Item in the user's glass. # # @param [Google::APIClient] client # Authorized client instance. # @param [String] text # Timeline item's text. # @param [String] content_type # Optional attachment's content type (supported content types are 'image/*', # 'video/*' and 'audio/*'). # @param [String] filename # Optional attachment's filename. # @param [String] notification_level # Optional notification level, supported values are nil and 'AUDIO_ONLY'. # @return [Google::APIClient::Schema::Mirror::V1::TimelineItem] # Timeline item instance if successful, nil otherwise. def insert_timeline_item(client, text, content_type, filename, notification_level) mirror = client.discovered_api('mirror', 'v1') timeline_item = mirror.timeline.insert.request_schema.new({ 'text' => text }) if notification_level timeline_item.notification = { 'level' => notification_level } end result = nil if filename media = Google::APIClient::UploadIO.new(filename, content_type) result = client.execute( :api_method => mirror.timeline.insert, :body_object => timeline_item, :media => media, :parameters => { 'uploadType' => 'multipart', 'alt' => 'json'}) else result = client.execute( :api_method => mirror.timeline.insert, :body_object => timeline_item) end if result.success? return result.data else puts "An error occurred: #{result.data['error']['message']}" end end
Go
Menggunakan library klien Go.
import ( "code.google.com/p/google-api-go-client/mirror/v1" "fmt" "io" ) // InsertTimelineItem inserts a new timeline item in the user's glass with an // optional notification and attachment. func InsertTimelineItem(g *mirror.Service, text string, attachment io.Reader, notificationLevel string) (*mirror.TimelineItem, error) { t := &mirror.TimelineItem{Text: text} if notificationLevel != "" { t.Notification = &mirror.NotificationConfig{Level: notificationLevel} } req := g.Timeline.Insert(t) if attachment != nil { // Add attachment to the timeline item. req.Media(attachment) } r, err := req.Do() if err != nil { fmt.Printf("An error occurred: %v\n", err) return nil, err } return r, nil }
HTTP Mentah
Tidak menggunakan library klien.
## A very simple timeline item 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" } ## A more complete timeline item with an attachment POST /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": "Hello world", "menuItems": [ { "action": "REPLY" }, { "action": "CUSTOM", "id": "complete" "values": [{ "displayName": "Complete", "iconUrl": "http://example.com/icons/complete.png" }] } } --mymultipartboundary Content-Type: image/jpeg Content-Transfer-Encoding: binary binary image data --mymultipartboundary--