如何正确订阅自定义菜单操作?

时间:2013-06-16 01:34:52

标签: python google-mirror-api google-glass

这是我到目前为止的代码,其中get_url是一个帮助函数,它使用订阅代理URL包装url,将通知转发给我讨厌设置的虚拟服务器。

card = {
    'text': 'click ok',
    'menuItems': [{
                      'action': 'CUSTOM',
                      'id': 'ready',
                      'values': [{
                                     'displayName': 'o',
                                     'iconUrl': 'img.jpg'
                                 }]
                  }],
}
self.mirror_service.timeline().insert(body=card).execute()
callback_url = get_url(self, '/start')
body = { # self.userid is initialized in util.auth_required.
    'collection': self.request.get('collection', 'timeline'),
    'userToken': self.userid,
    'callbackUrl': callback_url
}

我确认已创建订阅(使用list调用)但是当我单击玻璃游乐场中的菜单项时,我的代理服务器没有看到任何通知请求。有小费吗?

1 个答案:

答案 0 :(得分:2)

看起来你的callback_url可能想要/ notify而不是/ start,但是如果不能访问你的所有项目我就无法确定。

特别是关于订阅代理,在documentation找到的json示例似乎不完整。

首先,确保将用户令牌更改为有效的用户令牌,该令牌将是一系列数字。接下来,添加一个itemId和一个userActions对象。这是适用于我的JSON:

{
"callbackUrl": "https://mirrornotifications.appspot.com/forward?url=http://example.com/path/to/test.php",
"collection": "timeline",
"itemId": "your-item-id-here",
"operation": "UPDATE",
"userToken": "your-userToken-here",
"userActions": [
    {
        "type": "PIN"
    }
]

}

确保也替换itemId。我通过在我的设置中查看应用引擎日志获得了userToken和itemId。

以下是处理回调的一般建议:

我可以确认,当Glass上的用户执行操作时,正确设置的自定义订阅将获得回调。如果您没有在自定义代码中看到回调,则可以备份并尝试starter project

我使用Java和App Engine入门项目,这里有一些帮助我进行设置的东西。使用日志语句,将应用程序部署到应用程序引擎,然后在应用程序引擎管理控制台中查看这些日志语句非常有用。

如果你能看到日志语句正在执行,(在我的例子中是NotifyServlet.java中的代码)那么事情进展顺利。

此时,您可以使用命令行Curl直接调用通知操作,模拟回调请求,而无需部署到应用引擎或点击玻璃硬件,从而在本地微调事物。

这样做的另一个好处是,如果您通过WireShark,Fiddler或Charles等数据包嗅探器代理curl命令,您可以轻松查看http事务并调试正在进行的操作。

祝你好运!