Contatos

Os contatos permitem que o Glassware receba itens da linha do tempo que não foram criados por ele. Os usuários precisam compartilhar explicitamente um item da linha do tempo com seu contato tocando no item de menu Compartilhar de um card.

Como funcionam

Depois de criar um contato de compartilhamento, os cards da linha do tempo são compartilhados seguindo este fluxo geral:

  1. Crie um contato e defina os tipos MIME que ele aceita.
  2. Insira o contato na linha do tempo do usuário.
  3. O usuário recebe um item da linha do tempo com um item de menu Compartilhar. O Glassware precisa permitir explicitamente que os usuários compartilhem os itens com esse item de menu.
  4. O usuário toca no item da linha do tempo, seleciona o item de menu Compartilhar e escolhe seu contato.
  5. A API Mirror cria uma cópia do card da linha do tempo compartilhado, concede acesso ao contato e insere a cópia na linha do tempo do usuário. O Glassware não pode acessar o item original da linha do tempo.
  6. Se você se inscreveu para receber notificações de compartilhamento, vai receber um payload com as informações de identificação do card da linha do tempo. Em seguida, recupere o item da linha do tempo com Timeline.get.
  7. Modifique o card da linha do tempo compartilhado e atualize o card da linha do tempo atual com Timeline.update.

Quando usar as extensões

Por padrão, o Glassware não pode acessar itens da linha do tempo que não foram criados por ele. Portanto, os contatos permitem o compartilhamento de dados pessoais do Glassware com o consentimento do usuário.

Há duas maneiras principais de usar os contatos no Glassware:

  • Permitir que os usuários compartilhem seus itens da linha do tempo com outros contatos: adicione o SHARE item de menu integrado a um card da linha do tempo. Quando os usuários tocam no item de menu de compartilhamento, o Glass mostra uma lista de contatos possíveis para compartilhar.

  • Permitir que os usuários compartilhem itens da linha do tempo com o Glassware: crie um contato que represente o Glassware. Quando os usuários quiserem compartilhar um card da linha do tempo, seu contato vai aparecer como uma opção. Você também pode declarar uma lista de tipos MIME aceitáveis para que seu contato apareça apenas para os cards de seu interesse. Para receber uma notificação quando os usuários compartilharem um card da linha do tempo com seu contato, inscreva-se nas notificações da linha do tempo.

Como criar um contato

Para permitir que os usuários compartilhem itens da linha do tempo com o Glassware, insira um contato postando uma representação JSON de um contato para o endpoint REST de inserção.

Todos os contatos precisam especificar um id, que identifica o contato para o Glassware que recebe as notificações. Você também precisa especificar um displayName e pelo menos um imageUrls, que o Glass usa para mostrar as informações de contato ao usuário.

HTTP bruto

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
}

Como se inscrever para receber notificações de compartilhamento

A API Mirror permite que você se inscreva para receber notificações enviadas quando o usuário realiza ações específicas em um item da linha do tempo ou quando o local do usuário é atualizado. Ao se inscrever em uma notificação, você fornece um URL de callback que processa a notificação.

Uma notificação da API Mirror é enviada como uma solicitação POST para o endpoint inscrito que contém um corpo de solicitação JSON.

HTTP bruto

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

O atributo itemId é o ID do item da linha do tempo compartilhado, que você pode usar com Timeline.get para receber o item da linha do tempo. O exemplo a seguir mostra um item típico da linha do tempo com um anexo de foto:

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

Seu serviço precisa responder à API com um código de status HTTP 200 OK se nenhum erro ocorrer. Se o serviço responder com um código de erro, a API Mirror poderá tentar reenviar a notificação para o serviço.

Como receber a transcrição de fala

Os usuários podem compartilhar a fala transcrita com seu contato no menu de voz principal. Atualmente, há dois comandos de voz que seu contato pode usar:

  • criar uma nota
  • "postar uma atualização"

Por exemplo, um usuário pode nos informar sobre o aniversário do Chipotle com a frase: "Ok Glass... postar uma atualização para... Cat Stream... O aniversário do Chipotle é amanhã!"

Para usar comandos de voz:

  1. Especifique a acceptCommands propriedade com o typeapropriado:

    {
      ...
    
      "displayName": "Cat Stream",
      "id": "CAT_STREAM",
      "acceptCommands": [
        {"type": "POST_AN_UPDATE"}
      ]
    }
    
  2. Inscreva-se nas notificações da linha do tempo para ser notificado de que a fala transcrita está disponível. O Glassware recebe uma notificação quando isso ocorre:

    {
      "collection": "timeline",
      "operation": "UPDATE",
      "userToken": "<USER_TOKEN>",
      "verifyToken": "<VERIFY_TOKEN>",
      "itemId": "<ITEM_ID>",
      "userActions": [
        {"type": "LAUNCH"}
      ]
    }
    
  3. Use o itemId para buscar o item da linha do tempo:

    {
      "id": "<ITEM_ID>",
      "text": "Chipotle's birthday is tomorrow",
      "recipients": [
        {"id": "CAT_STREAM"}
      ]
    }
    
  4. Se mais de um Glassware registrar um contato com o mesmo comando de voz, o Glass vai mostrar um menu de segundo nível com o displayName de cada contato. Em seguida, os usuários podem falar o contato de sua escolha. Se o contato's displayName contiver caracteres não pronunciáveis ou não for fonético, use a propriedade speakableName para declarar a pronúncia esperada do contato de compartilhamento.

Legendas para fotos compartilhadas

Os usuários podem compartilhar fotos com o Glassware com uma legenda que eles inserem com a fala. O fluxo geral do usuário é:

  1. O usuário toca em um item da linha do tempo que contém uma foto, seleciona o item de menu Compartilhar e escolhe seu contato.
  2. O usuário toca novamente em um curto período de tempo para adicionar uma legenda à foto.
  3. O usuário fala uma legenda.
  4. O item da linha do tempo é compartilhado com o Glassware, conforme descrito anteriormente em Como funcionam. Além disso, a propriedade text do item da linha do tempo é definida com a legenda transcrita do usuário.