Come scrivere un'estensione meteo
In questa sezione viene visualizzata una guida dettagliata per scrivere un'estensione meteo personalizzata.
Che cos'è un'estensione meteo
L'estensione meteo in Data Manager per l'agricoltura è un file manifesto (JSON) che fornisce i dettagli completi sulle API e un modello per ogni risposta API (output). Pertanto, il file di estensione è essenzialmente una struttura di modelli API come definito da Data Manager per l'agricoltura, per comprendere le caratteristiche di input (richiesta) e output (risposta).
Struttura dell'estensione meteo
A livello generale, il file di estensione è un file JSON costituito da due elementi:
- Metadati del provider (oggetto JSON)
- Informazioni sull'API (matrice JSON)
Metadati del provider
Si tratta di un oggetto JSON che fornisce i dettagli sui campi seguenti necessari per identificare in modo univoco un'estensione e le relative informazioni sul controllo delle versioni. I dettagli forniti in questa sezione dell'estensione vengono visualizzati ai clienti esterni nel marketplace data manager per l'agricoltura. Pertanto extensionId
, & extensionName
(per facilitare l'identificazione) e description
(per la proposta di valore) deve essere incentrato sul cliente.
Metadati del provider di esempio
"provider": {
"extensionId": "abc.weather",
"extensionName": "ABC weather",
"description": "Get Weather data from ABC weather into Azure Data Manager for Agriculture platform using this extension",
"dataCategory": "Weather",
"farmBeatsSchemaVersion": "1.0",
"extensionVersion": "1.0",
"supportUrl": "www.abc.com/support",
"supportEmail": "support@abc.com"
}
Dettagli dei metadati del provider
Nome | Tipo | Descrizione |
---|---|---|
extensionId | string | ID fornito nel modo di nome dell'organizzazione (Contoso) e servizio (meteo) Ex: org.service . extensionId è l'identificatore univoco dell'estensione e quello usato dagli utenti nella piattaforma Data Manager for Agriculture per interagire con le API di estensione |
extensionName | string | Nome dell'estensione da usare nel marketplace dell'estensione Data Manager for Agriculture. |
description | stringa | Descrizione che indica le funzionalità e i servizi offerti dall'estensione. |
dataCategory | string | Per le estensioni meteo, usare weather . |
farmBeatsSchemaVersion | string | Versione del file manifesto sul lato Data Manager for Agriculture. Eventuali aggiornamenti al file manifesto esistente comportano un nuovo aggiornamento della versione a questo campo. |
extensionVersion | string | Versione del file di estensione. 1.0 A partire da . Aggiornamenti al file di estensione incrementare questo numero di versione in base alla convenzione degli aggiornamenti principali e secondari. |
Supporturl | string | Collegamento al sito Web per generare query di supporto e domande frequenti |
supportEmail | string | Inviare un messaggio di posta elettronica nelle query di supporto. |
Informazioni sull'API
La matrice JSON di informazioni API (apiInfos
) può essere ulteriormente suddivisa negli elementi strutturali seguenti.
- Metadati dell'API
- Parametri di autenticazione
- Parametri di input dell'API
- Parametri di input dell'API estratti
- Parametri funzionali
- Sistema di unità
- Parametri della piattaforma e personalizzati
- Modello di piattaforma e personalizzato
Metadati dell'API
Questa sezione è costituita da informazioni di base relative all'API usata da Data Manager per l'agricoltura per identificare apiName
(chiamate in modo esplicito dagli utenti) e reindirizzare la richiesta API al diritto endpoint
in base all'oggetto appropriato requestType
.
Metadati dell'API di esempio
"apiInfos": [
{
"apiName": "dailyforecast",
"description": "The Daily Forecast API",
"endpoint": "https://ag.us.clearapis.com/v1.1/forecast/daily",
"requestType": "GET",
"isLoadAPI": "false",
"typeOfData": "forecast",
"granularity": "daily",
"defaultUnitSystem": "us"
}
]
Dettagli dei metadati dell'API
Nome | Tipo | Descrizione |
---|---|---|
apiInfos | array | Matrice JSON di oggetti, in cui ogni API è un oggetto all'interno apiInfos della matrice. |
apiName | string | Il nome DELL'API supportato dall'estensione è il nome esatto che gli utenti chiamerebbero nelle API di estensione. Seguire la stessa convenzione di denominazione descritta nella documentazione dell'API. |
description | stringa | Descrizione API |
endpoint | string | Endpoint API per Data Manager per l'agricoltura apiName da chiamare in . |
Requesttype | string | GET o POST o PUT tipo di richiesta come supportato da apiName . |
isLoadAPI | boolean | Se è un'API apiName pass-through come i dati meteo correnti, impostare questa chiave come false . Per tutte le API di caricamento (cronologia e previsione), mantenere questo campo come true . Quando la isLoadAPI chiave è false , la risposta API viene inviata direttamente all'utente e non viene archiviata nel servizio di archiviazione Data Manager for Agriculture. |
typeOfData | string | I valori attualmente supportati sono Historical e Forecast . |
granularity | string | I valori attualmente supportati sono Daily e Hourly . |
defaultUnitSystem | string | Specificare il nome del sistema di unità predefinite supportato da apiName . |
Parametri di autenticazione
Questa sezione accetta i parametri correlati all'autenticazione supportati da apiName
. Poiché Data Manager per l'agricoltura supporta due tipi di chiavi correlate all'autenticazione (x-ms-farmBeats-data-provider-id
& x-ms-farmBeats-data-provider-key
) nella sezione intestazione API, il file di estensione deve specificare in modo esplicito il nome della chiave delle rispettive chiavi di autenticazione come richiesto da apiName
.
Poiché Data Manager per l'agricoltura raccoglie le informazioni di autenticazione tramite l'intestazione API (nell'API Crea processo meteo). Il mapping dei parametri di autenticazione viene eseguito per garantire che Data Manager per l'agricoltura possa passare la chiave di conseguenza all'estensione in base alle esigenze.
Parametri di autenticazione di esempio
"apiInfos": [
"authInputParameters": [
{
"farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-id",
"name": "app_id",
"isRequired": "true",
"providerDataType": "string",
"description": "Provide the APP ID, username etc. that your API supports",
"location": "apiQuery"
},
{
"farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-key",
"name": "app_key",
"isRequired": "true",
"providerDataType": "string",
"description": "Provide the API Key or password etc. that your API supports",
"location": "apiQuery"
}
]
]
Dettagli dei parametri di autenticazione
Nome | Tipo | Descrizione |
---|---|---|
authInputParameters | array | Matrice JSON di parametri di autenticazione, in cui ogni oggetto indica un tipo di autenticazione supportato. Usare la chiave in base al tipo di autenticazione supportato dall'estensione. |
farmBeatsAuthMapping | string | Attualmente sono supportati due tipi di chiavi correlate all'autenticazione. Per l'autenticazione basata su chiave API, usare solo x-ms-farmBeats-data-provider-key l'oggetto , mentre per l'ID APP e l'autenticazione basata su chiave APP usano entrambi x-ms-farmBeats-data-provider-id gli oggetti ex-ms-farmBeats-data-provider-key . |
name | string | Nome della chiave di autenticazione supportata da apiName . |
isRequired | boolean | Questo nome è un parametro obbligatorio per apiName? Specificare valori true o false. |
providerDataType | string | Specificare il tipo di dati del name parametro. |
description | stringa | Data Manager per l'agricoltura descrizione di ogni mezzo all'interno di farmBeatsAuthMapping ogni oggetto. |
location | string | Dove deve essere inviato il name parametro nell'API. I valori attualmente supportati sono apiQuery & apiHeader . |
Parametri di input dell'API
Questa sezione fornisce i dettagli sulla firma dell'API (parametri di input) per chiamare correttamente in apiName
.
Parametri di input dell'API di esempio
"apiInfos": [
"apiInputParameters": [
{
"name": "start",
"isRequired": "true",
"providerDataType": "double",
"description": "Start of time range. Valid start values range from zero to nine. Day zero represents the current day.",
"location": "apiQuery"
},
{
"name": "end",
"isRequired": "true",
"providerDataType": "double",
"description": "End of time range. Valid end values range from zero to nine.",
"location": "apiQuery"
},
{
"name": "location",
"isRequired": "true",
"providerDataType": "string",
"description": "User-provided latitude and longitude coordinates. Formatted as location=[(<lat_1>,<lon_1>)].",
"location": "apiQuery"
},
{
"name": "unitcode",
"isRequired": "false",
"providerDataType": "string",
"description": "Unit conversion set to be used. Default is us-std. Valid values are us-std, si-std.",
"location": "apiQuery"
},
]
]
Dettagli dei parametri di input dell'API
Nome | Tipo | Descrizione |
---|---|---|
apiInputParameters | array | Matrice JSON dei parametri di input dell'API, in cui ogni oggetto indica un parametro di input supportato da apiName . |
name | string | Nome del parametro di input supportato da apiName . |
isRequired | boolean | Questo nome è un parametro obbligatorio per apiName? Specificare valori true o false. |
providerDataType | string | Specificare il tipo di dati del name parametro. |
description | stringa | Specificare una descrizione del parametro che name significa . |
location | string | Dove deve essere inviato il name parametro nell'API. I valori attualmente supportati sono apiQuery & apiHeader . |
Parametri di input dell'API estratti
Questa sezione consente a Data Manager di estrarre i parametri di input passati nella richiesta API per il calcolo e l'archiviazione. In questo esempio Data Manager for Agriculture estrae le informazioni sulla posizione (latitudine e longitudine) dalla richiesta di input DELL'API e le archivia come parte di ogni output meteo in Data Manager for Agriculture.
Di conseguenza, l'estensione deve fornire un modello HandleBars per estrarre le informazioni sulla posizione. L'esempio seguente suggerisce che l'API di estensione raccoglie le informazioni sulla posizione come "lat"
per "latitude"
e "lon"
per "longitude"
.
Parametri di input dell'API estratti di esempio
"extractedApiInputParameters": [
{
"name": "location",
"template": "{ \"latitude\": \"{{lat}}\", \"longitude\": \"{{lon}}\" } "
}
]
Dettagli dei parametri di input dell'API estratti
Nome | Tipo | Descrizione |
---|---|---|
extractedApiInputParameters | array | Matrice JSON delle funzionalità di estrazione, in cui ogni oggetto indica quali informazioni devono essere estratte. Attualmente location è un'estrazione di questo tipo. |
name | string | Nome dell'estrazione, attualmente il valore supportato è location . |
annidato | string | Modello HandleBars che illustra come vengono raccolte informazioni sulla latitudine e la longitudine nei parametri di input dell'API. |
Parametri funzionali
Questa sezione è dedicata alle funzionalità e alle funzionalità create da Data Manager per l'agricoltura. Per l'estensione meteo, il calcolo centroide è una di queste funzionalità.
Quando gli utenti non forniscono le coordinate di latitudine/longitudine, Data Manager per l'agricoltura usa la geometria primaria del campo (ID passato dall'utente) per calcolare il centroide. Le coordinate centroidi calcolate vengono passate come latitudine e longitudine all'estensione (provider di dati). Di conseguenza, per consentire a Data Manager per l'agricoltura di comprendere l'utilizzo delle coordinate di posizione, viene usata la sezione relativa ai parametri funzionali.
Per consentire a Data Manager per l'agricoltura di comprendere l'utilizzo della latitudine e della longitudine nei apiName
parametri di input, è previsto che l'estensione fornisca la name
chiave usata per raccogliere le informazioni sulla posizione seguita da un modello di handlebar per indicare come devono essere passati i valori di latitudine e longitudine.
Parametri funzionali di esempio
"apiInfos": [
"functionalParameters": [
{
"name": "CentroidCalculation",
"description": "Provide names of the parameters used to collect latitude and longitude information",
"functionalParameterEntities": [
{
"name": "lat",
"template": "{ \"lat\": \"{{latitude}}\" } "
},
{
"name": "lon",
"template": "{ \"lon\": \"{{longitude}}\" } "
}
]
}
],
]
Dettagli dei parametri funzionali
Nome | Tipo | Descrizione |
---|---|---|
functionalParameters | array | Matrice JSON di funzionalità, in cui ogni oggetto indica una funzionalità supportata da Data Manager for Agriculture. Attualmente CentroidCalculation è una di queste funzionalità. |
name | string | Nome della funzionalità, attualmente il valore supportato è CentroidCalculation . |
description | stringa | Data Manager per l'agricoltura descrizione delle funzionalità. |
functionalParameterEntities | array | Matrice JSON di oggetti, in cui ogni oggetto è specifico per la latitudine e longitudine. |
Sistema di unità
Questa sezione viene usata da Data Manager per l'agricoltura per comprendere i vari tipi di sistemi di unità supportati dall'estensione. Di conseguenza, l'estensione deve fornire il key
nome usato per raccogliere informazioni sulle unità negli input dell'API e seguito dai vari nomi di sistema delle unità (ad esempio us-std) supportati da apiName
.
Sistema di unità di esempio
"unitSystems":
{
"key": "unitcode",
"values": [
"us-std",
"si-std",
"us-std-precise",
"si-std-precise"
]
}
Dettagli di sistema unità
Nome | Tipo | Descrizione |
---|---|---|
unitSystems | oggetto | Oggetto JSON per raccogliere le informazioni di sistema dell'unità. |
chiave | string | Nome del parametro usato per raccogliere le informazioni sulle unità nell'input dell'API. |
valori | string | Elenco dei nomi di sistema delle unità supportate dall'estensione. |
Parametri della piattaforma e personalizzati
In ogni risposta api meteo, le misure meteo, che vengono inviate come parte dell'output (ad esempio temperatura, punto di dewpoint e così via) vengono chiamate come parametri.
Di conseguenza, quando si tratta di parametri, Data Manager per l'agricoltura supporta internamente il set di parametri seguente e li considera come Platform parameters
.
- cloudCover
- dateTime
- Rugiada
- growingDegreeDay
- Precipitazioni
- pressione
- relative Bindingdity
- soilMoisture
- soilTemperature
- temperatura
- visibility
- wetBulbTemperature
- Windchill
- windDirection
- windGust
- windSpeed
Pertanto, qualsiasi estensione che invia parametri meteo, che non rientrano nei parametri della piattaforma, li invia come parte di Custom parameters
. La differenza principale tra i parametri della piattaforma e dei clienti è che gli utenti che usano le API meteo di Data Manager per l'agricoltura sono in grado di eseguire query e filtrare i parametri della piattaforma (ad esempio: temperatura > 30) e non sui parametri personalizzati. Tuttavia, i parametri personalizzati vengono inviati come parte dell'output della query meteo.
In questa sezione l'estensione fornisce le informazioni sulle unità per ogni parametro per ogni sistema di unità supportato. L'uso di questo data manager per l'agricoltura sa qual è l'unità di misura sottostante per ogni parametro meteo in base alle informazioni fornite in questa sezione dell'estensione.
Nota
- Per un particolare parametro se le unità non sono applicabili, non menzionare le unità per quelle da sole (ad esempio weatherDescriptor)
- Per un particolare parametro se le unità sono uguali per tutte le unità di sistema, quindi menzionare lo stesso in tutte le unità di sistema. (Ad esempio: cloudCover)
Parametri personalizzati e piattaforma di esempio
"apiInfos": [
"platformParameters": [
{
"farmBeatsName": "cloudCover",
"farmBeatsDataType": "double",
"description": "The average percentage of sky covered by clouds.",
"measurementUnits": [
{
"unitSystem": "us-std",
"unit": "%"
},
{
"unitSystem": "us-std-precise",
"unit": "%"
},
{
"unitSystem": "si-std",
"unit": "%"
},
{
"unitSystem": "si-std-precise",
"unit": "%"
}
]
},
{
"farmBeatsName": "dewPoint",
"farmBeatsDataType": "double",
"description": "The air temperature at which the air will become saturated, and dew moisture will condense into fog (or dew).",
"measurementUnits": [
{
"unitSystem": "us-std",
"unit": "F"
},
{
"unitSystem": "us-std-precise",
"unit": "F"
},
{
"unitSystem": "si-std",
"unit": "C"
},
{
"unitSystem": "si-std-precise",
"unit": "C"
}
]
},
"customParameters": [
{
"providerName": "weatherDescriptor",
"providerDataType": "string",
"description": "General weather descriptor data"
},
{
"providerName": "airTempMax",
"providerDataType": "double",
"description": "Maximum daily air temperature at two meters above ground level.",
"measurementUnits": [
{
"unitSystem": "us-std",
"unit": "F"
},
{
"unitSystem": "us-std-precise",
"unit": "F"
},
{
"unitSystem": "si-std",
"unit": "C"
},
{
"unitSystem": "si-std-precise",
"unit": "C"
}
]
},
]
Dettagli dei parametri della piattaforma
Nome | Tipo | Descrizione |
---|---|---|
platformParameters | array | Matrice JSON di parametri della piattaforma in cui ogni oggetto è un parametro della piattaforma. |
farmBeatsName | string | Nome del parametro fornito da Data Manager per l'agricoltura. |
farmBeatsDataType | string | Tipo di dati del parametro fornito da Data Manager per l'agricoltura. |
description | stringa | Descrizione del parametro fornito da Data Manager per l'agricoltura. |
measurementUnits | string | Matrice JSON di unità per ogni sistema values di unità supportato dall'estensione. |
unitSystem | string | value Sistema di unità supportato dall'estensione. |
unitàà | string | Unità di misura per il parametro meteo specifico, ad esempio per F dewPoint. |
Dettagli dei parametri personalizzati
Nome | Tipo | Descrizione |
---|---|---|
customParameters | oggetto | Matrice JSON di parametri personalizzati in cui ogni oggetto è un parametro personalizzato. |
Providername | string | Nome del parametro fornito dall'estensione. |
providerDataType | string | Tipo di dati del parametro fornito dall'estensione. |
description | stringa | Descrizione del parametro fornito dall'estensione. |
measurementUnits | string | Matrice JSON di unità per ogni sistema values di unità supportato dall'estensione. |
unitSystem | string | value Sistema di unità supportato dall'estensione. |
unitàà | string | Unità di misura per il parametro meteo specifico Ex: F per airTempMax. |
Piattaforma e modello personalizzato
Il modello è le informazioni di mapping fornite dall'estensione per convertire l'output dell'API di estensione (risposta JSON) nel formato previsto da Data Manager for Agriculture. L'uso di questi diversi formati di output API può ora essere mappato/convertito in modo uniforme in un unico formato.
La soluzione modello è stata trovata come uno dei modi più efficaci per analizzare l'output JSON fornito dall'estensione. Nel caso dell'estensione meteo, Data Manager for Agriculture prevede che l'estensione venga scritta usando il modello HandleBars. HandleBars è un linguaggio di creazione modelli open source con espressioni semplici da usare.
Nota
È consigliabile provare il modello HandleBars con gli esempi forniti e imparare a usare le funzioni helper per creare una logica di analisi personalizzata se non è già fornita da Data Manager per l'agricoltura.
In generale, questo è il funzionamento dei modelli, prendendo la risposta API come input e generando l'output nel formato previsto da Data Manager per l'agricoltura.
Come illustrato nella figura precedente, convalidare il modello rispetto alla risposta API corrispondente e usare il modello convalidato nell'estensione. Di seguito è riportato un esempio di risposta API e della rispettiva piattaforma e modello personalizzato.
Risposta dell'API di esempio
{
"47,-97": {
"2016-12-15": {
"overall": {
"air_temp_avg": {
"unit": "F",
"value": -3.0
},
"air_temp_max": {
"unit": "F",
"value": 5.0
},
"air_temp_min": {
"unit": "F",
"value": -11.0
},
"cloud_cover_avg": {
"unit": "%",
"value": 26.4
},
"descriptors": {
"cloud_cover_descriptor": {
"code": 21107,
"icon": "https://.../cover_partlycloudyday.png",
"text": "Increasing Clouds"
},
"precipitation_descriptor": {
"code": 61113,
"icon": "https://.../precip_flurries.png",
"text": "Slight Chance of Flurries"
},
"weather_descriptor": {
"code": 61113,
"icon": "https://.../precip_flurries.png",
"text": "Slight Chance of Flurries"
},
"wind_direction_descriptor": {
"code": 51600,
"icon": "https://.../direction_sw.png",
"text": "Southwest"
},
"wind_trend_descriptor": {
"code": 10500,
"icon": "https://.../error_none.png",
"text": "None"
}
},
"dew_point_avg": {
"unit": "F",
"value": -11.0
},
"dew_point_max": {
"unit": "F",
"value": -4.0
},
"dew_point_min": {
"unit": "F",
"value": -19.0
},
"ice_acc_period": {
"unit": "in",
"value": 0.0
},
"liquid_acc_period": {
"unit": "in",
"value": 0.0
},
"long_wave_radiation_avg": {
"unit": "W/m^2",
"value": 170.0
},
"pet_period": {
"unit": "in",
"value": 0.009
},
"precip_acc_period": {
"unit": "in",
"value": 0.001
},
"precip_prob": {
"unit": "%",
"value": 10.0
},
"relative_humidity_avg": {
"unit": "%",
"value": 68.0
},
"relative_humidity_max": {
"unit": "%",
"value": 77.0
},
"relative_humidity_min": {
"unit": "%",
"value": 61.0
},
"short_wave_radiation_avg": {
"unit": "W/m^2",
"value": 70.0
},
"snow_acc_period": {
"unit": "in",
"value": 0.02
},
"sunshine_duration": {
"unit": "hours",
"value": 6
},
"wind_gust_max": {
"unit": "n/a",
"value": "n/a"
},
"wind_speed_2m_avg": {
"unit": "mph",
"value": 6.0
},
"wind_speed_2m_max": {
"unit": "mph",
"value": 8.0
},
"wind_speed_2m_min": {
"unit": "mph",
"value": 2.0
},
"wind_speed_avg": {
"unit": "mph",
"value": 8.0
},
"wind_speed_max": {
"unit": "mph",
"value": 11.0
},
"wind_speed_min": {
"unit": "mph",
"value": 3.0
}
}
}
}
}
Modello di piattaforma e personalizzato di esempio per la risposta API precedente
{
"apiInfos": {
"platformTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"cloudCover\": \"{{overall.cloud_cover_avg.value}}\" ,\"dewPoint\": \"{{overall.dew_point_avg.value}}\" ,\"precipitation\": \"{{overall.precip_acc_period.value}}\" ,\"relativeHumidity\": \"{{overall.relative_humidity_avg.value}}\" ,\"dateTime\": \"{{convertDateInYYYYMMDDToDateTime @key}}\", \"temperature\": \"{{overall.air_temp_avg.value}}\" ,\"windSpeed\": \"{{overall.wind_speed_avg.value}}\" , },{{/each}}]{{/each}} }",
"customTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"air_temp_max\": \"{{overall.air_temp_max.value}}\",\"air_temp_min\": \"{{overall.air_temp_min.value}}\",\"cloudCoverDescriptor\": \"{{overall.descriptors.cloud_cover_descriptor.text}}\",\"precipitationDescriptor\": \"{{overall.descriptors.precipitation_descriptor.text}}\",\"weatherDescriptor\": \"{{overall.descriptors.weather_descriptor.text}}\",\"windDirectionDescriptor\": \"{{overall.descriptors.wind_direction_descriptor.text}}\",\"windTrendDescriptor\": \"{{overall.descriptors.wind_trend_descriptor.text}}\",\"dewPointMax\": \"{{overall.dew_point_max.value}}\",\"dewPointMin\": \"{{overall.dew_point_min.value}}\",\"iceAccPeriod\": \"{{overall.ice_acc_period.value}}\",\"liquidAccPeriod\": \"{{overall.liquid_acc_period.value}}\",\"longWaveRadiationAvg\": \"{{overall.long_wave_radiation_avg.value}}\",\"petPeriod\": \"{{overall.pet_period.value}}\",\"precipProb\": \"{{overall.precip_prob.value}}\",\"relativeHumidityMax\": \"{{overall.relative_humidity_max.value}}\",\"relativeHumidityMin\": \"{{overall.relative_humidity_min.value}}\",\"shortWaveRadiationAvg\": \"{{overall.short_wave_radiation_avg.value}}\",\"snowAccPeriod\": \"{{overall.snow_acc_period.value}}\",\"sunshineDuration\": \"{{overall.sunshine_duration.value}}\",\"windSpeed2mAvg\": \"{{overall.wind_speed_2m_avg.value}}\",\"windSpeed2mMax\": \"{{overall.wind_speed_2m_max.value}}\",\"windSpeed2mMin\": \"{{overall.wind_speed_2m_min.value}}\",\"windSpeedMax\": \"{{overall.wind_speed_max.value}}\",\"windSpeedMin\": \"{{overall.wind_speed_min.value}}\",},{{/each}}]{{/each}} }"
}
}
Nota
Il modello generato da HandleBars viene stringato aggiungendo \"<text>\"
per renderlo compatibile con il formato JSON.
Funzioni di supporto
Le funzioni helper vengono usate dai modelli per eseguire trasformazioni specifiche sui dati, che non sono supportate in modo nativo. Ecco le funzioni helper supportate da Data Manager per l'agricoltura.
Funzioni helper di esempio
Handlebars.registerHelper('splitAndTake', function(title, char, index) {
var t = title.split(char);
return t[index];
});
Handlebars.registerHelper('converttime', function(timestamp) {
return new Date(timestamp);
});
Handlebars.registerHelper('convertunixtime', function(unix_timestamp) {
return new Date(unix_timestamp * 1000);
});
Che azione vengono eseguite da queste funzioni helper?
- SplitAndTake(object valueObject, separatore di stringa, indice int): questa funzione viene usata per suddividere una stringa (ad esempio"47,-97") in base a un separatore (ad esempio: ",") e accetta l'elemento in corrispondenza dell'indice specificato (ad esempio, index=0 restituisce "47")
- ConvertDateInFormatToDateTime(object dateObject, formato stringa): questa funzione viene usata per analizzare una data in un determinato formato (ad esempio: 2016-12-15) in una stringa DateTime.
- ConvertUnixTimeToDateTime(object unixTimeStamp): questa funzione viene usata per convertire il timestamp unix (ad esempio, 1392267600) in una stringa datetime.
- GetObjectFromListWithKeyValuePair(Array listOfObjects, stringa chiave, valore stringa): dato un elenco di oggetti recupera l'oggetto in base alla coppia chiave () valore (
type
RAIN
). Nell'esempio seguente viene usata la precipitazione di"type": "RAIN"
questa funzione.
{
"precipitation": [
{
"type": "SNOW",
"amount": 0
},
{
"type": "RAIN",
"amount": 0.01
}
]
}
- GetValueFromObject(string jsonString, stringa key): dato un oggetto json come stringa, ottiene il valore in base alla chiave.
Nota
Se l'estensione scritta richiede funzioni helper aggiuntive per analizzare la risposta dell'API, contattare Microsoft creando un ticket di supporto.