按照我在您的文档中可以看到的形式,编写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/