Python 如何正确订阅自定义菜单操作?
这是到目前为止我所拥有的代码,其中get_url是一个帮助函数,它用订阅代理url包装url,该url将通知转发给我讨厌的虚拟服务器Python 如何正确订阅自定义菜单操作?,python,google-mirror-api,google-glass,Python,Google Mirror Api,Google Glass,这是到目前为止我所拥有的代码,其中get_url是一个帮助函数,它用订阅代理url包装url,该url将通知转发给我讨厌的虚拟服务器 card = { 'text': 'click ok', 'menuItems': [{ 'action': 'CUSTOM', 'id': 'ready', 'values': [{
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
}
我确认订阅已创建(使用
列表
调用),但当我单击窗口中的菜单项时,我的代理服务器没有看到任何通知请求。有什么建议吗 看起来您的回调url可能希望是/notify而不是/start,但如果无法访问您的所有项目,我无法确定这一点
特别是关于订阅代理,在上找到的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上的用户执行操作时,正确设置的自定义订阅将得到回调。如果在自定义代码中看不到回调,您可以备份并尝试
我使用Java和AppEngineStarter项目,下面是一些帮助我进行设置的东西。使用日志语句、将应用部署到app engine,然后在app engine管理控制台中查看这些日志语句非常有用
如果您可以看到日志语句正在执行(在我的例子中是NotifyServlet.java中的代码),那么一切都很顺利
此时,您可以通过使用命令行Curl直接调用notify操作,模拟回调请求,在本地进行微调,而无需部署到appengine或轻敲玻璃硬件
这样做的另一个好处是,如果您通过数据包嗅探器(如WireShark、Fiddler或Charles)代理curl命令,您可以轻松查看http事务并调试正在发生的事情
祝你好运 谢谢马克,看起来这就是问题所在。部署的应用程序确实向/通知发送了TIFIS。我知道我需要使用curl来模拟请求,但我认为我至少能够通过记录来自代理的http请求来查看生成了什么类型的请求。你让代理工作了吗?我不知道你所说的“他们的代理”是什么意思,你能为我扩展一下吗?是的,我让它工作了。文档不够清晰,我将更新我的答案,以包含一些关于JSON的信息,您应该发送JSON以使其正常工作。