如何从 Google 眼镜获取已选择自定义菜单项的通知

本文关键字:自定义 选择 菜单项 通知 获取 Google 眼镜 | 更新日期: 2023-09-27 18:36:53

我创建了一个带有自定义菜单项的时间线卡。我想在用户选择该菜单项时获得回调。

// Create a menu item for the card
var mnuActivate = new MenuItem() {
    Action = "CUSTOM",
    RemoveWhenSelected = new bool?(true),
    Id = ACCEPT_ID,
    Values = new List<MenuValue>() {
        new MenuValue() {
            State="DEFAULT",
            DisplayName="Activate",
        },
        new MenuValue() {
            State="PENDING",
            DisplayName="Activating..."
        },
        new MenuValue() {
            State="CONFIRMED",
            DisplayName="Activated"
        }
    }
}
// Create a new card for the user's timeline
var item = new TimelineItem() {
    Html = html,
    Notification = new NotificationConfig() { Level = "DEFAULT" },
    MenuItems = new List<MenuItem>() { mnuActivate }
};
var card = this._service.Timeline.Insert(item).Fetch();

然后,我订阅所有时间线事件并提供https回调URL

 // Create a new subscription
var subscription = new Subscription()
{
    Collection = "timeline",
    Operation = new List(),
    CallbackUrl = "https://mypubliclyavailableserver.com/notify"
};
this._service.Subscriptions.Insert(subscription).Fetch();
// Retrieve a list of subscriptions to make sure it is there.
var mySubcriptions = this._service.Subscriptions.List().Fetch();
if (mySubcriptions != null && mySubcriptions.Items != null && mySubcriptions.Items.Count == 1)
{
    Console.WriteLine("Subscription created successfully.");
}
因此,据我所知,订阅的创建没有任何问题。但是在与卡交互后,我从未收到回电。我错过了什么?

我尝试过的事情:

  1. 在订阅对象、时间线卡和菜单项上填充 ID
  2. 在创建卡之前而不是之后订阅
  3. 将用户 ID 添加为订阅对象上的用户令牌
  4. 直接调用我的回调 URL 以确保它正在侦听

来自 GET/mirror/v1/subscriptions 的 JSON 响应:

{
 "kind": "mirror#subscriptionsList",
 "items": [
  {
   "kind": "mirror#subscription",
   "id": "timeline",
   "updated": "2013-10-28T15:19:19.404Z",
   "collection": "timeline",
   "callbackUrl": "https://mypubliclyavailableserver.com/notify"
  }
 ]
}

如何从 Google 眼镜获取已选择自定义菜单项的通知

我不是这方面的专家。但是搜索相同的主题,我发现了这个 https://developers.google.com/glass/subscription-proxy,据此,你不需要转发网址吗?我认为您的示例中回调 url 格式不正确?

您是否在没有"操作"的情况下尝试过。

var 订阅 = 新订阅() { 集合 ="时间线", 回调网址 = "https://mypubliclyavailableserver.com/notify" }

这是一个可选 https://developers.google.com/glass/v1/reference/subscriptions/insert

事实证明,

我的回调 URL https://mypubliclyavailableserver.com/notify的 SSL 证书有问题

当我尝试从 hackst.com 访问我的网络服务时,它起作用了。我猜他们忽略了谷歌看到的"无法为SSL/TLS安全通道建立信任关系"错误。

谷歌没有可以发送错误的位置,所以我永远不知道它是否在打电话给我。也许如果在订阅过程中,如果回调 URL 的证书看起来无效,可能会返回错误?