Контакты

Контакты позволяют устройству Glassware получать элементы временной шкалы, которые оно не создавало. Пользователи должны явным образом поделиться элементом временной шкалы с вашим контактом, коснувшись пункта меню «Поделиться» карты.

Как они работают

После того как вы создадите общий контакт, общий доступ к карточкам временной шкалы будет осуществляться следующим образом:

  1. Создайте контакт и определите типы MIME, которые поддерживает ваш контакт.
  2. Вставьте контакт в временную шкалу вашего пользователя.
  3. Пользователь получает элемент временной шкалы с пунктом меню «Поделиться» . Стеклянная посуда должна явно разрешать пользователям делиться своими предметами с этим пунктом меню.
  4. Пользователь касается элемента временной шкалы, выбирает пункт меню «Поделиться» и выбирает ваш контакт.
  5. Mirror API создает копию общей карты временной шкалы, предоставляет вашему контакту доступ к копии и вставляет копию в временную шкалу пользователя. Ваша стеклянная посуда не может получить доступ к исходному элементу временной шкалы.
  6. Если вы подписались на рассылку уведомлений , вы получите полезную нагрузку, содержащую идентифицирующую информацию о карточке временной шкалы. Затем вы можете получить элемент временной шкалы с помощью Timeline.get .
  7. Вы изменяете общую карточку временной шкалы и обновляете существующую карточку временной шкалы с помощью Timeline.update .

Когда их использовать

По умолчанию Glassware не может получить доступ к элементам временной шкалы, которые она не создавала, поэтому контакты разрешают обмен данными между Glassware с согласия пользователя.

Есть два основных способа, которыми ваша посуда может использовать контакты:

  • Разрешить пользователям делиться элементами вашей хроники с другими контактами . Добавьте пункт встроенного меню SHARE в карточку хронологии. Когда пользователи касаются элемента меню «Поделиться», Glass отображает список возможных контактов, с которыми можно поделиться.

  • Разрешить пользователям делиться элементами временной шкалы с вашим Glassware : создайте контакт, представляющий ваш Glassware. Когда пользователи хотят поделиться карточкой временной шкалы, ваш контакт появляется в качестве опции. Вы также можете объявить список допустимых типов MIME , чтобы ваш контакт отображался только для карточек, которые вас интересуют. Чтобы получать уведомления о том, когда пользователи совместно используют карточку временной шкалы с вашим контактом, вы можете подписаться на уведомления временной шкалы.

Создание контакта

Чтобы пользователи могли обмениваться элементами временной шкалы с вашим Glassware, вставьте контакт, отправив представление JSON контакта в конечную точку REST вставки .

Все контакты должны указывать id , который идентифицирует контакт с Glassware, получающим уведомления. Вы также должны указать displayName и по крайней мере один imageUrls , который Glass использует для отображения контактной информации пользователю.

Необработанный HTTP

POST /mirror/v1/contacts HTTP/1.1
Authorization: Bearer {auth token}
Content-Type: application/json
Content-Length: {length}

{
  "id": "harold"
  "displayName": "Harold Penguin",
  "iconUrl": "https://developers.google.com/glass/images/harold.jpg"
  "priority": 7
}

Подписка на уведомления об обмене

Mirror API позволяет подписаться на уведомления , которые отправляются, когда пользователь выполняет определенные действия с элементом временной шкалы или когда местоположение пользователя обновляется. Когда вы подписываетесь на уведомление, вы предоставляете URL-адрес обратного вызова, который обрабатывает уведомление.

Уведомление от Mirror API отправляется в виде запроса POST на подписанную конечную точку, содержащую тело запроса JSON .

Необработанный HTTP

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

Атрибут itemId — это ID общего элемента временной шкалы, который можно использовать с Timeline.get для получения элемента временной шкалы. В следующем примере показан типичный элемент временной шкалы с прикрепленным фото:

{
  "id": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "attachments": [
      {
          "contentType": "image/jpeg",
          "id": "<ATTACHMENT_ID>"
      }
  ],
  "recipients": [
      {
          "kind": "glass#contact",
          "source": "api:<SERVICE_ID>",
          "id": "<CONTACT_ID>",
          "displayName": "<CONTACT_DISPLAY_NAME>",
          "imageUrls": [
              "<CONTACT_ICON_URL>"
          ]
      }
  ]
}

Ваша служба должна ответить API с кодом состояния HTTP 200 OK , если не произошло ошибки. Если ваша служба отвечает кодом ошибки, Mirror API может попытаться повторно отправить уведомление вашей службе.

Получение транскрипции речи

Пользователи могут поделиться расшифрованной речью с вашим контактом через главное голосовое меню. В настоящее время ваш контакт может использовать две голосовые команды:

  • "пометь"
  • "опубликовать обновление"

Например, пользователь может сообщить нам о предстоящем дне рождения Chipotle с помощью фразы: «Хорошо, Стекло… опубликуй обновление… Cat Stream… День рождения Chipotle завтра!»

Чтобы использовать голосовые команды:

  1. Укажите свойство acceptCommands с соответствующим type :

    {
      ...
    
      "displayName": "Cat Stream",
      "id": "CAT_STREAM",
      "acceptCommands": [
        {"type": "POST_AN_UPDATE"}
      ]
    }
    
  2. Подпишитесь на уведомления о временной шкале, чтобы получать уведомления о доступности транскрибированной речи. Ваша стеклянная посуда получает уведомление, когда это происходит:

    {
      "collection": "timeline",
      "operation": "UPDATE",
      "userToken": "<USER_TOKEN>",
      "verifyToken": "<VERIFY_TOKEN>",
      "itemId": "<ITEM_ID>",
      "userActions": [
        {"type": "LAUNCH"}
      ]
    }
    
  3. Используйте itemId для получения элемента временной шкалы:

    {
      "id": "<ITEM_ID>",
      "text": "Chipotle's birthday is tomorrow",
      "recipients": [
        {"id": "CAT_STREAM"}
      ]
    }
    
  4. Если несколько устройств Glassware регистрируют контакт с одной и той же голосовой командой, Glass отображает меню второго уровня, показывающее displayName каждого контакта. Затем пользователи могут говорить с контактом по своему выбору. Если displayName вашего контакта содержит непроизносимые символы или не является фонетическим, используйте свойство speakableName , чтобы объявить ожидаемое произношение вашего общего контакта.

Подписи к общим фотографиям

Пользователи могут обмениваться фотографиями с вашим Glassware с сопроводительной подписью, которую они вводят с помощью речи. Общий поток пользователей:

  1. Пользователь касается элемента временной шкалы, содержащего фотографию, выбирает пункт меню «Поделиться» и выбирает ваш контакт.
  2. Пользователь снова нажимает в течение короткого промежутка времени, чтобы добавить подпись к фотографии.
  3. Пользователь произносит титр.
  4. Элемент временной шкалы используется совместно с вашим Glassware, как описано ранее в разделе «Как они работают» . Кроме того, свойство text элемента временной шкалы задается расшифрованным заголовком пользователя.