Call API -ominaisuus mahdollistaa kyselykentän tekemän HTTP-pyynnön ulkoiseen palveluun ja vastauksen käyttämisen lasketun arvon täyttämiseen tai käyttäjäsyötteen validoimiseen. Tämä mahdollistaa reaaliaikaiset hakutoiminnot, henkilöllisyyden varmennus, viivakoodihaut ja muut palvelinpuolen tarkistukset tiedonkeruun aikana.

Saatavilla on kaksi funktiota:

  • callapi() — hakee arvon API:sta ja tallentaa sen calculate- tai text-kenttään
  • callapi-verify() — kutsuu API:a ja estää etenemisen, jos vastaus ei vastaa odotettua arvoa (käytetään constraint-kohdassa)

callapi() — Hae ja tallenna API-vastaus

Syntaksi

Sijoita callapi() calculate- tai text-kentän calculation-sarakkeeseen:

  callapi(method, url, allowed_auto, max_retry, no_overwrite, extract_expr, timeout, lifetime, response_q, call_type, post_body)
  

Parametrit

#ParametriKuvaus
1methodHTTP-metodi: 'GET' tai 'POST'
2urlAPI-päätepisteen URL
3allowed_auto1 kutsuaksesi automaattisesti kun kenttä saavutetaan; 0 vaatimaan manuaalinen käynnistinpainike
4max_retryUudelleenyrityskertojen enimmäismäärä virheen sattuessa
5no_overwrite1 säilyttääksesi olemassa olevan arvon jos kentällä on jo arvo; 0 ylikirjoittaaksesi aina
6extract_exprJSONPath-lauseke halutun arvon poimimiseen vastauksesta (esim. $.data.name)
7timeoutPyyntöaikakatkaisu millisekunteina
8lifetimeKuinka kauan (ms) välimuistissa oleva vastaus pysyy voimassa ennen uudelleenhakua
9response_qHTTP-vastauksen raakakoodi tallentavan kentän nimi (esim. ${response_status})
10call_type(Valinnainen) Erityinen kutsutila: 'lazy-upload' tai 'lazy-upload-multiple'
11post_body(Valinnainen) POST-runkomerkkijono. Viittaa lomakekenttiin käyttämällä ##fieldname##

Esimerkki: GET-pyyntö kotitalouden hakemiseksi tunnuksella

typenamelabelappearancecalculation
texthousehold_idKotitaloustunnus
calculatehh_namecallapicallapi('GET', concat('https://api.example.com/households/', ${household_id}), 1, 3, 0, '$.name', 10000, 0, '')
notehh_displayKotitalous: ${hh_name}

Esimerkki: POST-pyyntö JSON-rungolla

  callapi('POST', 'https://api.example.com/lookup', 1, 2, 0, '$.result.value', 15000, 0, '', '', '{"id": "##household_id##"}')
  

post_body-kohdassa käytä ##fieldname## syöttääksesi minkä tahansa lomakekentän nykyisen arvon.

Ulkoasu: callapi

Lisää callapi kentän appearance-sarakkeeseen mahdollistaaksesi API-kutsuintegraation:

typenamelabelappearancecalculation
calculateapi_resultcallapicallapi('GET', ...)

Kun allowed_auto on 0, rtSurvey näyttää “Hae”-painikkeen, jonka luetteloija napauttaa manuaalisesti.


callapi-verify() — Validoi arvo API:ta vasten

callapi-verify() estää kentän lähettämisen, kunnes API vahvistaa syötetyn arvon olevan kelvollinen. Käytä sitä constraint-sarakkeessa.

Syntaksi

  callapi-verify(method, url, extract_expr, match_expr, timeout, constraint_mode, post_body, message)
  

Parametrit

#ParametriKuvaus
1methodHTTP-metodi: 'GET' tai 'POST'
2urlVarmistus-API-päätepiste
3extract_exprJSONPath vastauksesta odotettavan arvon poimimiseen
4match_exprLauseke, joka vertaa poimittu arvoa kenttäarvoon (esim. $.status = 'valid')
5timeoutPyyntöaikakatkaisu millisekunteina
6constraint_mode'soft' vain varoitukselle; 'hard' estämään eteneminen
7post_body(Valinnainen) POST-runko ##fieldname##-korvauksilla
8message(Valinnainen) Virheilmoitus. Tukee monilingvistisyyttä: <en>Invalid!</en><vi>Không hợp lệ!</vi>

Esimerkki: Viivakoodin varmennus käyttöomaisuusrekisteriä vasten

typenamelabelappearanceconstraintconstraint_message
barcodeasset_codeSkannaa käyttöomaisuuden viivakoodicallapi-verifycallapi-verify('POST', 'https://api.example.com/assets/verify', '$.valid', ". = 'true'", 10000, 'hard', '{"code": "##asset_code##"}')Käyttöomaisuutta ei löydy rekisteristä

Ulkoasu: callapi-verify(...)

Kentän appearance-sarakkeen, jossa constraint-kohdassa on callapi-verify(), tulisi sisältää callapi-verify(params) tai callapi-verify(dynamicParams) signaloidakseen rtSurveylle, että tämä kenttä käyttää API-varmennusta.


App API -datan käyttö callapi:n ohella

Yhdistä callapi() ja pulldata('app-api', 'user.token') syöttääksesi todennetun käyttäjän tokenin API-pyyntöön:

  callapi('POST', 'https://api.example.com/data', 1, 2, 0, '$.value', 10000, 0, '', '',
  concat('{"token":"', pulldata('app-api','user.token'), '","id":"##item_id##"}'))
  

Parhaat käytännöt

  1. Aseta aina kohtuullinen timeout (5000–15000 ms) — älä käytä 0:aa tai erittäin suuria arvoja.
  2. Aseta allowed_auto=0 varmenuksille, jotka luetteloijan tulee käynnistää tietoisesti (esim. henkilöllisyystarkistukset).
  3. Aseta no_overwrite=1, kun kenttää saatetaan muokata myöhemmin eikä halua uudelleenhaun ylikirjoittavan manuaalisia korjauksia.
  4. Käytä extract_expr-kohdassa tarkka JSONPath-lauseke eikä raaka vastausteksti.
  5. Testaa API-kutsut offline-tilassa — callapi epäonnistuu kauniisti ja näyttää virheen, mutta lomakkeen tulee silti olla täytettävissä ei-kriittisille kentille.

Rajoitukset

  • Vaatii verkkoyhteyden kutsun aikaan — kutsut epäonnistuvat, kun laite on offline-tilassa.
  • API-vastausten on oltava JSON-muotoisia — XML- tai pelkkätekstivastaukset vaativat lisäparsimista.
  • Suuri kutsujen tiheys (esim. yksi API-kutsu per toistotapaus) voi hidastaa lomakenavigoinnin.
Oliko tämä sivu hyödyllinen?