谷歌镜,API可以发送用户事件的通知玻璃器皿,其中包括:
- 当用户选择菜单项
- 当用户共享内容与接触
- 用户的位置,每隔10分钟左右
要接收通知,你创建一个订阅,指定一个回调URL发生时接收通知。当你收到通知时,你可以随身携带所需的操作根据通知。
订阅时间表通知的更多信息,请参阅以下资源:
- 开发人员指南
- 参考文档
1、开发指南:
订阅
镜API允许你 订阅 ,当用户需要发送一个时间轴项目的具体行动, 或用户位置时,已经更新的通知。当您订阅通知,你提供一个回调URL处理通知。
注:在生产中,您的回调URL必须支持SSL。为发展宗旨,我们提供了一个 订阅代理服务器可以转发通知非SSL开发服务器。
接收通知
从镜像API发送一个POST
请求包含一个JSON
请求主体的认购端点的通知。
html
{ "collection": "timeline", "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg", "operation": "UPDATE", "userToken": "harold_penguin", "verifyToken": "random_hash_to_verify_referer", "userActions": [ { "type": "<TYPE>", "payload": "<PAYLOAD>" } ] }
java
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
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)
你的服务必须回应一个200 OK
HTTP状态代码,如果没有发生错误的API 。如果您的服务响应错误代码,镜像API可能会尝试重新发送该通知为您服务。
注:连接超时10秒后。如果需要一个漫长的过程,马上做出反应,并在另一个线程中做的过程。
通知类型
镜API发送一个不同的有效载荷为不同的事件通知。
共享时间表项目
用户共享的时间表用玻璃器皿项目。
{
"collection": "timeline",
"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
"operation": "UPDATE",
"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>" ] } ] }
注:与联系人共享内容的更多信息,请参阅联系。
回复
用户已经回答了你的时间表项目使用内置的回复
菜单项:
{
"collection": "timeline",
"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
"operation": "INSERT",
"userToken": "harold_penguin",
"verifyToken": "random_hash_to_verify_referer",
"userActions": [
{
"type": "REPLY"
}
]
}
ITEMID
属性设置该项目包含的ID
:
inReplyTo
属性设置为ID
的时间轴项目,它是一个答复。文本
属性设置为文本转录。收件人
属性设置的时间轴项目的创造者,
它是一个回复,如果它存在。
例如:
{
"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"
]
}
]
}
删除
该用户已删除项目的时间表:
{
"collection": "timeline",
"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
"operation": "DELETE",
"userToken": "harold_penguin",
"verifyToken": "random_hash_to_verify_referer",
"userActions": [
{
"type": "DELETE"
}
]
}
ITEMID
属性设置的ID删除项。资料不再包含元数据以外的ID和 isDeleted
财产的。
注意:如果用户删除一个项目从他们的时间表,建议您删除这些内容从你的系统太。
选择自定义菜单项
用户选择了一个 自定义菜单项 设置由您的服务:
{
"collection": "timeline",
"itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
"operation": "UPDATE",
"userToken": "harold_penguin",
"userActions": [
{
"type": "CUSTOM",
"payload": "PING"
}
]
}
的ITEMID
属性被设置为用户选择的菜单项的ID。
的userActions
数组包含了这个项目的用户自定义操作的列表。您的服务应如何处理这些相应的行动。
位置更新
为当前用户提供一个新的位置是:
{
"collection": "locations",
"itemId": "latest",
"operation": "UPDATE",
"userToken": "harold_penguin",
"verifyToken": "random_hash_to_verify_referer"
}
当你的玻璃器皿接收位置更新,发送一个请求到的glass.locations.get 端点检索最新的已知位置。你的玻璃器皿接收位置,每10分钟更新。
注:正在位置信息需要 https://www.googleapis.com/auth/glass.location的
范围。