累積REST APIを使用しています。定期的なリアルタイム通知が機能します(例:私たちは/ alarms/*を購読して接続/ポーリングループを開始し、アラームを生成すると期待されるJSONを受信します。特定のモジュールやステートメントはインストールされていません。 しかし、我々はSmartRESTと同じことをしようとすると、我々はすぐにアラームが作成されると、このエラーが表示されます。SmartRESTで累積リアルタイム通知を受信する方法は?
40,,/alarms/177649296,Could not find any templates subscribed for the channel
リファレンスガイド(http://cumulocity.com/guides/reference/smartrest/)に続いて、すべての要求が同じを持っているところ、我々は、このようにそれを試してみましたX-IDヘッダおよびすべての要求は、最後の一つを除いて、予想されるHTTPステータス200となし、エラーメッセージが表示される:
- /sの
体にPOSTを実行して、スマートな応答テンプレートを登録します。11,102,,,$.channel
- Handhake:へのPOST/CEP /リアルタイム
ボディ:80
レスポンスが私たちのclientId(例えばあります191het1z38bp7iq1m96jqqt8jnef) - 購読:
81,191het1z38bp7iq1m96jqqt8jnef,/alarms/*
- 接続:/CEP /リアルタイムにPOST
ボディ:通常のRESTの場合83,191het1z38bp7iq1m96jqqt8jnef
POSTボディ
/CEP /リアルタイムにします通知は2つの要素を持つJSON配列で構成され、どちらもプロパティ "channel"を持ちます。それが私たちの応答テンプレートから期待されるものです。代わりに、前述のエラー40が発生します。
レスポンステンプレートが間違っていますか?それはX-Idと正しく一致していませんか? 「チャンネルに登録されたテンプレート」がないということは何を意味していますか?サブスクリプションは特定のレスポンステンプレートではなく、clientIdに対して実行され、テンプレートは自動的に一致するはずです。おそらく "テンプレート"は "X-Id"を意味するのでしょうか?ドキュメンテーションは、その言葉の意味に関してあいまいであるようです。しかし、とにかく、私たちはすべてのリクエストで同じX-Idヘッダーを使用しました。
私たちが間違っていることについての何かの指摘は、私たちが今ではほとんど何かを試したので、評価されるでしょう。
ありがとうございます!それはまさに私が必要とした説明です。私たちはいつもワイルドカードでテストしました。とても便利でした。 SmartRESTがそれをサポートしていないことを知らなかった。特定のチャンネルを購読すると、それは機能します。 :) –
ちょっとした説明:実験では、「自分の購読しているチャンネルにあなたのX-Idをリンクしています」という質問に記載されているキューイングメカニズムに関連していないことが示されています。https://stackoverflow.com/q/35841237/8495341 If私は別のハンドシェイクを行いますが、同じX-Idを使用すると、以前のサブスクリプションとその間にサーバーにキューイングされていたデータは新しい接続に持ち越されず、それらのいずれも取得しません通知。これは意味があります。なぜなら、複数のデバイスがいつでも同じX-Idに接続できるからです。 –
はい、正しいです。 X-Idは、一般的なCometDプロセスとは関係ありません。 JSONからCSVへのマッピングに使用されます。あなたが得るものとキャッシュされるものは、JSONペイロードを使用するかのようにCometDプロセスによって定義されます – TyrManuZ