如何从Glass获取选择自定义菜单项的通知?

时间:2013-10-25 22:00:28

标签: c# google-mirror-api google-glass

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

// 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回调网址

 // 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. 在订阅对象,时间轴卡和menuItem
  2. 上填充ID
  3. 在创建卡之前订阅而不是在
  4. 之后订阅
  5. 在订阅对象上添加userId作为UserToken
  6. 直接调用我的回调网址以确保其正在侦听
  7. 来自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"
      }
     ]
    }
    

3 个答案:

答案 0 :(得分:0)

我不是这方面的专家。 但是搜索相同的主题,我找到了https://developers.google.com/glass/subscription-proxy, 根据这个,你不需要有前锋网址吗?我认为回调网址格式在你的例子中是不正确的?

答案 1 :(得分:0)

你是否尝试过没有“操作”的一起。

  

var subscription = new Subscription()   {      Collection =“timeline”,      CallbackUrl =“https://mypubliclyavailableserver.com/notify”   }

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

答案 2 :(得分:0)

事实证明我的回调网址https://mypubliclyavailableserver.com/notify

上的SSL证书存在问题

当我试图从hackst.com点击我的网络服务时,它有效。我猜他们忽略了谷歌所看到的“无法建立SSL / TLS安全通道的信任关系”错误。

没有Google可以发送错误的位置,所以我从来不知道它是否在呼唤我。也许如果在订阅过程中,如果回调URL的证书看起来没有效果,可能会返回错误?