通讯录

通过通讯录,您的 Glassware 可以接收其未创建的时间轴项。 用户必须通过点按卡片的分享菜单项,明确与您的联系人分享时间轴项。

运作方式

创建共享联系人后,共享时间轴卡片会遵循以下一般流程:

  1. 创建联系人并定义联系人支持的 MIME 类型。
  2. 将联系人插入到用户的时间轴中。
  3. 用户收到的时间轴项包含分享菜单项。Glassware 必须明确允许用户通过此菜单项分享内容。
  4. 用户点按时间轴项,选择分享菜单项,然后选择您的联系人。
  5. Mirror API 会创建共享时间轴卡片的副本,授予您的联系人对该副本的访问权限,并将该副本插入到用户的时间轴中。Glassware 无法访问原始时间轴项目。
  6. 如果您订阅了分享通知,则会收到包含时间轴卡片标识信息的载荷。然后,您可以使用 Timeline.get 检索时间轴项。
  7. 您修改共享时间轴卡片,并使用 Timeline.update 更新现有时间轴卡片。

何时使用此类附加信息

默认情况下,Glassware 无法访问其未创建的时间轴项,因此联系人允许 Glassware 在征得用户同意的情况下与 Glassware 共享数据。

Glassware 可以通过两种主要方式使用联系人:

  • 允许用户与其他联系人分享时间轴内容:向时间轴卡片添加内置菜单项SHARE。当用户点按分享菜单项时,Glass 会显示可分享的联系人列表。

  • 允许用户与 Glassware 分享时间轴项:创建一个代表 Glassware 的联系人。当用户想要分享时间轴卡片时,您的联系信息会显示为一个选项。您还可以声明一个可接受的 MIME 类型列表,以便您的联系人仅在您感兴趣的卡片中显示。 如需在用户与您的联系人分享时间轴卡片时收到通知,您可以订阅时间轴通知。

创建联系人

如需允许用户与您的 Glassware 分享时间轴项,请通过向 insert REST 端点 POST 联系人的 JSON 表示形式来插入联系人。

所有联系人都必须指定一个 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,您可以订阅通知,以便在用户对时间轴项执行特定操作或用户位置信息更新时收到通知。订阅通知时,您需要提供一个用于处理通知的回调网址。

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>"
          ]
      }
  ]
}

如果未发生任何错误,您的服务必须以 200 OK HTTP 状态代码响应 API。如果您的服务以错误代码进行响应,Mirror API 可能会尝试将通知重新发送给您的服务。

接收语音转写

用户可以通过主语音菜单与联系人分享转写的语音。 目前,紧急联络人可以使用以下两种语音指令:

  • “添加记事”
  • “发布更新”

例如,用户可以使用以下短语告知我们 Chipotle 即将迎来生日:“Ok Glass... post an update to...Cat Stream... Chipotle 的生日是明天!”

如需使用语音指令,请执行以下操作:

  1. 使用适当的 type 指定 acceptCommands 属性:

    {
      ...
    
      "displayName": "Cat Stream",
      "id": "CAT_STREAM",
      "acceptCommands": [
        {"type": "POST_AN_UPDATE"}
      ]
    }
    
  2. 订阅时间轴通知,以便在转写语音可用时收到通知。当出现以下情况时,Glassware 会收到通知:

    {
      "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 属性会设置为用户的转写字幕。