Требуется авторизация
Вставляет новый элемент на временную шкалу. См. пример .
Этот метод поддерживает URI /upload и принимает загруженные носители со следующими характеристиками:
- Максимальный размер файла: 10 МБ.
- Допустимые типы MIME мультимедиа:
image/*
,audio/*
,video/*
Если предоставлено, загруженный медиафайл вставляется в виде вложения к элементу временной шкалы.
Запрос
HTTP-запрос
Этот метод обеспечивает функциональность загрузки мультимедиа через два отдельных URI. Дополнительные сведения см. в документе о загрузке медиафайлов .
- URI загрузки для запросов на загрузку мультимедиа:
POST https://www.googleapis.com/upload/mirror/v1/timeline
- URI метаданных, для запросов только метаданных:
POST https://www.googleapis.com/mirror/v1/timeline
Параметры
Имя параметра | Ценить | Описание |
---|---|---|
Обязательные параметры запроса | ||
uploadType | string | Тип запроса на загрузку в URI /upload . Допустимые значения:
|
Авторизация
Этот запрос требует авторизации по крайней мере в одной из следующих областей ( подробнее об аутентификации и авторизации ).
Объем |
---|
https://www.googleapis.com/auth/glass.timeline |
https://www.googleapis.com/auth/glass.location |
Тело запроса
В тексте запроса укажите ресурс временной шкалы со следующими свойствами в качестве метаданных. Дополнительные сведения см. в документе о загрузке мультимедиа .
Имя свойства | Ценить | Описание | Примечания |
---|---|---|---|
Дополнительные свойства | |||
bundleId | string | Идентификатор пакета для этого элемента. Службы могут указывать bundleId для группировки множества элементов. Они отображаются под одним элементом верхнего уровня на устройстве. | доступный для записи |
canonicalUrl | string | Канонический URL-адрес, указывающий на каноническую/высококачественную версию данных, представленных элементом временной шкалы. | доступный для записи |
creator | nested object | Пользователь или группа, создавшие этот элемент. | доступный для записи |
displayTime | datetime | Время, которое должно отображаться при просмотре этого элемента на временной шкале, отформатировано в соответствии с RFC 3339. Временная шкала этого пользователя сортируется в хронологическом порядке по времени отображения, поэтому это также определяет, где элемент отображается на временной шкале. Если служба не установила, время отображения по умолчанию соответствует updated времени. | доступный для записи |
html | string | HTML-контент для этого элемента. Если для элемента предоставлены и text , и html , html будет отображаться на временной шкале.Разрешенные элементы HTML . Вы можете использовать эти элементы в своих карточках временной шкалы.
Заблокированные элементы HTML : эти элементы и их содержимое удаляются из полезной нагрузки HTML.
Другие элементы . Все элементы, не перечисленные в списке, удаляются, но их содержимое сохраняется. | доступный для записи |
isBundleCover | boolean | Является ли этот товар чехлом для комплекта. Если элемент помечен как обложка пакета, он будет точкой входа в набор элементов, которые имеют тот же bundleId , что и этот элемент. Он будет отображаться только на основной временной шкале, а не в открытом пакете .На основной временной шкале отображаются следующие элементы:
| доступный для записи |
location | nested object | Географическое положение, связанное с этим элементом. | доступный для записи |
menuItems[] | list | Список пунктов меню, которые будут представлены пользователю при выборе этого пункта на временной шкале. | доступный для записи |
menuItems[]. action | string | Управляет поведением, когда пользователь выбирает пункт меню. Допустимые значения:
| доступный для записи |
menuItems[]. id | string | Идентификатор этого пункта меню. Он генерируется приложением и рассматривается как непрозрачный токен. | доступный для записи |
menuItems[]. payload | string | Общая полезная нагрузка, значение которой меняется в зависимости от действия этого элемента меню.
| доступный для записи |
menuItems[]. removeWhenSelected | boolean | Если для элемента меню CUSTOM установлено значение true, этот элемент будет удален из меню после его выбора. | доступный для записи |
menuItems[]. values[] | list | Для пунктов CUSTOM список значений, управляющих внешним видом пункта меню в каждом из его состояний. Необходимо указать значение для состояния DEFAULT . Если состояния PENDING или CONFIRMED отсутствуют, они не будут отображаться. | доступный для записи |
menuItems[].values[]. displayName | string | Имя, отображаемое для пункта меню. Если указать это свойство для встроенного элемента меню, контекстная голосовая команда по умолчанию для этого элемента меню не отображается. | доступный для записи |
menuItems[].values[]. iconUrl | string | URL значка для отображения с пунктом меню. | доступный для записи |
menuItems[].values[]. state | string | Состояние, к которому относится это значение. Допустимые значения:
| доступный для записи |
notification | nested object | Управляет отображением уведомлений об этом элементе на устройстве. Если это отсутствует, уведомление не будет создано. | доступный для записи |
notification. deliveryTime | datetime | Время, в которое должно быть доставлено уведомление. | доступный для записи |
notification. level | string | Описывает, насколько важно уведомление. Допустимые значения:
| доступный для записи |
recipients[] | list | Список пользователей или групп, которым был предоставлен доступ к этому элементу. | доступный для записи |
sourceItemId | string | Непрозрачная строка, которую вы можете использовать для сопоставления элемента временной шкалы с данными в вашей собственной службе. | доступный для записи |
speakableText | string | Озвученная версия содержимого этого элемента. Наряду с пунктом меню READ_ALOUD используйте это поле, чтобы предоставить текст, который будет более четким при чтении вслух, или предоставить расширенную информацию о том, что отображается визуально на Glass.В Glassware также следует указать поле speakableType, которое будет произноситься перед этим текстом в тех случаях, когда дополнительный контекст полезен, например, когда пользователь требует, чтобы элемент был прочитан вслух после уведомления. | доступный для записи |
speakableType | string | Произносимое описание типа этого предмета. Это будет объявлено пользователю перед чтением содержимого элемента в случаях, когда дополнительный контекст полезен, например, когда пользователь запрашивает чтение элемента вслух после уведомления. Это должна быть короткая простая именная фраза, такая как «Электронная почта», «Текстовое сообщение» или «Ежедневное обновление новостей планеты». Glassware рекомендуется заполнять это поле для каждого элемента временной шкалы, даже если элемент не содержит speakableText или текста, чтобы пользователь мог узнать тип элемента, не глядя на экран. | доступный для записи |
text | string | Текстовое содержимое этого элемента. | доступный для записи |
title | string | Название этого элемента. | доступный для записи |
Ответ
В случае успеха этот метод возвращает ресурс временной шкалы в тексте ответа.
Примеры
Примечание. Примеры кода, доступные для этого метода, не представляют все поддерживаемые языки программирования (список поддерживаемых языков см. на странице клиентских библиотек ).
Джава
Использует клиентскую библиотеку 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 .
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
Использует клиентскую библиотеку 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 .
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 .
## # 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 .
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
Не использует клиентскую библиотеку.
## 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--