Cần phải uỷ quyền
Cập nhật một mục trong dòng thời gian tại chỗ. Xem ví dụ.
Phương thức này hỗ trợ URI /upload và chấp nhận nội dung nghe nhìn đã tải lên có các đặc điểm sau:
- Kích thước tệp tối đa: 10 MB
- Các loại MIME nội dung đa phương tiện được chấp nhận:
audio/*
,image/*
,video/*
Yêu cầu
Yêu cầu HTTP
Phương thức này cung cấp chức năng tải nội dung nghe nhìn lên thông qua 2 URI riêng biệt. Để biết thêm chi tiết, hãy xem tài liệu về cách tải nội dung nghe nhìn lên.
- URI tải lên đối với các yêu cầu tải nội dung nghe nhìn lên:
PUT https://www.googleapis.com/upload/mirror/v1/timeline/id
- URI siêu dữ liệu đối với các yêu cầu chỉ dành cho siêu dữ liệu:
PUT https://www.googleapis.com/mirror/v1/timeline/id
Tham số
Tên thông số | Giá trị | Mô tả |
---|---|---|
Tham số đường dẫn | ||
id |
string |
Mã của mục dòng thời gian. |
Tham số truy vấn bắt buộc | ||
uploadType |
string |
Loại yêu cầu tải lên đối với URI /upload.
Các giá trị được chấp nhận là:
|
Ủy quyền
Yêu cầu này cần có sự uỷ quyền với ít nhất một trong các phạm vi sau (đọc thêm về tính năng xác thực và uỷ quyền).
Phạm vi |
---|
https://www.googleapis.com/auth/glass.timeline |
https://www.googleapis.com/auth/glass.location |
Nội dung yêu cầu
Trong nội dung yêu cầu, hãy cung cấp một tài nguyên Dòng thời gian có các thuộc tính sau làm siêu dữ liệu. Để biết thêm thông tin, hãy xem tài liệu về cách tải nội dung nghe nhìn lên.
Tên tài sản | Giá trị | Mô tả | Ghi chú |
---|---|---|---|
Thuộc tính không bắt buộc | |||
bundleId |
string |
Mã nhận dạng gói của mặt hàng này. Các dịch vụ có thể chỉ định bundleId để nhóm nhiều mục lại với nhau. Chúng xuất hiện bên dưới một mục cấp cao nhất trên thiết bị. | có thể ghi |
canonicalUrl |
string |
URL chính tắc trỏ đến phiên bản chuẩn/chất lượng cao của dữ liệu được biểu thị bằng mục dòng thời gian. | có thể ghi |
creator |
nested object |
Người dùng hoặc nhóm đã tạo mục này. | có thể ghi |
displayTime |
datetime |
Thời gian sẽ xuất hiện khi người dùng xem mục này trong tiến trình, theo định dạng RFC 3339. Dòng thời gian của người dùng này được sắp xếp theo trình tự thời gian trong thời gian hiển thị, vì vậy, điều này cũng sẽ xác định vị trí mặt hàng được hiển thị trong dòng thời gian. Nếu dịch vụ không đặt thời gian hiển thị mặc định, thời gian hiển thị sẽ là thời gian updated . |
có thể ghi |
html |
string |
Nội dung HTML cho mục này. Nếu bạn cung cấp cả text và html cho một mục thì html sẽ hiển thị trong tiến trình. Phần tử HTML được phép – Bạn có thể sử dụng những phần tử này trong thẻ dòng thời gian của mình.
Các phần tử HTML bị chặn: Các phần tử này và nội dung trong đó bị xoá khỏi các phần tử HTML.
Các phần tử khác: Mọi phần tử không được liệt kê sẽ bị xoá, nhưng nội dung của các phần tử đó được giữ nguyên. |
có thể ghi |
isBundleCover |
boolean |
Mục này có phải là ảnh bìa theo gói hay không. Nếu một mặt hàng được đánh dấu là bìa theo gói, thì đó sẽ là điểm truy cập đến nhóm các mặt hàng có cùng bundleId với mặt hàng đó. Thông báo sẽ chỉ hiển thị trên dòng thời gian chính, không phải trong gói đã mở.Trên dòng thời gian chính, các mục được hiển thị là:
|
có thể ghi |
location |
nested object |
Vị trí địa lý liên kết với mục này. | có thể ghi |
menuItems[] |
list |
Danh sách các mục trong trình đơn sẽ được hiển thị cho người dùng khi mục này được chọn trong dòng thời gian. | có thể ghi |
menuItems[].action |
string |
Kiểm soát hành vi khi người dùng chọn một tuỳ chọn trong trình đơn. Các giá trị được phép là:
|
có thể ghi |
menuItems[].id |
string |
Mã nhận dạng cho mục này trong trình đơn. Mã này do ứng dụng tạo ra và được coi là mã thông báo mờ. | có thể ghi |
menuItems[].payload |
string |
Tải trọng chung có ý nghĩa thay đổi tuỳ thuộc vào thao tác của Mục trình đơn này.
|
có thể ghi |
menuItems[].removeWhenSelected |
boolean |
Nếu bạn đặt thành true cho một mục trong trình đơn CUSTOM , thì mục đó sẽ bị xoá khỏi trình đơn sau khi được chọn. |
có thể ghi |
menuItems[].values[] |
list |
Đối với các mục CUSTOM , danh sách giá trị kiểm soát giao diện của mục trong trình đơn ở mỗi trạng thái. Bạn phải cung cấp giá trị cho trạng thái DEFAULT . Nếu thiếu trạng thái PENDING hoặc CONFIRMED , các trạng thái này sẽ không xuất hiện. |
có thể ghi |
menuItems[].values[].displayName |
string |
Tên hiển thị cho mục trong trình đơn. Nếu bạn chỉ định thuộc tính này cho một mục trong trình đơn tích hợp sẵn, thì lệnh thoại theo ngữ cảnh mặc định cho mục đó trong trình đơn sẽ không hiển thị. | có thể ghi |
menuItems[].values[].iconUrl |
string |
URL của biểu tượng để hiển thị cùng với mục trong trình đơn. | có thể ghi |
menuItems[].values[].state |
string |
Trạng thái áp dụng giá trị này. Các giá trị được phép là:
|
có thể ghi |
notification |
nested object |
Kiểm soát cách hiện các thông báo về mục này trên thiết bị. Nếu thiếu thông tin này thì sẽ không có thông báo nào được tạo. | có thể ghi |
notification.deliveryTime |
datetime |
Thời điểm thông báo cần được gửi. | có thể ghi |
notification.level |
string |
Mô tả mức độ quan trọng của thông báo. Các giá trị được phép là:
|
có thể ghi |
recipients[] |
list |
Danh sách người dùng hoặc nhóm đã được chia sẻ mục này. | có thể ghi |
sourceItemId |
string |
Chuỗi mờ bạn có thể dùng để ánh xạ một mục dòng thời gian với dữ liệu trong dịch vụ của mình. | có thể ghi |
speakableText |
string |
Phiên bản có thể nói của nội dung của mục này. Cùng với mục trong trình đơn READ_ALOUD , hãy sử dụng trường này để cung cấp văn bản rõ ràng hơn khi được đọc to hoặc để cung cấp thông tin mở rộng về nội dung hiển thị trực quan trên Glass.Đồ thuỷ tinh cũng cần chỉ định trường SpeakableType. Trường này sẽ được nói trước văn bản này trong những trường hợp có ngữ cảnh bổ sung hữu ích, chẳng hạn như khi người dùng yêu cầu đọc to mục sau khi có thông báo. |
có thể ghi |
speakableType |
string |
Nội dung mô tả có thể nói về loại mục này. Thông báo này sẽ được thông báo cho người dùng trước khi đọc nội dung của mặt hàng trong trường hợp bối cảnh bổ sung hữu ích, chẳng hạn như khi người dùng yêu cầu đọc to mặt hàng sau khi có thông báo. Đây phải là một cụm danh từ ngắn, đơn giản như "Email", "Tin nhắn văn bản" hoặc "Tin tức hành tinh hằng ngày". Bạn nên điền sẵn trường này cho mọi mục trên dòng thời gian, ngay cả khi mục đó không chứa văn bản hoặc văn bản SpeakableText để người dùng có thể tìm hiểu loại mục mà không cần nhìn vào màn hình. |
có thể ghi |
text |
string |
Nội dung văn bản của mục này. | có thể ghi |
title |
string |
Tiêu đề của mục này. | có thể ghi |
Phản hồi
Nếu thành công, phương thức này sẽ trả về một Tài nguyên dòng thời gian trong nội dung phản hồi.
Ví dụ
Lưu ý: Các đoạn mã mẫu của phương thức này không phải là ví dụ cho mọi ngôn ngữ lập trình được hỗ trợ (xem trang thông tin về các thư viện dùng cho ứng dụng để biết danh sách các ngôn ngữ được hỗ trợ).
Java
Dùng thư viện ứng dụng Java.
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; public class MyClass { // ... /** * Update a timeline item in the user's Glass with an optional notification and attachment. * * @param service Authorized Mirror service. * @param itemId ID of the timeline item to update. * @param newText timeline item's text. * @param newNotificationLevel Optional notification level, supported values * are {@code null} and "AUDIO_ONLY". * @return Updated timeline item on success, {@code null} otherwise. */ public static TimelineItem updateTimelineItem(Mirror service, String itemId, String newText, String newNotificationLevel) { try { // First retrieve the timeline item from the API. TimelineItem timelineItem = service.timeline().get(itemId).execute(); // Update the timeline item's metadata. timelineItem.setText(newText); if (newNotificationLevel != null && newNotificationLevel.length() > 0) { timelineItem.setNotification(new NotificationConfig().setLevel(newNotificationLevel)); } else { timelineItem.setNotification(null); } return service.timeline().update(itemId, timelineItem).execute(); } catch (IOException e) { System.err.println("An error occurred: " + e); return null; } } // ... }
.NET
Dùng thư viện ứng dụng.NET.
using System; using System.IO; using Google.Apis.Mirror.v1; using Google.Apis.Mirror.v1.Data; public class MyClass { // ... /// <summary> /// Update a timeline item in the user's Glass with an optional /// notification and attachment. /// </summary> /// <param name='service'>Authorized Mirror service.</param> /// <param name='itemId'>ID of the timeline item to update.</param> /// <param name='newText'>Timeline Item's text content.</param> /// <param name='newNotificationLevel'> /// Optional notification level, supported values are null and /// "AUDIO_ONLY". /// </param> /// <returns> /// Updated timeline item on success, null otherwise. /// </returns> public static TimelineItem UpdateTimelineItem(MirrorService service, String itemId, String newText, String newNotificationLevel) { try { // First retrieve the timeline item from the API. TimelineItem timelineItem = service.Timeline.Get(itemId).Fetch(); // Update the timeline item's metadata. timelineItem.Text = newText; if (!String.IsNullOrEmpty(newNotificationLevel)) { timelineItem.Notification = new NotificationConfig() { Level = newNotificationLevel }; } else { timelineItem.Notification = null; } return service.Timeline.Update(timelineItem, itemId).Fetch(); } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); return null; } } // ... }
PHP
Dùng thư viện ứng dụng PHP.
/** * Update a timeline item in the user's Glass with an optional * notification and attachment. * * @param Google_MirrorSservice $service Authorized Mirror service. * @param string $itemId ID of the timeline item to update. * @param string $newText timeline item's text (can be HTML content). * @param string $newNotificationLevel Optional notification level, * supported values are {@code null} and "AUDIO_ONLY". * @return Google_TimelineItem Updated timeline item on success, * null otherwise. */ function updateTimelineItem($service, $itemId, $newText, $newNotificationLevel) { try { $timelineItem = $service->timeline->get($itemId); $timelineItem->setText($newText); if ($notificationlevel != null) { $notification = new Google_NotificationConfig(); $notification->setLevel($newNotificationLevel); $timelineItem->setNotification($notification); } else { $timelineItem->setNotification(null); } return $service->timeline->update($itemId, $timelineItem); } catch (Exception $e) { print 'An error occurred: ' . $e->getMessage(); return null; } }
Python
Dùng thư viện ứng dụng Python.
import io from apiclient import errors from apiclient.http import MediaIoBaseUpload # ... def update_timeline_item(service, item_id, new_text, new_notification_level=None): """Update a timeline item in the user's Glass. Args: service: Authorized Mirror service. item_id: ID of the timeline item to update. new_text: Timeline item's text (can be HTML content). new_content_type: Optional attachment's content type (supported content types are 'image/*', 'video/*' and 'audio/*'). new_attachment: Optional attachment as data string. new_notification_level: Optional notification level, supported values are None and 'AUDIO_ONLY'. Returns: Updated timeline item on success, None otherwise. """ try: # First retrieve the timeline item from the API. timeline_item = service.timeline().get(id=item_id).execute() # Update the timeline item's metadata. timeline_item['text'] = new_text if new_notification_level: timeline_item['notification'] = {'level': new_notification_level} elif 'notification' in timeline_item: timeline_item.pop('notification') return service.timeline().update(id=item_id, body=timeline_item).execute() except errors.HttpError, error: print 'An error occurred: %s' % error return None
Ruby
Dùng thư viện ứng dụng Ruby.
## # Update a timeline item in the user's glass. # # @param [Google::APIClient] client # Authorized client instance. # @param [String] item_id # ID of the timeline item to update. # @param [String] new_text # Timeline item's new text. # @param [String] new_notification_level # Optional new notification level, supported values are nil and 'AUDIO_ONLY'. # @return [Google::APIClient::Schema::Mirror::V1::TimelineItem] # Updated timeline item instance if successful, nil otherwise. def update_timeline_item(client, item_id, new_text, new_notification_level) mirror = client.discovered_api('mirror', 'v1') result = client.execute( :api_method => mirror.timeline.get, :parameters => { 'id' => item_id }) if result.success? timeline_item = result.data timeline_item.text = new_text if new_notification_level timeline_item.notification = { 'level' => new_notification_level } else timeline_item.notification = nil end result = client.execute( :api_method => mirror.timeline.update, :body_object => timeline_item, :parameters => { 'id' => item_id }) if result.success? return result.data end end puts "An error occurred: #{result.data['error']['message']}" end
Go
Dùng Thư viện ứng dụng Go.
import ( "code.google.com/p/google-api-go-client/mirror/v1" "fmt" ) // UpdateTimelineItem updates a timeline item in the user's timeline with an // optional notification and attachment. func UpdateTimelineItem(g *mirror.Service, itemId string, newNotificationLevel string) ( *mirror.TimelineItem, error) { t, err := g.Timeline.Get(itemId).Do() if err != nil { fmt.Printf("An error occurred: %v\n", err) return nil, err } t.Text = newText if newNotificationLevel != "" { t.Notification = &mirror.NotificationConfig{Level: newNotificationLevel} } else { t.Notification = nil } r, err := g.Timeline.Update(itemId, t).Do() if err != nil { fmt.Printf("An error occurred: %v\n", err) return nil, err } return r, nil }
HTTP thô
Không sử dụng thư viện ứng dụng.
PUT /mirror/v1/timeline/timeline item id HTTP/1.1 Host: www.googleapis.com Authorization: Bearer auth token Content-Type: application/json Content-Length: 26 { "text": "Hello world" }