展会信息港展会大全

谷歌眼镜Mirror API开发指南之Subscriptions
来源:互联网   发布日期:2016-01-19 12:37:20   浏览:1197次  

导读:订阅Mirrror API允许当用户需要具体的Timeline Item和当用户的位置发送改变时发送订阅通知(subscribe to notifications),当你订阅通知,你需要提供一个回调URL来处理通知。接收通知来自MirrorAPI的通知会发送 ...

订阅

Mirrror API允许当用户需要具体的Timeline Item和当用户的位置发送改变时发送订阅通知(subscribe to notifications), 当你订阅通知,你需要提供一个回调URL来处理通知。

接收通知

来自MirrorAPI的通知会发送一个POST请求给订阅的段节点,这里面包含一段JSON数据。

Raw HTTP

[HTML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

{

"collection": "timeline",

"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",

"operation": "UPDATE",

"userToken": "harold_penguin",

"verifyToken": "random_hash_to_verify_referer",

"userActions": [

{

"type": "<TYPE>",

"payload": "<PAYLOAD>"

}

]

}

Java代码

[Java] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import com.google.api.client.json.JsonFactory;

import com.google.api.client.json.jackson.JacksonFactory;

import com.google.api.services.mirror.model.Notification;

import java.io.IOException;

import java.io.InputStream;

// ...

public class MyClass {

// ...

/**

* Parse a request body into a Notification object.

*

* @param requestBody The notification payload sent by the Mirror API.

* @return Parsed notification payload if successful, {@code null} otherwise.

*/

static Notification parseNotification(InputStream requestBody) {

try {

JsonFactory jsonFactory = new JacksonFactory();

return jsonFactory.fromInputStream(requetBody, Notification.class);

} catch (IOException e) {

System.out.println("An error occurred: " + e);

return null;

}

}

// ...

}

Python

[Python] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

import json

def parse_notification(request_body):

"""Parse a request body into a notification dict.

Params:

request_body: The notification payload sent by the Mirror API as a string.

Returns:

Dict representing the notification payload.

"""

return json.load(request_body)

你的服务如果没有错误发生必须对HTTP状态码等于200时做出响应。如果你的服务响应一个错误代码,Mirror API可能会重发通知给你的服务。

注意: 10秒无响应连接将超时。如果你的请求时间过长,你需要新开一个线程。

通知类型

Mirror API为不同事件会发送不同的通知载体。

共享timeline item

用户通过你的Glassware来共享Timeline item。

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

{

"collection": "timeline",

"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",

"operation": "INSERT",

"userToken": "harold_penguin",

"verifyToken": "random_hash_to_verify_referer",

"userActions": [

{

"type": "SHARE"

}

]

}

itemId属性共享Timelineitem的id,你可以通过使用 Timeline.get来获得timeline item。下面一个典型的示例展示了timelineitem带照片做为附件。

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

{

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

]

}

]

}

注意:有关更多信息,请参见 联系人(Contacts)与联系人分享内容。

回复

用户使用内置的答复回复你timeline item

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

{

"collection": "timeline",

"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",

"operation": "INSERT",

"userToken": "harold_penguin",

"verifyToken": "random_hash_to_verify_referer",

"userActions": [

{

"type": "REPLY"

}

]

}

itemId属性设置为项目包含的ID

inReplyTo属性设置为timelineitem的ID项回复

text属性设置为文本转录

收件人属性设置为timeline item的创造者的回复,如果它存在的话

例子:

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

{

"kind": "glass#timelineItem",

"id": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",

"inReplyTo": "3236e5b0-b282-4e00-9d7b-6b80e2f47f3d",

"text": "This is a text reply",

"recipients": [

{

"id": "CREATOR_ID",

"displayName": "CREATOR_DISPLAY_NAME",

"imageUrls": [

"CREATOR_IMAGE_URL"

]

}

]

}

删除

用户删除一个timeline item

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

{

"collection": "timeline",

"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",

"operation": "DELETE",

"userToken": "harold_penguin",

"verifyToken": "random_hash_to_verify_referer",

"userActions": [

{

"type": "DELETE"

}

]

}

itemId属性设置为删除项的ID。项目不再包含元数据除了它的ID和isDeleted属性

注意:如果用户删除一个timeline item,建议您从您的系统删除这些内容

自定义菜单项选择

用户选择了您服务设置的一个自定义菜单项(custom menu item)

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

{

"collection": "timeline",

"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",

"operation": "UPDATE",

"userToken": "harold_penguin",

"userActions": [

{

"type": "CUSTOM",

"payload": "PING"

}

]

}

itemId属性设置为用户选择菜单项的ID

userActions数组包含用户点击这个项目自定义操作的列表,。你的服务应该相应地处理这些行为。

位置更新

一个新的位置对当前用户可用

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

{

"collection": "locations",

"itemId": "latest",

"operation": "UPDATE",

"userToken": "harold_penguin",

"verifyToken": "random_hash_to_verify_referer"

}

当你的Glassware接收位置更新、发送一个请求给glass.locations.get让端点知道最新的位置。你的Glassware每十分钟接收一次位置更新

注意:获取位置信息需要在https://www.googleapis.com/auth/glass.location范围之内

语音命令

你的用户激活语音命令,例如: Ok Glass, take a note, Cat Stream, 明天是Chipotle是的生日 。以下通知发送到你的Glassware

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

{

"collection": "timeline",

"operation": "INSERT",

"userToken": "chipotle's_owner",

"verifyToken": "mew mew mew",

"itemId": "<ITEM_ID>",

"userActions": [

{ type : "LAUNCH"}

]

}

这个通知是有别于其他启动userActions的通知。

您可以使用itemId获取timeline item的值

[XML] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

{

"id": "<ITEM_ID>",

"text": "Chipotle's birthday is tomorrow",

"recipients": [

{"id": "CAT_STREAM"}

]

}

收件人属性包含联系人id所使用的语音命令。

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港