4

あなたのドキュメンテーションで私が見ることができるフォームでは、CEL を作成するときにデータベースに追加データを照会することは可能ですが、外部 API を呼び出すことは可能ですか? Measurement を更新して欠損値を入力することも可能ですか。

たとえば、特定の API を呼び出して「c8y_Position」セグメントの「alt」値を追加して測定値を更新する場合: https://maps.googleapis.com/maps/api/elevation/json?locations=40.714728 ,-73.998672

この種のステートメントを書くことは可能ですか:

expression string js:getElevation(lng, lat) [
    function request(lng, lat, callback) {
    var xobj = new XMLHttpRequest();
    // true parameter denotes asynchronous
    xobj.open('GET', 'https://maps.googleapis.com/maps/api/elevation/json?locations=' + lat + ', ' + lng + ', true);
    xobj.onreadystatechange = function () {
            if (xobj.readyState == 4 && xobj.status == "200") {
                callback(xobj.responseText);
            }
        };
        xobj.send(null);
    }
    request(lng, lat, function (data) {
        return data.results.elevation;
    });
]
insert into UpdateMeasurement
select
  e.id as id,
  getElevation(
    getNumber(e, "c8y_Position.lng.value"),
    getNumber(e, "c8y_Position.lat.value")
   ) as c8y_Position.alt
from MeasurementCreated e

このような加工は可能でしょうか。CEL に関するサンプルやドキュメントはありますか?

4

3 に答える 3

2

アップデート:

しばらくの間、SendRequest ストリーム ( https://www.cumulocity.com/guides/event-language/data-model#sendrequest ) を使用して CEL から外部 API を呼び出すことが可能になりました。結果は ResponseReceived ( https://www.cumulocity.com/guides/event-language/data-model/#response-received ) ストリームを通じて受け取ることができます。

以前の応答:

Cumulocity アプリケーション ( https://zapier.com/zapbook/cumulocity/ ) を使用して Zapier にリアルタイム イベントを取得し、そこから他の多数のアプリケーションに取得できます。Zapier の 500 以上のアプリケーションに加えて、Things Cloud イベントに基づいてあらゆる種類の REST リクエストを送信できる汎用 Webhook アプリケーション ( https://zapier.com/zapbook/webhook/ ) もあります。

直接の例ではうまくいかないかもしれませんが、それでも非常に便利なツールです。

(Things Cloud で測定値を更新することはできません。新しい測定値を作成する必要があります。また、マップに表示できる場所の更新のためにイベントを作成する必要があります。)

于 2016-05-25T15:25:44.457 に答える
0

現在、Things Cloud 外の外部サービスを自由にクエリすることはできません。

現在、SMS や電話などに接続する組み込みサービスに制限されています。

于 2016-02-09T17:29:38.627 に答える