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 dimasukkan 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:
|
Otorisasi
Permintaan ini memerlukan otorisasi dengan setidaknya salah satu cakupan berikut (baca lebih lanjut tentang autentikasi dan otorisasi).
Cakupan |
---|
https://www.googleapis.com/auth/glass.timeline |
https://www.googleapis.com/auth/glass.location |
Isi permintaan
Dalam isi permintaan, berikan 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 bersama-sama. Iklan muncul pada satu item tingkat atas di perangkat. | dapat ditulis |
canonicalUrl |
string |
URL kanonis yang mengarah ke versi kanonis/berkualitas tinggi dari data yang direpresentasikan 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, yang diformat sesuai dengan RFC 3339. Linimasa pengguna ini diurutkan secara kronologis dalam waktu tampilan, sehingga hal ini 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 disediakan untuk suatu item, html akan dirender di 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. Item tersebut hanya akan ditampilkan di linimasa utama, bukan di dalam paket yang dibuka.Di 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 saat pengguna memilih opsi menu. Nilai yang diizinkan adalah:
|
dapat ditulis |
menuItems[].id |
string |
ID untuk item menu ini. ID ini dibuat oleh aplikasi dan diperlakukan sebagai token buram. | dapat ditulis |
menuItems[].payload |
string |
Payload umum yang artinya berubah bergantung pada tindakan MenuItem ini.
|
dapat ditulis |
menuItems[].removeWhenSelected |
boolean |
Jika disetel ke benar (true) 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 untuk 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 bagaimana notifikasi untuk item ini ditampilkan di perangkat. Jika informasi ini tidak ada, notifikasi tidak akan dibuat. | dapat ditulis |
notification.deliveryTime |
datetime |
Waktu saat notifikasi harus dikirimkan. | dapat ditulis |
notification.level |
string |
Menjelaskan seberapa penting notifikasi. 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 di layanan Anda sendiri. | dapat ditulis |
speakableText |
string |
Versi lisan dari konten item ini. Bersama dengan item menu READ_ALOUD , gunakan kolom ini untuk memberikan teks yang akan lebih jelas saat dibaca dengan keras, atau untuk memberikan informasi yang diperluas tentang apa yang ditampilkan secara visual di Glass.Gelas juga harus menentukan kolom speechableType, yang akan diucapkan sebelum teks ini jika konteks tambahan berguna, misalnya saat pengguna meminta item dibacakan dengan lantang setelah notifikasi. |
dapat ditulis |
speakableType |
string |
Deskripsi yang dapat diucapkan dari jenis item ini. Hal ini akan diumumkan kepada pengguna sebelum membaca konten item jika konteks tambahan dapat digunakan, misalnya saat pengguna meminta item tersebut dibacakan secara lisan setelah notifikasi. Frasa ini harus berupa frasa kata benda yang singkat dan sederhana seperti "Email", "Pesan teks", atau "Pembaruan Berita Daily Planet". Glassware dianjurkan untuk mengisi kolom ini untuk setiap item linimasa, meskipun item tersebut tidak berisi speechableText 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 |
Respons
Jika berhasil, metode ini akan 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--