2016-02-09 42 views
4

形成我在您的文檔中可以看到的內容,可以在編寫CEL時查詢數據庫以獲取更多數據,但可以調用外部API嗎?是否也可以更新測量來填充缺失值。QuarkIoE事件語言 - 調用外部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的樣本或文件?

回答

0

目前無法在QuarkIoE之外自由查詢外部服務。

目前,您僅限於內置服務,可以連接到例如短信或電話

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多個應用程序外,還有一個通用的Webhooks應用程序(https://zapier.com/zapbook/webhook/),允許發送任何基於QuarkIoE事件的REST請求。

它可能不適用於您的直接示例,但它仍然是一個非常有用的工具。

(你無法更新Cumulocity測量,你就必須建立一個新的;你也需要創建一個可以在地圖中顯示的位置更新事件)

+0

嗨,你能幫我在這裏https://stackoverflow.com/q/48876012/2442565 –

1

爲了記錄在案,我也有過這樣問題,並最終使用Amazon Web Services(AWS)Lambda和Cumulocity的REST API來解決此問題。您可以使用scheduled Webtasks而不是AWS/Lambda作爲更簡單的解決方案。該鹼性溶液是:

  • 在一個時間表,運行AWS lambda函數,其從外部源檢索數據,執行一些處理,並且創建使用REST API在Cumulocity事件。

  • 在Cumulocity中寫入CEL來處理新事件和更新設備寄存器。