2016-02-09 3 views
4

Форма, которую я вижу в вашей документации, можно запросить базу данных для получения дополнительных данных при написании CEL, но можно ли вызвать внешний API? Возможно также обновить измерение для заполнения отсутствующего значения.Язык событий Cumulocity - вызов внешнего API

Например, если я хочу обновить измерения, добавляя «альт» значение сегмента «c8y_Position», вызывая специфический API: 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

В настоящее время невозможно свободно запрашивать внешние службы за пределами Cumulocity.

В настоящее время вы ограничены встроенными службами, которые будут подключаться, например. смс или телефонные звонки

2

Update:

Это так как в то время как можно вызывать внешние интерфейсы из CEL с использованием потока SendRequest (https://www.cumulocity.com/guides/event-language/data-model#sendrequest). Результаты могут быть получены через поток ResponseReceived (https://www.cumulocity.com/guides/event-language/data-model/#response-received).

Предыдущий ответ:

Вы можете получить в реальное время события в Zapier с помощью приложения Cumulocity (https://zapier.com/zapbook/cumulocity/) и оттуда в многочисленные другие приложения. Помимо 500 приложений в Zapier существует также общее приложение Webhooks (https://zapier.com/zapbook/webhook/), которое позволяет отправлять любой запрос REST на основе событий Cumulocity.

Возможно, это не сработает для вашего непосредственного примера, но это по-прежнему очень полезный инструмент.

(Вы не можете обновить измерения в Cumulocity, вы должны создать новый один;. Также необходимо создавать события для обновления местоположения, которые могут быть показаны на картах)

+0

Привет, вы можете мне помочь здесь https://stackoverflow.com/q/48876012/2442565 –

1

Для записи, я также имел это проблемы, и в конечном итоге с помощью Amazon Web Services (AWS) Lambda и REST API Cumulocity для его решения. Вы можете использовать scheduled Webtasks вместо AWS/Lambda для более простого решения. Основной раствор:

  • На графике, запустить функцию AWS Lambda, который извлекает данные из внешних источников, выполняет определенную обработку, и создает события в Cumulocity, используя REST API.

  • Напишите CEL в Cumulocity, чтобы обрабатывать новые события и обновлять регистраторы устройств.