Контакты

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

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

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

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

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

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

Существует два основных способа использования контактов в стеклянной посуде:

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

  • Разрешить пользователям делиться элементами временной шкалы с вашей стеклянной посудой . Создайте контакт, который будет представлять вашу стеклянную посуду. Когда пользователи хотят поделиться карточкой временной шкалы, ваш контакт появляется в качестве опции. Вы также можете объявить список допустимых типов 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
}

Подписка на уведомления о совместном использовании

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

Уведомление от 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 , если ошибок не произошло. Если ваша служба отвечает кодом ошибки, 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 , чтобы объявить ожидаемое произношение вашего общего контакта.

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

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

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