按照我在您的文档中可以看到的形式,编写CEL时可以查询数据库以获取其他数据,但是可以调用外部API吗?是否也可以更新度量以填充缺失值。

例如,如果我想通过调用特定的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的更多样本或文档?

最佳答案

更新:

一段时间以来,可以使用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多个应用程序之外,还有一个通用的Webhooks应用程序(https://zapier.com/zapbook/webhook/)允许基于Cumulocity事件发送任何种类的REST请求。

它可能不适用于您的直接示例,但它仍然是一个非常有用的工具。

(您无法在Cumulocity中更新度量,您必须创建一个新度量;还需要创建可在地图上显示的位置更新事件。)

关于cumulocity - 累积事件语言-调用外部API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35291847/

10-12 23:35