Contatos

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

Como funcionam

Depois que você cria um contato de compartilhamento, os cards de cronograma de compartilhamento seguem este fluxo geral:

  1. Crie um contato e defina os tipos MIME compatíveis com seu contato.
  2. Insira o contato na linha do tempo do seu usuário.
  3. O usuário recebe um item de linha do tempo com um item de menu Compartilhar. O Glassware precisa permitir explicitamente que os usuários compartilhem os itens com este item de menu.
  4. O usuário toca no item da linha do tempo, seleciona o item de menu Compartilhar e seleciona seu contato.
  5. A API Mirror cria uma cópia do card da linha do tempo compartilhada, concede ao contato acesso à cópia e a insere na linha do tempo do usuário. Seu Glassware não pode acessar o item da linha do tempo original.
  6. Se você se inscreveu para compartilhar notificações, vai receber um payload com as informações de identificação do card da linha do tempo. É possível recuperar o item da linha do tempo com Timeline.get.
  7. Modifique o card da linha do tempo compartilhado e atualize-o com Timeline.update.

Quando usar os recursos

Por padrão, o Glassware não pode acessar itens de linha do tempo que ele não criou, portanto, os contatos permitem o compartilhamento de dados do Glassware com o Glassware com o consentimento do usuário.

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

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

  • Permitir que os usuários compartilhem itens de linha do tempo com o Glassware: crie um contato que represente seu Glassware. Quando os usuários querem compartilhar um card da linha do tempo, o contato aparece como uma opção. Também é possível declarar uma lista de tipos MIME aceitáveis para que seu contato apareça somente em cards do seu interesse. Para receber notificações de quando os usuários compartilham um card da linha do tempo com seu contato, inscreva-se para receber notificações da linha do tempo.

Como criar um contato

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

Todos os contatos precisam especificar um id, que identifica o contato para o Glassware que recebe as notificações. Também é necessário especificar um displayName e pelo menos um imageUrls, que o Google Glass usa para exibir os dados de contato para o 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
}

Inscrever-se para compartilhar notificações

A API Mirror permite assinar notificações que são enviadas quando o usuário realiza ações específicas em um item da linha do tempo ou quando a localização do usuário é atualizada. 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 de 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 uma foto anexada:

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

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

Recebendo transcrição de fala

Os usuários podem compartilhar a transcrição com seu contato no menu de voz principal. No momento, seu contato pode usar dois comandos de voz:

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

Por exemplo, um usuário pode informar o aniversário de Chipotle com a frase: "Ok Glass... poste uma atualização para... Fluxo de gatos... O aniversário de Chipotle é amanhã!"

Para usar comandos de voz:

  1. Especifique a propriedade acceptCommands com o type apropriado:

    {
      ...
    
      "displayName": "Cat Stream",
      "id": "CAT_STREAM",
      "acceptCommands": [
        {"type": "POST_AN_UPDATE"}
      ]
    }
    
  2. Inscreva-se para receber notificações da linha do tempo para receber notificações sobre a transcrição disponível. Seu 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 exibirá um menu de segundo nível que mostra o displayName de cada contato. Os usuários podem falar o contato escolhido. Se a displayName do seu contato contiver caracteres não pronomes ou não for fonético, use a propriedade speakableName para declarar a pronúncia esperada do seu contato de compartilhamento.

Legendas de fotos compartilhadas

Os usuários podem compartilhar fotos com seu Glassware usando uma legenda que eles inserem com a fala. O fluxo geral de usuários é:

  1. O usuário toca em um item da linha do tempo que contém uma foto, seleciona o item Compartilhar do menu e seleciona seu contato.
  2. O usuário toca novamente em um curto período 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 de linha do tempo é definida com a legenda transcrita do usuário.