मैसेज के टेंप्लेट

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

इस विषय में, एपीआई प्रॉक्सी में मैसेज टेंप्लेट इस्तेमाल करने के तरीके के बारे में बताया गया है. साथ ही, एक फ़ंक्शन दिया गया है संदर्भ.

मैसेज टेंप्लेट क्या है?

मैसेज टेंप्लेट की मदद से, कुछ नीति और TargetEndpoint एलिमेंट में वैरिएबल स्ट्रिंग में बदलाव किया जा सकता है. जहां यह सुविधा काम करती है, वहां प्रॉक्सी के चालू होने पर, स्ट्रिंग को डाइनैमिक तौर पर भरने की सुविधा मिलती है.

मैसेज टेंप्लेट में, फ़्लो वैरिएबल के रेफ़रंस और लिटरल टेक्स्ट का कोई भी कॉम्बिनेशन शामिल किया जा सकता है. फ़्लो वैरिएबल के नाम कर्ली ब्रैकेट में होने चाहिए, जबकि कर्ली ब्रैकेट में नहीं होने वाला टेक्स्ट, आउटपुट में लिटरल टेक्स्ट के रूप में होता है.

मैसेज के टेंप्लेट का इस्तेमाल कहां किया जा सकता है?

उदाहरण

उदाहरण के लिए, 'मैसेज असाइन करें' नीति की मदद से, <Payload> एलिमेंट में मैसेज टेंप्लेट का इस्तेमाल किया जा सकता है:

<AssignMessage name="set-dynamic-content">
  <AssignTo createNew="false" type="response"></AssignTo>
  <Set>
    <Payload contentType="application/json">
      {"name":"Alert", "message":"You entered an invalid username: {user.name}"}
    </Payload>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</AssignMessage>

ऊपर दिए गए उदाहरण में, फ़्लो वैरिएबल user.name (कर्ली ब्रैकेट में) की वैल्यू का मूल्यांकन करके रनटाइम के दौरान पेलोड स्ट्रिंग में बदल दिया जाता है. उदाहरण के लिए, अगर user.name=jdoe, तो पेलोड में मैसेज का आउटपुट यह होगा: You entered an invalid username: jdoe. अगर वैरिएबल की समस्या को हल नहीं किया जा सकता, तो इसका मतलब है कि एक खाली स्ट्रिंग होगी.

उदाहरण

जब कोटा पार हो जाए, तो कॉलर को अर्थपूर्ण संदेश वापस करना एक अच्छा तरीका है. यह पैटर्न को आमतौर पर "गलत नियम" के साथ उपयोग किया जाता है कॉलर की जानकारी देने के लिए आउटपुट देने के लिए कोटा उल्लंघन के बारे में जानकारी. नीचे दी गई 'मैसेज असाइन करें' नीति में, मैसेज टेंप्लेट का इस्तेमाल किया गया है कई एक्सएमएल एलिमेंट में कोटा की जानकारी को डाइनैमिक तरीके से भरने के लिए:

<AssignMessage name='AM-QuotaViolationMessage'>
  <Description>message for quota exceeded</Description>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Set>
    <Headers>
      <Header name='X-Quota-Reset'>{ratelimit.Quota-1.expiry.time}</Header>
      <Header name='X-Quota-Allowed'>{ratelimit.Quota-1.allowed.count}</Header>
      <Header name='X-Quota-Available'>{ratelimit.Quota-1.available.count}</Header>
    </Headers>
    <Payload contentType='application/json'>{
  "error" : {
    "message" : "you have exceeded your quota",
    "clientId" : "{request.queryparam.apikey}"
  }
}
    </Payload>
    <StatusCode>429</StatusCode>
    <ReasonPhrase>Quota Exceeded</ReasonPhrase>
  </Set>
</AssignMessage>

Tasks में मौजूद मैसेज की नीति में, <Set> में ये एलिमेंट शामिल हैं एलिमेंट सपोर्ट मैसेज का टेंप्लेट:

  • हेडर
  • QueryParam
  • FormParam
  • PayLoad
  • वर्शन
  • क्रिया
  • पाथ
  • StatusCode
  • ReasonPhrase

ध्यान रखें कि मैसेज टेंप्लेट में फ़्लो वैरिएबल, कर्ली ब्रैकेट में होने चाहिए.

इस नीति के लागू होने पर:

  • हेडर एलिमेंट को, बताए गए फ़्लो वैरिएबल की वैल्यू मिलती हैं.
  • पेलोड में लिटरल टेक्स्ट और वैरिएबल का मिला-जुला रूप शामिल होता है. client_id डाइनैमिक रूप से अपने-आप भर जाता है.
  • StatusCode और Reasonदावे का इस्तेमाल सिर्फ़ शब्दों वाला टेक्स्ट होता है; हालांकि, अगर आपको इसका इस्तेमाल करना है, तो ये एलिमेंट मैसेज के टेंप्लेट में भी काम करते हैं.

उदाहरण

प्रॉक्सी टारगेट-एंडपॉइंट की परिभाषा में, <SSLInfo> के चाइल्ड एलिमेंट, मैसेज के टेंप्लेट के साथ काम करते हैं. नीतियों में इस्तेमाल किए गए पैटर्न का पालन करने के लिए, कर्ली ब्रैकेट में फ़्लो वैरिएबल तब बदल दिए जाते हैं, जब प्रॉक्सी लागू होती है.

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
        <Enabled>{myvars.ssl.enabled}</Enabled>
        <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled>
        <KeyStore>{myvars.ssl.keystore}</KeyStore>
        <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias>
        <TrustStore>{myvars.ssl.trustStore}</TrustStore>
    </SSLInfo>

  </HTTPTargetConnection>
  …
</TargetEndpoint>

मैसेज टेंप्लेट का इस्तेमाल कहां किया जा सकता है?

मैसेज टेंप्लेट कई नीतियों के साथ-साथ, TargetEndpoint कॉन्फ़िगरेशन में इस्तेमाल किए जाने वाले कुछ एलिमेंट में काम करते हैं.

मैसेज के टेंप्लेट स्वीकार करने वाली नीतियां

नीति मैसेज टेंप्लेट के साथ काम करने वाले एलिमेंट और चाइल्ड एलिमेंट
AccessControl की नीति <SourceAddress>, mask विशेषता और आईपी पता.
assignMessage की नीति <Set> चाइल्ड एलिमेंट: पेलोड, ContentType, Verb, Version, पाथ, StatusCode, Reasonफ़्रेज़, हेडर, क्वेरीParams, FormParams

<Add> चाइल्ड एलिमेंट: हेडर, क्वेरी पैरामीटर, FormParams

<AssignVariable> चाइल्ड एलिमेंट: <Template>

एक्सटेंशन कॉल आउट नीति <Input>
ExtractVariables की नीति <JsonPath> अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
GenerateJWS की नीति
VerifyJWS की नीति
<Payload> (सिर्फ़ GenerateJWS नीति)

<AdditionalHeaders><Claim>

* type=map होने पर ही ये एलिमेंट, मैसेज टेंप्लेट के साथ काम करते हैं.

GenerateJWT की नीति
VerifyJWT की नीति
<AdditionalClaims><Claim>

<AdditionalHeaders><Claim>

* type=map होने पर ही ये एलिमेंट, मैसेज टेंप्लेट के साथ काम करते हैं.

LDAP नीति <SearchQuery>
MessageLogging की नीति <Syslog><Message>

<File><Message>

OAS की पुष्टि से जुड़ी नीति <OASResource> एलिमेंट
RaiseFault से जुड़ी नीति <Set> एलिमेंट: पेलोड, ContentType, Verb, वर्शन, पाथ, StatusCode, काफ़ी वजह, हेडर, क्वेरी पैरामीटर, FormParams

<Add> एलिमेंट: हेडर, क्वेरी पैरामीटर, FormParams

SAMLAssertion की नीति <Template>

* सिर्फ़ तब, जब नीति पर हस्ताक्षर <GenerateSAMLAssertion> हो

सर्विसकॉलआउट की नीति <Set> एलिमेंट: पेलोड, ContentType, Verb, वर्शन, पाथ, StatusCode, Reasonवाक्यांश, /Headers, क्वेरीParams, FormParams

<Add> एलिमेंट: हेडर, क्वेरी पैरामीटर, FormParams

<HTTPTargetConnection>/<URL>: ध्यान दें कि स्ट्रिंग का पहला हिस्सा एचटीटीपी या एचटीटीपीएस होना चाहिए.

मैसेज टेंप्लेट स्वीकार करने वाले TargetEndpoint एलिमेंट

HTTPTargetConnection एलिमेंट चाइल्ड एलिमेंट, जो मैसेज टेंप्लेट के साथ काम करते हैं
SSLInfo चालू, KeyAlias, KeyStore, TrustStore, ClientAuthEnabled, CLRStore
LocalTargetConnection Apiप्रॉक्सी, ProxyEndpoint
पाथ लागू नहीं

मैसेज टेंप्लेट सिंटैक्स

इस सेक्शन में उन नियमों के बारे में बताया गया है जिनका पालन करके मैसेज टेंप्लेट का इस्तेमाल किया जा सकता है.

चरों (वैरिएबल) को बताने के लिए कर्ली ब्रैकेट का इस्तेमाल करना

वैरिएबल के नामों को कर्ली ब्रैकेट { } में बंद करें. अगर वैरिएबल मौजूद नहीं है, तो आउटपुट में खाली स्ट्रिंग दिखती है; हालांकि, आपके पास मैसेज में डिफ़ॉल्ट वैल्यू सेट करने का विकल्प है टेंप्लेट (वे वैल्यू जिन्हें वैरिएबल से हल नहीं किया गया हो). यहां जाएं: मैसेज टेंप्लेट में डिफ़ॉल्ट वैल्यू सेट करना.

ध्यान दें कि पूरी मैसेज टेंप्लेट स्ट्रिंग को कोटेशन में रखने की अनुमति है, लेकिन यह ज़रूरी नहीं है. उदाहरण के लिए, नीचे दिए गए दो मैसेज टेंप्लेट एक जैसे हैं:

<Set>
    <Headers>
        <Header name="x-h1">"Hello {user.name}"</Header>
        <Header name="x-h1">Hello {user.name}</Header>
    </Headers>
</Set>

मैसेज टेंप्लेट में डिफ़ॉल्ट वैल्यू सेट करना

अगर टेंप्लेट वाले वैरिएबल को ठीक नहीं किया जा सकता, तो Edge खाली स्ट्रिंग से बदल देता है. हालांकि, आप एक डिफ़ॉल्ट वैल्यू इस तरह से तय कर सकते हैं:

<Header name="x-h1">Test message. id = {request.header.id:Unknown}</Header>

ऊपर दिए गए नमूने में, अगर वैरिएबल request.header.id को हल नहीं किया जा सकता, तो इसका मान को Unknown से बदल दिया गया है. उदाहरण के लिए:

Test message. id = Unknown

फ़ंक्शन एक्सप्रेशन में स्पेस की अनुमति नहीं है

मैसेज टेंप्लेट के फ़ंक्शन एक्सप्रेशन में कहीं भी स्पेस की अनुमति नहीं है. उदाहरण के लिए:

अनुमति है

{substring(alpha,0,4)}
{createUuid()}
{randomLong(10)}

अनुमति नहीं है:

{substring( alpha, 0, 4 )}
{ createUuid( ) }
{randomLong( 10 )}

JSON पेलोड के लिए लेगसी सिंटैक्स

Edge के वर्शन में, Cloud के 16.08.17 वर्शन रिलीज़ होने से पहले, ऐसा नहीं किया जा सकता JSON पेलोड में वैरिएबल के रेफ़रंस को दिखाने के लिए, कर्ली ब्रैकेट का इस्तेमाल किया जा सकता है. उन पुराने वर्शन में, यह बताने के लिए कि variablePrefix और variableSuffix एट्रिब्यूट का इस्तेमाल करना ज़रूरी है डेलिमिटर वर्ण और उनका इस्तेमाल वैरिएबल के नामों को रैप करने के लिए करें, जैसे:

<Set>
  <Payload contentType="application/json" variablePrefix="@" variableSuffix="#">
    {"name":"foo", "type":"@variable_name#"}
  </Payload>
</Set>

हालांकि, Apigee का सुझाव है कि आप नया कर्ली-ब्रेस सिंटैक्स इस्तेमाल करें, लेकिन पुराना सिंटैक्स अब भी काम करता है.

मैसेज टेंप्लेट के फ़ंक्शन का इस्तेमाल करना

Edge में ऐसे फ़ंक्शन का सेट उपलब्ध होता है जिनका इस्तेमाल मैसेज टेंप्लेट में किया जा सकता है. इन फ़ंक्शन का इस्तेमाल इन फ़ंक्शन में एस्केप, एन्कोड, हैश, और फ़ॉर्मैट स्ट्रिंग वैरिएबल.

मैसेज टेंप्लेट के फ़ंक्शन के बारे में मैसेज टेंप्लेट में बताया गया है फ़ंक्शन रेफ़रंस.

उदाहरण: tolowerCase()

स्ट्रिंग वैरिएबल को इसमें बदलने के लिए बिल्ट-इन toLowerCase() फ़ंक्शन का इस्तेमाल करें लोअरकेस:

<AssignMessage name="AM-Set-Custom-Response">
    <AssignTo createNew="false" type="response"/>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Set>
        <Headers>
            <Header name="x-h1">Test header: {toLowerCase(foo.bar:FOO)}</Header>
        </Headers>
    </Set>
</AssignMessage>

अगर foo.bar फ़्लो वैरिएबल का समाधान हो जाता है, तो इसके वर्ण लोअरकेस में बदल जाएंगे. अगर foo.bar हल नहीं की जाती है, तो डिफ़ॉल्ट वैल्यू FOO को बदल दिया जाता है और अंग्रेज़ी के छोटे अक्षरों में बदल दिया जाए. उदाहरण के लिए:

Test header: foo

उदाहरण: escapeJSON()

यहां इस्तेमाल का एक दिलचस्प उदाहरण दिया गया है: मान लें कि आपका बैकएंड ऐप्लिकेशन, मान्य एस्केप कैरेक्टर वाले JSON रिस्पॉन्स देता है. उदाहरण के लिए:

{
      "code": "INVALID",
      "user_message": "Invalid value for \"logonId\" check your input."
}

इसके बाद, मान लें कि आपको क्लाइंट कॉलर को यह मैसेज, कस्टम पेलोड में लौटाना है. ऐसा करने का सामान्य तरीका यह है कि टारगेट रिस्पॉन्स पेलोड से मैसेज को एक्सट्रैक्ट किया जाए और इसे कस्टम प्रॉक्सी रिस्पॉन्स में जोड़ने के लिए, मैसेज असाइन करें का इस्तेमाल किया जाए. इसका मतलब है कि इसे क्लाइंट को वापस भेजें.

यहां वैरिएबल एक्सट्रैक्ट करने की नीति दी गई है, जो user_message की जानकारी को standard.systemMessage नाम वाले वैरिएबल में एक्सट्रैक्ट करती है:

<ExtractVariables name="EV-BackendErrorResponse">
    <DisplayName>EV-BackendErrorResponse</DisplayName>
    <JSONPayload>
        <Variable name="standard.systemMessage">
            <JSONPath>$.user_message</JSONPath>
        </Variable>
    </JSONPayload>
</ExtractVariables>

अब, मैसेज असाइन करने से जुड़ी पूरी तरह से मान्य नीति के बारे में जानें. यह एक्सट्रैक्ट किए गए वैरिएबल को रिस्पॉन्स पेलोड (प्रॉक्सी रिस्पॉन्स) में जोड़ देती है:

<AssignMessage name="AM-SetStandardFaultResponse">
    <DisplayName>AM-SetStandardFaultResponse</DisplayName>
    <Set>
        <Payload contentType="application/json">
           {
              "systemMessage": "{standard.systemMessage}"
           }
        </Payload>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>


अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है माफ़ करें, इसमें कुछ समस्या है. वैरिएबल एक्सट्रैक्ट करने की नीति ने मैसेज के कुछ हिस्सों के आस-पास से एस्केप किए गए कोटेशन वर्ण हटा दिए. इसका मतलब है कि क्लाइंट को मिला रिस्पॉन्स अमान्य JSON है. साफ़ तौर पर यह आपका इरादा नहीं था!

{
    "systemMessage": "Invalid value for "logonId" check your input."
}

इस समस्या को हल करने के लिए, 'मैसेज असाइन करें' नीति में बदलाव किया जा सकता है. इससे मैसेज टेंप्लेट फ़ंक्शन का इस्तेमाल किया जा सकता है, जो आपके लिए JSON में कोट से बचा हुआ रहता है. यह फ़ंक्शन, escapeJSON(), JSON एक्सप्रेशन में होने वाले किसी भी कोट या दूसरे विशेष वर्णों को हटा देता है:

<AssignMessage name="AM-SetStandardFaultResponse">
    <DisplayName>AM-SetStandardFaultResponse</DisplayName>
    <Set>
        <Payload contentType="application/json">
           {
              "systemMessage": "{escapeJSON(standard.systemMessage)}"
           }
        </Payload>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>


अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है फ़ंक्शन, एम्बेड किए गए कोट्स को हटा देता है, जिससे मान्य JSON मिलता है, जो आपको चाहिए:

{
      "systemMessage": "Invalid value for \"logonId\" check your input.",
}

एक मैसेज टेंप्लेट एक डाइनैमिक स्ट्रिंग सब्सिटिट्यूशन सुविधा है जिसे कुछ नीतियों में इस्तेमाल किया जा सकता है और TargetEndpoint की परिभाषाओं में. मैसेज टेंप्लेट के फ़ंक्शन की मदद से, काम के कार्रवाइयां की जा सकती हैं जैसे कि हैशिंग, स्ट्रिंग में बदलाव, कैरेक्टर एस्केपिंग वगैरह.

उदाहरण के लिए, नीचे दी गई PendingMessage नीति में toLowerCase() फ़ंक्शन का इस्तेमाल मैसेज टेंप्लेट:

<AssignMessage name="AM-Set-Custom-Response">
    <AssignTo createNew="false" type="response"/>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Set>
       <Headers>
         <Header name="x-h1">Test header: {Hello, toLowerCase(user.name)}</Header>
       </Headers>
    </Set>
</AssignMessage>

इस विषय में मैसेज टेंप्लेट के फ़ंक्शन, उनके आर्ग्युमेंट, और आउटपुट के बारे में बताया गया है. यह विषय अपनाता है आपको मैसेज के बारे में जानकारी है टेंप्लेट और कॉन्टेक्स्ट में उनका इस्तेमाल किया जा सकता है.

हैश फ़ंक्शन

एक हैश वैल्यू कैलकुलेट करें और उस हैश को स्ट्रिंग के तौर पर दिखाएं.

हेक्साडेसिमल हैश फ़ंक्शन

एक हैश वैल्यू तय करें और उस हैश को हेक्साडेसिमल नंबर के रूप में दिखाएं.

सिंटैक्स

फ़ंक्शन जानकारी
md5Hex(string) यह MD5 हैश को हेक्साडेसिमल नंबर के तौर पर कैलकुलेट करता है.
sha1Hex(string) हेक्साडेसिमल नंबर के तौर पर दिखाए गए SHA1 हैश को कैलकुलेट करता है.
sha256Hex(string) यह फ़ंक्शन, हेक्साडेसिमल नंबर के तौर पर दिखाए गए SHA256 हैश को कैलकुलेट करता है.
sha384Hex(string) यह फ़ंक्शन, हेक्साडेसिमल नंबर के तौर पर दिखाए गए SHA384 हैश को कैलकुलेट करता है.
sha512Hex(string) यह फ़ंक्शन, हेक्साडेसिमल नंबर के तौर पर दिखाए गए SHA512 हैश को कैलकुलेट करता है.

तर्क

string - हैश फ़ंक्शन इसकी गणना हैश एल्गोरिदम की जाती है. आर्ग्युमेंट, कोई लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल हो सकता है.

उदाहरण

फ़ंक्शन कॉल:

sha256Hex('abc')

नतीजा:

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

फ़ंक्शन कॉल:

var str = 'abc';
sha256Hex(str)

नतीजा:

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

Base64 हैश फ़ंक्शन

हैश वैल्यू का हिसाब लगाएं और उस हैश की स्ट्रिंग को Base64 कोड में बदली गई वैल्यू के रूप में दिखाएं.

सिंटैक्स

फ़ंक्शन जानकारी
md5Base64(string) यह MD5 हैश को Base64 कोड में बदली गई वैल्यू के तौर पर कंप्यूट करता है.
sha1Base64(string) यह Base64 कोड में बदली गई वैल्यू के तौर पर दिखाए गए SHA1 हैश को कैलकुलेट करता है.
sha256Base64(string) यह, Base64 कोड में बदली गई वैल्यू के तौर पर दिखाए गए SHA256 हैश को कैलकुलेट करता है.
sha384Base64(string) यह Base64 कोड में बदले गए वैल्यूर के तौर पर दिखाए गए SHA384 हैश को कैलकुलेट करता है.
sha512Base64(string) यह, Base64 कोड में बदली गई वैल्यू के तौर पर दिखाए गए SHA512 हैश को कैलकुलेट करता है.

तर्क

string - हैश फ़ंक्शन इसकी गणना हैश एल्गोरिदम की जाती है. आर्ग्युमेंट, कोई लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो हो सकता है वैरिएबल.

उदाहरण

फ़ंक्शन कॉल:

sha256Base64('abc')

नतीजा:

ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=

फ़ंक्शन कॉल:

var str = 'abc';
sha256Base64(str)

नतीजा:

ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=

स्ट्रिंग फ़ंक्शन

मैसेज टेंप्लेट में मौजूद स्ट्रिंग पर कार्रवाइयां करें.

Base64 एन्कोडिंग फ़ंक्शन

Base64 एन्कोडिंग स्कीम का इस्तेमाल करके, स्ट्रिंग को कोड में बदलें और उन्हें डिकोड करें.

सिंटैक्स

फ़ंक्शन जानकारी
encodeBase64(string) Base64 एन्कोडिंग का इस्तेमाल करके स्ट्रिंग को कोड में बदलता है. उदाहरण के लिए: encodeBase64(value), जब value होल्ड करता है abc है, फ़ंक्शन इस स्ट्रिंग को लौटाता है: YWJj
decodeBase64(string) यह Base64 कोड में बदली गई स्ट्रिंग को डिकोड करता है. उदाहरण के लिए: जब value होल्ड करता है, तो decodeBase64(value) aGVsbG8sIHdvcmxk है, तो फ़ंक्शन स्ट्रिंग hello, world दिखाता है.

तर्क

string - एन्कोड या डिकोड की जाने वाली स्ट्रिंग. यह कोई लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल हो सकता है.

उदाहरण

<AssignMessage name="AM-Set-Custom-Response">
    <AssignTo createNew="false" type="response"/>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Set>
       <Headers>
         <Header name="x-h1">Hello, {decodeBase64('d29ybGQK')}</Header>
       </Headers>
    </Set>
</AssignMessage>

केस कन्वर्ज़न फ़ंक्शन

स्ट्रिंग को अंग्रेज़ी के सभी बड़े या सभी छोटे अक्षरों में बदलें.

सिंटैक्स

फ़ंक्शन जानकारी
toUpperCase(string) स्ट्रिंग को अपरकेस में बदलें.
toLowerCase(string) स्ट्रिंग को अंग्रेज़ी के छोटे अक्षरों में बदलें.


अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तर्क

string - बदली जाने वाली स्ट्रिंग. यह कोई लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल हो सकता है.

उदाहरण

<AssignMessage name="AM-Set-Custom-Response">
    <AssignTo createNew="false" type="response"/>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <Set>
       <Headers>
         <Header name="x-h1">Hello, {toLowerCase(user.name)}</Header>
       </Headers>
    </Set>
</AssignMessage>

सबस्ट्रिंग फ़ंक्शन

किसी स्ट्रिंग के शुरुआती और आखिरी इंडेक्स के बीच के वर्ण दिखाता है.

सिंटैक्स

substring(str,start_index,end_index)

तर्क

  • str - लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल.
  • start_index - स्ट्रिंग में शुरुआती इंडेक्स.
  • end_index - (ज़रूरी नहीं) स्ट्रिंग में आखिरी इंडेक्स. अगर यह सप्लाई नहीं की गई है, आखिरी इंडेक्स, स्ट्रिंग के आखिर में है.

उदाहरण

नीचे दिए गए उदाहरणों के लिए, मान लें कि ये फ़्लो वैरिएबल मौजूद हैं:

वैरिएबल का नाम वैल्यू
alpha ABCDEFGHIJKLMNOPQRSTUVWXYZ
seven 7


अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है यहां इन वैरिएबल का इस्तेमाल करने वाले फ़ंक्शन कॉल के नतीजे दिए गए हैं:

मैसेज टेंप्लेट एक्सप्रेशन नतीजा
{substring(alpha,22)} WXYZ
hello {substring(alpha,22)} hello WXYZ
{substring(alpha,-4)} WXYZ
{substring(alpha,-8,-4)} STUV
{substring(alpha,0,10)} ABCDEFGHIJ
{substring(alpha,0,seven)} ABCDEFG

सभी फ़ंक्शन बदलें

किसी स्ट्रिंग में रेगुलर एक्सप्रेशन लागू करता है और किसी भी मैच के लिए, मैच को रिप्लेसमेंट वैल्यू से बदल देता है.

सिंटैक्स

replaceAll(string,regex,value)

तर्क

  • string - लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल, जिसमें बदलाव करना होता है.
  • रेगुलर एक्सप्रेशन - रेगुलर एक्सप्रेशन.
  • value - स्ट्रिंग में मौजूद सभी रेगुलर एक्सप्रेशन मैच को बदलने वाली वैल्यू.

उदाहरण

नीचे दिए गए उदाहरणों के लिए, मान लें कि ये फ़्लो वैरिएबल मौजूद हैं:

वैरिएबल का नाम वैल्यू
header Bearer ABCDEFGHIJKLMNOPQRSTUVWXYZ-9993
regex1 "^Bearer "
replacement "TOKEN: "

यहां इन वैरिएबल का इस्तेमाल करने वाले फ़ंक्शन कॉल के नतीजे दिए गए हैं:

मैसेज टेंप्लेट एक्सप्रेशन नतीजा
{replaceAll(header,"9993",'')} Bearer ABCDEFGHIJKLMNOPQRSTUVWXYZ-
{replaceAll(header,regex1,'')} ABCDEFGHIJKLMNOPQRSTUVWXYZ-9993
{replaceAll(header,regex1,replacement)} TOKEN: ABCDEFGHIJKLMNOPQRSTUVWXYZ-9993

पहले फ़ंक्शन को बदलें

स्ट्रिंग में तय किए गए रेगुलर एक्सप्रेशन मिलान की सिर्फ़ पहली मौजूदगी को बदलता है.

सिंटैक्स

replaceFirst(string,regex,value)

तर्क

  • string - लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल, जिसमें बदलाव करना होता है.
  • रेगुलर एक्सप्रेशन - रेगुलर एक्सप्रेशन.
  • value - स्ट्रिंग में रेगुलर एक्सप्रेशन मैच को बदलने के लिए इस्तेमाल की जाने वाली वैल्यू.

कैरेक्टर एस्केप और एन्कोडिंग फ़ंक्शन

ऐसे फ़ंक्शन जो स्ट्रिंग में खास वर्णों को एस्केप करते हैं या कोड में बदलते हैं.

सिंटैक्स

फ़ंक्शन जानकारी
escapeJSON(स्ट्रिंग) बैकस्लैश-एस्केप डबल-कोट से.
escapeXML(स्ट्रिंग) यह ऐंगल ब्रैकेट, अपॉस्ट्रॉफ़ी, डबल-कोट, और ऐंपरसैंड एक्सएमएल इकाइयों से बदल देता है. एक्सएमएल 1.0 दस्तावेज़ों के लिए इस्तेमाल करें.

escapeXML11(स्ट्रिंग) यह escapeXML की तरह ही काम करता है, लेकिन एक्सएमएल v1.1 इकाइयों के लिए. इस्तेमाल के बारे में नोट नीचे देखें.
encodeHTML(स्ट्रिंग) अपॉस्ट्रॉफ़ी, ऐंगल ब्रैकेट, और ऐंपरसेंड को कोड में बदलता है.

तर्क

string - एस्केप की जाने वाली स्ट्रिंग. यह कोई लिटरल स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल हो सकता है.

इस्तेमाल की जानकारी

एक्सएमएल 1.1 में कुछ कंट्रोल कैरेक्टर दिखाए जा सकते हैं. हालांकि, यह शून्य बाइट या जुड़े हुए यूनिकोड सरोगेट कोडपॉइंट को नहीं दिखा सकता. भले ही, यह एस्केप हो जाए. escapeXML11() फ़ंक्शन उन वर्णों को हटाता है जो नीचे दी गई रेंज में फ़िट नहीं होते:

[#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

escapeXML11() फ़ंक्शन इन रेंज में वर्णों को छोड़ देता है:

[#x1-#x8] | [#xB-#xC] | [#xE-#x1F] | [#x7F-#x84] | [#x86-#x9F]

उदाहरण

मान लें कि इस वैल्यू के साथ food नाम का फ़्लो वैरिएबल मौजूद है: "bread" & "butter". इसके बाद, फ़ंक्शन:

{escapeHTML(food)}
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

इससे नतीजे मिलते हैं:

&quot;bread&quot; &amp; &quot;butter&quot;

टाइम फ़ॉर्मैट फ़ंक्शन

समय को स्ट्रिंग के तौर पर दिखाएं, जो स्थानीय टाइम ज़ोन या यूटीसी के हिसाब से फ़ॉर्मैट किया गया हो.

सिंटैक्स

फ़ंक्शन जानकारी
timeFormat(format,str) स्थानीय टाइम ज़ोन के हिसाब से फ़ॉर्मैट की गई तारीख दिखाता है.
timeFormatMs(format,str) स्थानीय टाइम ज़ोन के हिसाब से फ़ॉर्मैट की गई तारीख दिखाता है.
timeFormatUTC(format,str) UTC के फ़ॉर्मैट में तारीख दिखाता है.
timeFormatUTCMs(format,str) UTC के फ़ॉर्मैट में तारीख दिखाता है.

तर्क

  • format - तारीख/समय के फ़ॉर्मैट वाली स्ट्रिंग. यह कोई लिटरल स्ट्रिंग या स्ट्रिंग वैरिएबल हो सकता है.
  • str - ऐसी स्ट्रिंग या स्ट्रिंग फ़्लो वैरिएबल जिसमें समय की वैल्यू होती है. यह वैल्यू, timeFormatMs के लिए सेकंड-से-इसे-एपिच या मिलीसेकंड-एस-सैंस-एपोक में हो सकती है.

उदाहरण

इन वैल्यू को मानकर, यह मान लें कि लोकल टाइमज़ोन पैसिफ़िक है:

  • epoch_time_ms = 1494390266000
  • epoch_time = 1494390266
  • fmt1 = yyyy-MM-dd
  • fmt2 = yyyy-MM-dd HH-mm-ss
  • fmt3 = yyyyMMddHHmmss

फ़ंक्शन ये नतीजे देते हैं:

    फ़ंक्शन आउटपुट
    timeFormatMs(fmt1,epoch_time_ms) 2017-05-09
    timeFormat(fmt1,epoch_time) 2017-05-09
    timeFormat(fmt2,epoch_time) 2017-05-09 21:24:26
    timeFormat(fmt3,epoch_time) 20170509212426
    timeFormatUTC(fmt1,epoch_time) 2017-05-10
    timeFormatUTC(fmt2,epoch_time) 2017-05-10 04:24:26
    timeFormatUTC(fmt3,epoch_time) 20170510042426

    एचएमएसी कैलकुलेशन फ़ंक्शन

    एचएमएसी के कैलकुलेशन फ़ंक्शन, एचएमएसी नीति का इस्तेमाल करने के बजाय एक विकल्प देते हैं. एक एचएमएसी हो. कैस्केड किए गए HMAC हिसाब करते समय, ये फ़ंक्शन आसानी से काम करते हैं. जैसे: एक HMAC के आउटपुट का इस्तेमाल दूसरे एचएमएसी के लिए कुंजी के तौर पर किया जाता है.

    सिंटैक्स

    फ़ंक्शन जानकारी
    hmacSha224(key,valueToSign[,keyencoding[,outputencoding]]) SHA-224 हैश फ़ंक्शन के साथ किसी HMAC की गणना करता है.
    hmacSha256(key,valueToSign[,keyencoding[,outputencoding]]) SHA-256 हैश फ़ंक्शन के साथ किसी HMAC को कोड में बदल देता है.
    hmacSha384(key,valueToSign[,keyencoding[,outputencoding]]) SHA-384 हैश फ़ंक्शन के साथ किसी HMAC को कोड में बदल देता है.
    hmacSha512(key,valueToSign[,keyencoding[,outputencoding]]) SHA-512 हैश फ़ंक्शन के साथ किसी HMAC को कोड में बदलता है.
    hmacMd5(key,valueToSign[,keyencoding[,outputencoding]]) MD5 हैश फ़ंक्शन के साथ HMAC को कोड में बदलता है.
    hmacSha1(key, valueToSign [,keyencoding[,outputencoding]]) SHA-1 एन्क्रिप्शन एल्गोरिदम की मदद से किसी HMAC को कोड में बदल देता है.

    तर्क

    • key - (ज़रूरी है) स्ट्रिंग के तौर पर कोड में बदली गई सीक्रेट कुंजी के बारे में बताता है. इसे एचएमएसी को कंप्यूट करने के लिए इस्तेमाल किया जाता है.
    • valueToSign - (ज़रूरी है) साइन किए जाने वाले मैसेज के बारे में बताता है. यह एक स्ट्रिंग होनी चाहिए.
    • keyencoding - (ज़रूरी नहीं) सीक्रेट कुंजी स्ट्रिंग को कोड में बदलने का तरीका बताया गया है. मान्य वैल्यू: hex, base16, base64, utf-8. डिफ़ॉल्ट: utf-8
    • Outputencoding - (ज़रूरी नहीं) आउटपुट के लिए इस्तेमाल करने के लिए एन्कोडिंग एल्गोरिदम तय करता है. मान्य वैल्यू: hex, base16, base64. वैल्यू, केस-इनसेंसिटिव होती हैं; hex और base16 समानार्थी शब्द हैं. डिफ़ॉल्ट: base64

    उदाहरण

    इस उदाहरण में, HMAC-256 को कंप्यूट करने और उसे किसी फ़्लो वैरिएबल को असाइन करने के लिएassignMessage नीति का इस्तेमाल किया गया है:

    <AssignMessage name='AM-HMAC-1'>
      <AssignVariable>
        <Name>valueToSign</Name>
        <Template>{request.header.apikey}.{request.header.date}</Template>
      </AssignVariable>
      <AssignVariable>
        <Name>hmac_value</Name>
        <Template>{hmacSha256(private.secretkey,valueToSign)}</Template>
      </AssignVariable>
    </AssignMessage>
    

    इस उदाहरण में कैस्केडिंग एचएमएसी जनरेट करने का तरीका बताया गया है, जिसका इस्तेमाल AWS हस्ताक्षर v4 पर हस्ताक्षर करने की प्रोसेस. इस उदाहरण में, इस्तेमाल किए गए कैस्केड किए गए HMAC के पांच लेवल जनरेट करने के लिए, ShareMessage नीति का इस्तेमाल किया गया है AWS हस्ताक्षर v4 के लिए हस्ताक्षर का हिसाब लगाने के लिए:

    <AssignMessage name='AM-HMAC-AWS-1'>
      <!-- 1 -->
      <AssignVariable>
        <Name>DateValue</Name>
        <Template>{timeFormatUTCMs('yyyyMMdd',system.timestamp)}</Template>
      </AssignVariable>
      <!-- 2 -->
      <AssignVariable>
        <Name>FirstKey</Name>
        <Template>AWS4{private.secret_aws_access_key}</Template>
      </AssignVariable>
      <!-- 3 -->
      <AssignVariable>
        <Name>DateKey</Name>
        <Template>{hmacSha256(FirstKey,DateValue,'utf-8','base16')}</Template>
      </AssignVariable>
      <!-- 4 -->
      <AssignVariable>
        <Name>DateRegionKey</Name>
        <Template>{hmacSha256(DateKey,aws_region,'base16','base16')}</Template>
      </AssignVariable>
      <!-- 5 -->
      <AssignVariable>
        <Name>DateRegionServiceKey</Name>
        <Template>{hmacSha256(DateRegionKey,aws_service,'base16','base16')}</Template>
      </AssignVariable>
      <!-- 6 -->
      <AssignVariable>
        <Name>SigningKey</Name>
        <Template>{hmacSha256(DateRegionServiceKey,'aws4_request','base16','base16')}</Template>
      </AssignVariable>
      <!-- 7 -->
      <AssignVariable>
        <Name>aws4_hmac_value</Name>
        <Template>{hmacSha256(SigningKey,stringToSign,'base16','base16')}</Template>
      </AssignVariable>
    </AssignMessage>
    

    अन्य फ़ंक्शन

    UUID फ़ंक्शन बनाएं

    यूयूआईडी जनरेट करता है और दिखाता है.

    सिंटैक्स

    createUuid()
    

    तर्क

    कोई नहीं.

    उदाहरण

    {createUuid()}

    नतीजे का उदाहरण:

    ec3ca9be-d1e1-4ef4-aee4-4a58f3130db8
    

    रैंडम लॉन्ग जनरेटर फ़ंक्शन

    कोई यादृच्छिक लंबा पूर्णांक लौटाता है.

    सिंटैक्स

    randomLong(args)
    

    तर्क

    • अगर कोई आर्ग्युमेंट तय नहीं किया गया है, तो यह फ़ंक्शन, Java Secureरैंडम क्लास की मदद से कंप्यूट किया गया कोई भी लंबा पूर्णांक दिखाता है.
    • अगर एक आर्ग्युमेंट मौजूद होता है, तो उसे कंप्यूटेशन की सबसे छोटी वैल्यू माना जाता है.
    • अगर कोई दूसरा आर्ग्युमेंट मौजूद होता है, तो उसे कंप्यूटेशन की सबसे बड़ी वैल्यू माना जाता है.

    उदाहरण

    {random()}
    

    के नतीजे कुछ इस तरह मिलते हैं:

    5211338197474042880
    

    रेगुलर एक्सप्रेशन टेक्स्ट जनरेटर

    दिए गए रेगुलर एक्सप्रेशन से मैच करने वाली टेक्स्ट स्ट्रिंग जनरेट करें.

    सिंटैक्स

    xeger(regex)
    

    आर्ग्यूमेंट

    रेगुलर एक्सप्रेशन - रेगुलर एक्सप्रेशन.

    उदाहरण

    यह उदाहरण बिना किसी शून्य के सात अंकों वाली स्ट्रिंग जनरेट करता है:

    xeger('[1-9]{7}')
    

    नतीजे का उदाहरण:

    9857253
    

    शून्य-कोलेसिंग फ़ंक्शन

    firstnonnull() फ़ंक्शन, सबसे बाएं आर्ग्युमेंट की वैल्यू दिखाता है. यह आर्ग्युमेंट शून्य नहीं है.

    सिंटैक्स

    firstnonnull(var1,varn)
    

    आर्ग्यूमेंट

    var1 - एक कॉन्टेक्स्ट वैरिएबल.

    varn - एक या एक से ज़्यादा कॉन्टेक्स्ट वैरिएबल. आप आर्ग्युमेंट के तौर पर लिखें, ताकि फ़ॉलबैक वैल्यू दी जा सके. वह वैल्यू जो तब सेट की जाएगी, जब बायां तर्क सेट हैं).

    उदाहरण

    नीचे दी गई टेबल में फ़ंक्शन के इस्तेमाल का तरीका दिखाया गया है:

    टेंप्लेट Var1 Var2 Var3 नतीजा
    {firstnonnull(var1,var2)} सेट नहीं है foo लागू नहीं foo
    {firstnonnull(var1,var2)} foo bar लागू नहीं foo
    {firstnonnull(var1,var2)} foo सेट नहीं है लागू नहीं foo
    {firstnonnull(var1,var2,var3)} foo bar baz foo
    {firstnonnull(var1,var2,var3)} सेट नहीं है bar baz bar
    {firstnonnull(var1,var2,var3)} सेट नहीं है सेट नहीं है baz baz
    {firstnonnull(var1,var2,var3)} सेट नहीं है सेट नहीं है सेट नहीं है null
    {firstnonnull(var1)} सेट नहीं है लागू नहीं लागू नहीं null
    {firstnonnull(var1)} foo लागू नहीं लागू नहीं foo
    {firstnonnull(var1,var2)} "" bar लागू नहीं ""
    {firstnonnull(var1,var2,'fallback value')} null null fallback value fallback value

    OAuth फ़ंक्शन

    किसी एक्सएमएल वैरिएबल पर {7/} एक्सप्रेशन लागू करता है.

    सिंटैक्स

    xpath(xpath_expression,xml_string,[datatype])
    

    तर्क

    xpath_expression - एक एक्स पाथ एक्सप्रेशन.

    xml_string - एक्सएमएल वाला फ़्लो वैरिएबल या स्ट्रिंग.

    datatype - (ज़रूरी नहीं) बताता है क्वेरी का मनचाहा रिटर्न टाइप. यह नोडसेट, नोड, संख्या, बूलियन, स्ट्रिंग हो सकता है. यह डिफ़ॉल्ट रूप से nodeset पर सेट होता है. डिफ़ॉल्ट विकल्प, आम तौर पर सही विकल्प होता है.

    उदाहरण 1

    मान लीजिए कि ये संदर्भ वैरिएबल किसी एक्सएमएल स्ट्रिंग और एक तो पाथ एक्सप्रेशन को तय करते हैं:

    xml = "<tag><tagid>250397</tagid><readerid>1</readerid><rssi>74</rssi><date>2019/06/15</date></tag>"
    xpath = "/tag/tagid"

    साथ ही, xpath() फ़ंक्शन का इस्तेमाल AdminMessage नीति में इस तरह से किया जाता है:

    <AssignMessage>
      <AssignVariable>
        <Name>extracted_tag</Name>
        <Template>{xpath(xpath,xml)}</Template>
      </AssignVariable>
    </AssignMessage><

    फ़ंक्शन, वैल्यू <tagid>250397</tagid> दिखाता है. यह मान इसमें रखा जाता है: कॉन्टेक्स्ट वैरिएबल, जिसे extracted_tag कहते हैं.

    उदाहरण 2

    अगर आपको सिर्फ़ नोड की वैल्यू चाहिए, तो text() फ़ंक्शन का इस्तेमाल इस तरह करें:

    <AssignMessage>
      <AssignVariable>
        <Name>extracted_tag</Name>
        <Template>{xpath('/tag/tagid/text()',xml)}</Template>
      </AssignVariable>
    </AssignMessage>

    इस कार्रवाई की वजह से, संदर्भ वैरिएबल extracted_tag इस पर सेट हो गया है 250397

    अगर कई नोड चुने जाते हैं, तो xpath() के नतीजे में सभी वैल्यू शामिल होती हैं के निशान को कॉमा से जोड़ा जाता है.

    तीसरा उदाहरण: एक्सएमएल नेमस्पेस

    किसी नेमस्पेस के बारे में बताने के लिए, अतिरिक्त पैरामीटर जोड़ें. हर पैरामीटर के लिए एक स्ट्रिंग होनी चाहिए prefix:namespaceuri. उदाहरण के लिए, एक xpath() फ़ंक्शन, जो यह चुनता है एसओएपी बॉडी का चाइल्ड एलिमेंट ऐसा हो सकता है:

    <AssignMessage>
      <AssignVariable>
        <Name>soapns</Name>
        <Value>soap:http://schemas.xmlsoap.org/soap/envelope/</Value>
      </AssignVariable>
      <AssignVariable>
        <Name>xpathexpression</Name>
        <Value>/soap:Envelope/soap:Body/*</Value>
      </AssignVariable>
      <AssignVariable>
        <Name>extracted_element</Name>
        <Template>{xpath(xpathexpression,xml,soapns)}</Template>
      </AssignVariable>
    </AssignMessage>

    अन्य नेमस्पेस के लिए, आपके पास xpath() में ज़्यादा से ज़्यादा 10 अतिरिक्त पैरामीटर जोड़ने का विकल्प होता है फ़ंक्शन का इस्तेमाल करना होगा.

    आपके पास सिंगल कोट से घिरा हुआ स्ट्रिंग के रूप में एक सामान्य Outline एक्सप्रेशन तय करने का विकल्प होता है:

    {xpath('/tag/tagid/text()',xml)}

    अगर एक्स पाथ एक्सप्रेशन में नेमस्पेस प्रीफ़िक्स (और कोलन) शामिल हैं, तो आपको यह एट्रिब्यूट असाइन करना होगा उस एक्स पाथ एक्सप्रेशन का इस्तेमाल करें और एक्सप्रेशन के बजाय वैरिएबल का नाम तय करें सकता है.

    {xpath(xpathexpression,xml,ns1)}

    चौथा उदाहरण: अपनी पसंद के हिसाब से रिटर्न टाइप तय करना

    xpath() फ़ंक्शन में पास किया गया वैकल्पिक तीसरा पैरामीटर, मनचाहे रिटर्न को बताता है क्वेरी का टाइप.

    कुछ OAuth क्वेरी न्यूमेरिक या बूलियन वैल्यू दिखा सकती हैं. उदाहरण के लिए, count() फ़ंक्शन कोई संख्या दिखाता है. यह एक मान्यXखोज क्वेरी है:

    count(//Record/Fields/Pair)
    

    यह मान्य क्वेरी बूलियन लौटाता है:

    count(//Record/Fields/Pair)>0
    

    ऐसे मामलों में, xpath() फ़ंक्शन को तीसरे पैरामीटर के साथ शुरू करें, जो वह टाइप बताता है:

    {xpath(expression,xml,'number')}
    {xpath(expression,xml,'boolean')}

    अगर तीसरे पैरामीटर में कोलन है, तो इसे नेमस्पेस आर्ग्युमेंट के तौर पर माना जाता है. अगर ऐसा नहीं है, तो यह माना जाएगा कि आपको किस तरह का आइटम वापस करना है. इस मामले में, अगर तीसरा पैरामीटर कोई एक मान्य मान (छोटे-बड़े अक्षर को अनदेखा करते हुए) है, तो xpath() फ़ंक्शन डिफ़ॉल्ट रूप से नोडसेट दिखाता है.

    JSON पाथ फ़ंक्शन

    किसी JSON वैरिएबल पर JSON पाथ एक्सप्रेशन लागू करता है.

    सिंटैक्स

    jsonPath(json-path,json-var,want-array)

    तर्क

    • (ज़रूरी है) json-path: (स्ट्रिंग) JSON पाथ एक्सप्रेशन.
    • (ज़रूरी है) json-var: (स्ट्रिंग) JSON वाला फ़्लो वैरिएबल या स्ट्रिंग.
    • (ज़रूरी नहीं) want-array: (स्ट्रिंग) अगर यह पैरामीटर 'true' पर सेट है और अगर नतीजा एक अरे है, तो अरे के सभी एलिमेंट वापस किया गया. अगर यह वैल्यू किसी दूसरी वैल्यू पर सेट है या यह पैरामीटर को छोड़ दिया जाता है, तो केवल नतीजे सेट करने वाली अरे का शून्यवां एलिमेंट दिखाया जाता है. अगर नतीजा सेट कोई अरे नहीं है, तो मौजूद होने पर इस तीसरा पैरामीटर को अनदेखा कर दिया जाता है.

    उदाहरण 1

    अगर यह मैसेज टेंप्लेट है, तो:

    The address is {jsonPath($.results[?(@.name == 'Mae West')].address.line1,the_json_variable)}

    और the_json_variable में शामिल है:

    {
      "results" : [
        {
          "address" : {
            "line1" : "18250 142ND AV NE",
            "city" : "Woodinville",
            "state" : "Washington",
            "zip" : "98072"
          },
          "name" : "Fred Meyer"
        },
        {
          "address" : {
            "line1" : "1060 West Addison Street",
            "city" : "Chicago",
            "state" : "Illinois",
            "zip" : "60613"
          },
          "name" : "Mae West"
        }
      ]
    } 

    फ़ंक्शन का नतीजा यह होता है:

    The address is 1060 West Addison Street

    ध्यान दें कि इस मामले में, नतीजा सेट सिर्फ़ एक एलिमेंट है (न कि एलिमेंट का कलेक्शन). अगर आपने नतीजा सेट एक अरे था, तो अरे का सिर्फ़ शून्यवां एलिमेंट लौटाया जाएगा. वापस जाने के लिए पूरे अरे के लिए, 'true' वाले फ़ंक्शन को तीसरे पैरामीटर के तौर पर कॉल करें, जैसा कि यहां दिखाया गया है अगले उदाहरण पर जाएं.

    उदाहरण 2

    अगर यह मैसेज टेंप्लेट है, तो:

    {jsonPath($.config.quota[?(@.operation=='ManageOrder')].appname,the_json_variable,'true')}

    और the_json_variable में शामिल है:

    {
      "results" : [
         {
          "config": {
            "quota": [
              {
                "appname": "A",
                "operation": "ManageOrder",
                "value": "900"
              },
              {
                "appname": "B",
                "operation": "ManageOrder",
                "value": "1000"
              },
              {
                "appname": "B",
                "operation": "SubmitOrder",
                "value": "800"
              }
            ]
          }
        }
      ]
    } 

    फ़ंक्शन का नतीजा यह होता है:

    ['A','B']