AssignMessage নীতি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন-এ যান।
info

কী

AssignMessage নীতি API প্রক্সি ফ্লো চলাকালীন নতুন অনুরোধ ও উত্তর মেসেজ পরিবর্তন করে বা তৈরি করে। এই নীতি আপনাকে সেইসব মেসেজের উপর নিম্নলিখিত অ্যাকশনগুলি করতে দেয়:

  • মেসেজে নতুন ফর্ম প্যারামিটার, হেডার বা কোয়েরি প্যারামিটার যোগ করুন
  • একটি মেসেজ থেকে অন্য মেসেজে আগে থেকে থাকা প্রপার্টি কপি করুন
  • মেসেজ থেকে হেডার, কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার এবং/অথবা মেসেজ পে-লোড সরান
  • মেসেজে আগে থেকে থাকা প্রপার্টির ভ্যালু সেট করুন

AssignMessage নীতির মাধ্যমে, আপনি সাধারণত অনুরোধ বা উত্তর, এই দুটির মধ্যে যেকোনও একটির প্রপার্টি যোগ, পরিবর্তন বা সরিয়ে দেন। তবে, আপনি AssignMessage নীতি ব্যবহার করে কাস্টম অনুরোধ বা উত্তর মেসেজ তৈরি করতে এবং বিকল্প টার্গেটে পাঠাতে পারেন, যেমনটি কাস্টম অনুরোধ মেসেজ তৈরি করুন-এ বর্ণনা করা হয়েছে।

AssignMessage নীতি মেসেজ বা ফ্লো ভেরিয়েবল তৈরি বা পরিবর্তন করতে পারে। আপস্ট্রিম সিস্টেমে প্রক্সির মাধ্যমে পাঠানোর আগে অনুরোধ মেসেজ পরিবর্তন করতে অথবা API কনজিউমার অ্যাপ্লিকেশনে রিলে করার আগে উত্তর মেসেজ পরিবর্তন করতে এই নীতি ব্যবহার করুন।

<AssignMessage> এলিমেন্ট

AssignMessage নীতি নির্ধারণ করে।

ডিফল্ট ভ্যালু নিচে ডিফল্ট নীতি ট্যাব দেখুন
আবশ্যক? প্রয়োজনীয়
Type জটিল অবজেক্ট
পেরেন্ট এলিমেন্ট প্রযোজ্য নয়
চাইল্ড এলিমেন্ট <Add>
<AssignTo>
<AssignVariable>
<Copy>
<DisplayName>
<IgnoreUnresolvedVariables>
<Remove>
<Set>

<AssignMessage> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<AssignMessage> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <!-- All AssignMessage child elements are optional -->
  <Add>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Add>

  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>

  <AssignVariable>
    <Name>variable_name</Name>
    <Ref>source_variable</Ref>
    <Template>message_template</Template>
    or
    <Template ref='template_variable'></Template>
    <Value>variable_value</Value>
  </AssignVariable>

  <Copy source="[request|response]">
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>[false|true]</Path>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>[false|true]</ReasonPhrase>
    <StatusCode>[false|true]</StatusCode>
    <Verb>[false|true]</Verb>
    <Version>[false|true]</Version>
  </Copy>

  <DisplayName>policy_display_name</DisplayName>

  <IgnoreUnresolvedVariables>[true|false]
  </IgnoreUnresolvedVariables>

  <Remove>
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Remove>

  <Set>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>path</Path>
    <Payload contentType="content_type" variablePrefix="prefix"
        variableSuffix="suffix">new_payload</Payload>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase>
    <StatusCode>HTTP_status_code or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>

</AssignMessage>

ডিফল্ট নীতি

আপনি Edge UI-তে আপনার ফ্লোতে AssignMessage নীতি যোগ করলে ডিফল্ট সেটিংস কেমন হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<AssignMessage continueOnError="false" enabled="true" name="assign-message-default">
  <DisplayName>Assign Message-1</DisplayName>
  <Properties/>
  <Copy source="request">
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <Payload/>
    <Verb/>
    <StatusCode/>
    <ReasonPhrase/>
    <Path/>
  </Copy>
  <Remove>
    <Headers>
      <Header name="h1"/>
    </Headers>
    <QueryParams>
      <QueryParam name="q1"/>
    </QueryParams>
    <FormParams>
      <FormParam name="f1"/>
    </FormParams>
    <Payload/>
  </Remove>
  <Add>
    <Headers/>
    <QueryParams/>
    <FormParams/>
  </Add>
  <Set>
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <!-- <Verb>GET</Verb> -->
    <Path/>
  </Set>
  <AssignVariable>
    <Name>name</Name>
    <Value/>
    <Ref/>
  </AssignVariable>
  <IgnoreUnresolvedVariables>true
  </IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Edge UI-তে নতুন AssignMessage নীতি যোগ করলে, টেমপ্লেটে সম্ভাব্য সব অপারেশনের জন্য স্টাব থাকে। সাধারণত, আপনি এই নীতির মাধ্যমে কোন অপারেশন(গুলি) করতে চান তা বেছে নেন এবং বাকি চাইল্ড এলিমেন্ট সরিয়ে দেন। যেমন, আপনি যদি কপি অপারেশন করতে চান, তাহলে <Copy> এলিমেন্ট ব্যবহার করুন এবং <Add>, <Remove> ও অন্যান্য চাইল্ড এলিমেন্ট পলিসি থেকে সরিয়ে দিন যাতে এটি আরও সহজে পড়া যায়।

এই উপাদানটির নিম্নলিখিত বৈশিষ্ট্যগুলি রয়েছে যা সমস্ত নীতিতে সাধারণ:

বৈশিষ্ট্য ডিফল্ট প্রয়োজন? বর্ণনা
name N/A প্রয়োজন

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

continueOnError মিথ্যা ঐচ্ছিক একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে "false" এ সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ। একটি নীতি ব্যর্থ হওয়ার পরেও প্রবাহ সম্পাদন অব্যাহত রাখতে "সত্য" তে সেট করুন৷
enabled সত্য ঐচ্ছিক নীতি প্রয়োগ করতে "সত্য" এ সেট করুন। নীতিটি "বন্ধ" করতে "মিথ্যা" এ সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।
async মিথ্যা অবচয় এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

নিম্নলিখিত সারণীতে <AssignMessage>-এর চাইল্ড এলিমেন্টের উচ্চ-স্তরের বিবরণ দেওয়া হয়েছে:

চাইল্ড এলিমেন্ট প্রয়োজনীয়? বিবরণ
সাধারণ অপারেশন
<Add> ঐচ্ছিক <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা মেসেজ অবজেক্টে তথ্য যোগ করে।

<Add> মেসেজে এমন হেডার বা প্যারামিটার যোগ করে যা আসল মেসেজে থাকে না। আগে থেকে থাকা হেডার বা প্যারামিটার ওভাররাইট করতে, <Set> এলিমেন্ট ব্যবহার করুন।

<Copy> ঐচ্ছিক source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা মেসেজ থেকে তথ্য কপি করে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা মেসেজ অবজেক্টে পেস্ট করে।
<Remove> ঐচ্ছিক <AssignTo> এলিমেন্টে উল্লেখ করা মেসেজ ভেরিয়েবল থেকে নির্দিষ্ট এলিমেন্ট মুছে দেয়।
<Set> ঐচ্ছিক অনুরোধ বা উত্তরে আগে থেকে থাকা প্রপার্টির ভ্যালু পরিবর্তন করে, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়।

<Set> আসল মেসেজে আগে থেকেই থাকা হেডার বা প্যারামিটার ওভাররাইট করে। নতুন হেডার বা প্যারামিটার যোগ করতে, <Add> এলিমেন্ট ব্যবহার করুন।

অন্যান্য চাইল্ড এলিমেন্ট
<AssignTo> ঐচ্ছিক AssignMessage নীতি কোন মেসেজের উপর কাজ করে তা নির্দিষ্ট করে। এটি স্ট্যান্ডার্ড অনুরোধ বা উত্তর হতে পারে অথবা নতুন, কাস্টম মেসেজ হতে পারে।
<AssignVariable> ঐচ্ছিক ফ্লো ভেরিয়েবেলে ভ্যালু অ্যাসাইন করে। ভেরিয়েবলটি না থাকলে, <AssignVariable> এটি তৈরি করে।
<IgnoreUnresolvedVariables> ঐচ্ছিক কোনও অমীমাংসিত ভেরিয়েবল পাওয়া গেলে প্রসেসিং বন্ধ হবে কিনা তা নির্ধারণ করে।

এইসব চাইল্ড এলিমেন্টের প্রতিটি সম্পর্কে নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।

উদাহরণ

AssignMessage নীতি আপনি কীভাবে ব্যবহার করতে পারেন তার কিছু উদাহরণ নিচে দেওয়া হল:

১: হেডার যোগ করুন

নিম্নলিখিত উদাহরণটি <Add> এলিমেন্ট সহ অনুরোধে একটি হেডার যোগ করে:

<AssignMessage name="AM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</AssignMessage>

২: পেলোড সরিয়ে দিন

নিম্নলিখিত উদাহরণটি <Remove> এলিমেন্ট সহ রেসপন্স থেকে পেলোড মুছে দেয়:

<AssignMessage name="AM-remove-1">
  <DisplayName>remove-1</DisplayName>
  <Remove>
    <Payload>true</Payload>
  </Remove>
  <AssignTo>response</AssignTo>
</AssignMessage>

৩: উত্তর পরিবর্তন করুন

নিম্নলিখিত উদাহরণে, আগে থেকে থাকা রেসপন্স অবজেক্টে একটি হেডার যোগ করে সেটি পরিবর্তন করা হয়েছে:

<AssignMessage name="AM-modify-response">
  <Set>
    <Headers>
      <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>false
  </IgnoreUnresolvedVariables>
  <AssignTo>response</AssignTo>
</AssignMessage>

এই উদাহরণটি নতুন মেসেজ তৈরি করে না। পরিবর্তে, এটি HTTP হেডার যোগ করে আগে থেকে থাকা উত্তর মেসেজ পরিবর্তন করে।

এই উদাহরণে <AssignTo> এলিমেন্টে ভেরিয়েবলের নাম হিসেবে response উল্লেখ করা হয়েছে, তাই এই নীতি টার্গেট সার্ভারের মাধ্যমে ফেরত পাঠানো ডেটা দিয়ে সেট করা রেসপন্স অবজেক্টকে পরিবর্তন করে।

এই নীতির মাধ্যমে রেসপন্স মেসেজে যোগ করা HTTP হেডারটি LookupCache নীতি দ্বারা পপুলেট করা একটি ভেরিয়েবল থেকে নেওয়া হয়েছে। তাই, এই Assign Message নীতির মাধ্যমে পরিবর্তিত রেসপন্স মেসেজে একটি HTTP হেডার থাকে যা দেখায় যে ফলাফল ক্যাশে থেকে নেওয়া হয়েছে কিনা। উত্তরে হেডার সেট করা ডিবাগিং ও সমস্যার সমাধানকরণের জন্য সহায়ক হতে পারে।

৪: পরিবর্তনশীল কন্টেন্ট সেট করা

আপনি Assign Message ব্যবহার করে উত্তর ও অনুরোধ মেসেজের পেলোডে ডায়নামিক কন্টেন্ট এম্বেড করতে পারবেন।

XML পেলোডে Edge ফ্লো ভেরিয়েবেল এম্বেড করতে, নির্দিষ্ট ভেরিয়েবেলটি কার্লি ব্র্যাকেটে রাখুন, যেমন: {prefix.name}।

নিম্নলিখিত উদাহরণে user-agent HTTP হেডার ফ্লো ভেরিয়েবলের ভ্যালু User-agent নামক XML এলিমেন্টে এম্বেড করা হয়েছে:

<AssignMessage name="AM-set-dynamic-content">
  <AssignTo>response</AssignTo>
  <Set>
    <Payload contentType="text/xml">
      <User-agent>{request.header.user-agent}</User-agent>
    </Payload>
  </Set>
  <IgnoreUnresolvedVariables>false
  </IgnoreUnresolvedVariables>
</AssignMessage>

JSON পেলোডের জন্য, আপনি variablePrefix এবং variableSuffix অ্যাট্রিবিউট ব্যবহার করে ভেরিয়েবেল যোগ করতে পারেন। এর জন্য নিম্নলিখিত উদাহরণের মতো ডিলিমিটার অক্ষর ব্যবহার করতে হবে:

<AssignMessage name="set-payload">
  <Payload contentType="application/json" variablePrefix="@" variableSuffix="#">
  {
     "user-agent": "@request.header.user-agent#"
  }
  </Payload>
</AssignMessage>

ফ্লো ভেরিয়েবলের সম্পূর্ণ তালিকার জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন।

ক্লাউড রিলিজ 16.08.17 থেকে, আপনি ভেরিয়েবেল যোগ করার জন্য কার্লি ব্র্যাকেটও ব্যবহার করতে পারবেন।

৫: কোয়েরি প্যারামিটার সরান

নিম্নলিখিত উদাহরণে অনুরোধ থেকে apikey কোয়েরি প্যারামিটার সরিয়ে দেওয়া হয়েছে:

<AssignMessage name="AM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

ব্যবহারকারী যাচাইকরণের জন্য VerifyAPIKey নীতি ব্যবহার করার সময় অনুরোধ মেসেজ থেকে apikey কোয়েরি প্যারামিটার সরিয়ে দেওয়া একটি পেশাদার পদ্ধতি। আপনি এটি করেন যাতে সংবেদনশীল কী তথ্য ব্যাকএন্ড টার্গেটে পাস না হয়।

৬: ভেরিয়েবেল সেট/গেট করা

নিম্নলিখিত উদাহরণে তিনটি মেসেজ অ্যাসাইন করার নীতি ব্যবহার করা হয়েছে:

  1. স্ট্যাটিক ভ্যালু সহ অনুরোধে তিনটি ফ্লো ভেরিয়েবল তৈরি করে
  2. অনুরোধ ফ্লোতে দ্বিতীয় নীতিতে ফ্লো ভেরিয়েবল ডায়নামিকভাবে পায়
  3. সেগুলিকে উত্তরের পেলোডে সেট করে
<!-- Policy #1: Set variables in the request -->

<AssignMessage name="AM-set-variables">
    <!-- Create a variable named myAppSecret -->
    <AssignVariable>
        <Name>myAppSecret</Name>
        <Value>42</Value>
    </AssignVariable>
    <!-- Create a variable named config.environment -->
    <AssignVariable>
        <Name>config.environment</Name>
        <Value>test</Value>
    </AssignVariable>
    <!-- Create a variable named config.protocol -->
    <AssignVariable>
        <Name>config.protocol</Name>
        <Value>gopher</Value>
    </AssignVariable>
</AssignMessage>

প্রথম নীতিতে, <AssignVariable> এলিমেন্ট অনুরোধে তিনটি ভেরিয়েবল তৈরি ও সেট করে। প্রতিটি <Name> এলিমেন্ট একটি ভেরিয়েবেল নাম নির্দিষ্ট করে এবং <Value> ভ্যালু নির্দিষ্ট করে।

দ্বিতীয় নীতিটি <AssignVariable> এলিমেন্ট ব্যবহার করে ভ্যালু পড়ে এবং তিনটি নতুন ভেরিয়েবল তৈরি করে:

<!-- Policy #2: Get variables from the request -->
<AssignMessage continueOnError="false" enabled="true" name="get-variables">
  <AssignTo createNew="false" transport="http" type="request"/>
  <!-- Get the value of myAppSecret and create a new variable, secret -->
  <AssignVariable>
    <Name>secret</Name>
    <Ref>myAppSecret</Ref>
    <Value>0</Value>
  </AssignVariable>
  <!-- Get the value of config.environment and create a new variable, environment -->
  <AssignVariable>
    <Name>environment</Name>
    <Ref>config.environment</Ref>
    <Value>default</Value>
  </AssignVariable>
  <!-- Get the value of config.protocol and create a new variable, protocol -->
  <AssignVariable>
    <Name>protocol</Name>
    <Ref>config.protocol</Ref>
    <Value>default</Value>
  </AssignVariable>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

দ্বিতীয় নীতিতে, <Ref> এলিমেন্ট সোর্স ভেরিয়েবেলকে রেফারেন্স করে, এবং <Name> এলিমেন্ট নতুন ভেরিয়েবেলের নাম নির্দিষ্ট করে। <Ref> এলিমেন্ট দ্বারা রেফারেন্স করা ভেরিয়েবল অ্যাক্সেস করা না গেলে, আপনি <Value> এলিমেন্ট দ্বারা নির্দিষ্ট করা ভ্যালু ব্যবহার করতে পারবেন।

এইসব নীতি প্রয়োগ করে দেখতে:

  1. অনুরোধের ফ্লোতে নীতি #১ এবং #২ যোগ করুন। নীতি #১-কে নীতি #২-এর আগে রাখতে ভুলবেন না।
  2. উত্তরের ফ্লোতে তৃতীয় নীতি যোগ করুন।
  3. তৃতীয় নীতিটি উত্তরে ভেরিয়েবল যোগ করতে <Set> এলিমেন্ট ব্যবহার করে। নিম্নলিখিত উদাহরণটি রেসপন্সে একটি XML পেলোড তৈরি করে যা Edge ক্লায়েন্টকে ফেরত দেয়:
    <!-- Policy #3: Add variables to the response -->
    <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload">
      <DisplayName>put-em-in-the-payload</DisplayName>
      <Set>
        <Payload contentType="application/xml">
          <wrapper>
            <secret>{secret}</secret>
            <config>
              <environment>{environment}</environment>
              <protocol>{protocol}</protocol>
            </config>
          </wrapper>
        </Payload>
      </Set>
      <IgnoreUnresolvedVariables>true
      </IgnoreUnresolvedVariables>
      <AssignTo createNew="false" transport="http" type="response"/>
    </AssignMessage>

    মনে রাখবেন যে <Set>-এ ফ্লো ভেরিয়েবেল অ্যাক্সেস করার সিনট্যাক্স হল সেগুলিকে কার্লি ব্র্যাকেটে র‍্যাপ করা।

    <Payload> এলিমেন্টের contentType অ্যাট্রিবিউট "application/xml" হিসেবে সেট করতে ভুলবেন না।

  4. আপনার API প্রক্সিতে একটি অনুরোধ পাঠান; যেমন:
    curl -vL https://ahamilton-eval-test.apigee.net/myproxy

    বিকল্প হিসেবে, আপনি xmllint-এর মতো ইউটিলিটির মাধ্যমে ফলাফল পাইপ করতে পারেন যাতে XML সুন্দরভাবে ফর্ম্যাট করা স্ট্রাকচারে দেখানো হয়:

    curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -

    উত্তরের মূল অংশটি নিম্নলিখিত উদাহরণের মতো হতে হবে:

    <wrapper>
      <secret>42</secret>
      <config>
        <environment>test</environment>
        <protocol>gopher</protocol>
      </config>
    </wrapper>

৭: সার্ভিস কলআউট রেসপন্স হেডার পান

নিচের উদাহরণে, ধরা যাক API প্রক্সি অনুরোধে একটি ServiceCallout নীতি আছে, এবং কলআউট উত্তরে একই নামের একাধিক হেডার আছে (Set-Cookie)। সার্ভিস কলআউটের উত্তর ভেরিয়েবল ডিফল্ট calloutResponse ধরে নিয়ে, নিম্নলিখিত নীতি দ্বিতীয় Set-Cookie হেডার ভ্যালু পায়।

<AssignMessage name="AM-Payload-from-SC-header">
  <Set>
    <Payload contentType="application/json">
      {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"}
    </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true
  </IgnoreUnresolvedVariables>
  <AssignTo>response</AssignTo>
</AssignMessage>

সব হেডার ভ্যালু তালিকাভুক্ত করতে, পরিবর্তে নিম্নলিখিত ভেরিয়েবল ব্যবহার করুন:

{calloutResponse.header.Set-Cookie.values}

এই রেফারেন্সের প্রতিটি চাইল্ড এলিমেন্টে অতিরিক্ত উদাহরণ আছে। আরও উদাহরণের জন্য, GitHub-এ AssignMessage-এর উদাহরণ দেখুন।

চাইল্ড এলিমেন্ট রেফারেন্স

এই বিভাগে <AssignMessage>-এর চাইল্ড এলিমেন্ট সম্পর্কে বর্ণনা করা হয়েছে।

<Add>

অনুরোধ বা উত্তরে তথ্য যোগ করে, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়।

<Add> এলিমেন্ট মেসেজে নতুন প্রপার্টি যোগ করে যা আসল মেসেজে থাকে না। আগে থেকে থাকা প্রপার্টির ভ্যালু পরিবর্তন করতে, <Set> এলিমেন্ট ব্যবহার করুন।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type জটিল ধরন
পেরেন্ট এলিমেন্ট <AssignMessage>
চাইল্ড এলিমেন্ট <FormParams>
<Headers>
<QueryParams>

<Add> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs1

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Add>
</AssignMessage>

উদাহরণ ১s2

নিম্নলিখিত উদাহরণে প্রাথমিক অনুরোধ থেকে তিনটি কোয়েরি স্ট্রিং প্যারামিটারের ভ্যালু পেতে এবং টার্গেট এন্ডপয়েন্ট অনুরোধে ফর্ম প্যারামিটার হিসেবে সেগুলি সেট করতে <FormParams> এলিমেন্ট ব্যবহার করা হয়:

<AssignMessage name="AM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ২s3

নিম্নলিখিত উদাহরণে <Headers> এলিমেন্ট ব্যবহার করে টার্গেট এন্ডপয়েন্টে পাঠানো অনুরোধে partner-id হেডার যোগ করা হয়েছে:

<AssignMessage name="AM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ৩s4

নিম্নলিখিত উদাহরণে, অনুরোধে স্ট্যাটিক ভ্যালু সহ একটি কোয়েরি প্যারামিটার যোগ করতে <QueryParams> এলিমেন্ট ব্যবহার করা হয়েছে:

<AssignMessage name="AM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</AssignMessage>

এই উদাহরণে, অনুরোধের প্রি-ফ্লোতে <Add> ব্যবহার করা হয়েছে। আপনি যদি ট্রেস টুল-এর মতো কোনও টুলে ফলাফল দেখেন, তাহলে https://example-target.com/get-এ করা অনুরোধ https://example-target.com/get?myParam=42 হয়ে যায়।

<Add>-এর চাইল্ড এলিমেন্ট ডায়নামিক স্ট্রিং সাবস্টিটিউশন সাপোর্ট করে, যা মেসেজ টেমপ্লেটিং নামে পরিচিত।

<FormParams> (<Add>-এর চাইল্ড)

অনুরোধ মেসেজে নতুন ফর্ম প্যারামিটার যোগ করে। এই এলিমেন্ট কোনও উত্তর মেসেজের উপর কোনও প্রভাব ফেলে না।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <FormParam>টি এলিমেন্টের অ্যারে
পেরেন্ট এলিমেন্ট <Add>
চাইল্ড এলিমেন্ট <FormParam>

<FormParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs5

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>
  </Add>
</AssignMessage>

উদাহরণ ১s6

নিম্নলিখিত উদাহরণে অনুরোধে একটি ফর্ম প্যারামিটার ("উত্তর") এবং স্ট্যাটিক ভ্যালু ("৪২") যোগ করা হয়েছে:

<AssignMessage name="AM-add-formparams-1">
  <Add>
    <FormParams>
      <FormParam name="answer">42</FormParam>
    </FormParams>
  </Add>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ২s7

নিম্নলিখিত উদাহরণটি name কোয়েরি প্যারামিটারের ভ্যালু পায় এবং এটি অনুরোধে ফর্ম প্যারামিটার হিসেবে যোগ করে এবং তারপর কোয়েরি প্যারামিটার সরিয়ে দেয়:

<AssignMessage name="AM-Swap-QueryParam-to-FormParams">
  <Add>
    <FormParam name="name">{request.queryparam.name}</FormParam>
  </Add>
  <Remove>
    <QueryParam name="name"/>
  </Remove>
</AssignMessage>

মনে রাখবেন যে এই উদাহরণে <AssignTo>-এর সাথে কোনও টার্গেট উল্লেখ করা নেই। এই নীতি শুধুমাত্র অনুরোধে প্যারামিটার যোগ করে।

উদাহরণ ৩s8

নিম্নলিখিত উদাহরণে অনুরোধে একাধিক ফর্ম প্যারামিটার যোগ করা হয়েছে:

<AssignMessage name="AM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

এই উদাহরণটি, যে অনুরোধ থেকে কোয়েরি স্ট্রিং প্যারামিটার তৈরি হয়েছে সেখান থেকে সেটি নেয় এবং বিভিন্ন নামে ফর্ম প্যারামিটার হিসেবে যোগ করে। তারপর এটি আসল কোয়েরি প্যারামিটার সরিয়ে দেয়। Apigee টার্গেট এন্ডপয়েন্টে পরিবর্তিত অনুরোধ পাঠাবে।

ফ্লো দেখার জন্য আপনি ট্রেস টুল ব্যবহার করতে পারেন। আপনি দেখতে পাবেন যে অনুরোধের বডিতে URL-এনকোড করা ফর্ম ডেটা আছে, যা মূলত কোয়েরি স্ট্রিং প্যারামিটার হিসেবে পাস করা হয়েছে:

username=nick&zip_code=90210&default_language=en

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <FormParams> ব্যবহার করতে পারবেন:

  • HTTP ভার্ব: POST
  • মেসেজের ধরন: অনুরোধ
  • নিম্নলিখিতগুলির মধ্যে একটি (বা দুটিই):
    • ফর্ম ডেটা: কোনও ভ্যালু বা "" (খালি স্ট্রিং) হিসেবে সেট করুন। যেমন, curl-এর সাথে, আপনার অনুরোধে -d "" যোগ করুন।
    • Content-Length হেডার: ০-তে সেট করুন (আসল অনুরোধে কোনও ডেটা না থাকলে; অন্যথায়, বর্তমান দৈর্ঘ্য, বাইটে)। যেমন, curl-এর সাথে আপনার অনুরোধে -H "Content-Length: 0" যোগ করুন।

যেমন:

curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded"
  https://ahamilton-eval-test.apigee.net/am-test

আপনি <FormParams> যোগ করলে, টার্গেট পরিষেবায় মেসেজ পাঠানোর আগে Edge অনুরোধের Content-Type হেডার "application/x-www-form-urlencoded"-এ সেট করে।

<Headers> (<Add>-এর চাইল্ড)

নির্দিষ্ট অনুরোধ বা উত্তরে নতুন হেডার যোগ করে, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <Header>টি এলিমেন্টের অ্যারে
পেরেন্ট এলিমেন্ট <Add>
চাইল্ড এলিমেন্ট <Header>

<Headers> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs9

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Add>
</AssignMessage>

উদাহরণ ১s10

নিম্নলিখিত উদাহরণটি অনুরোধ মেসেজে একটি partner-id হেডার যোগ করে এবং সেই হেডারে verifyapikey.VAK-1.developer.app.partner-id ফ্লো ভেরিয়েবলের ভ্যালু অ্যাসাইন করে।

<AssignMessage name="AM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</AssignMessage>

<QueryParams> (<Add>-এর চাইল্ড)

অনুরোধে নতুন কোয়েরি প্যারামিটার যোগ করে। এই এলিমেন্ট কোনও উত্তরে কোনও প্রভাব ফেলে না।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <QueryParam>টি এলিমেন্টের অ্যারে
পেরেন্ট এলিমেন্ট <Add>
চাইল্ড এলিমেন্ট <QueryParam>

<QueryParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs11

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Add>
</AssignMessage>

উদাহরণ ১s12

নিম্নলিখিত উদাহরণে অনুরোধে "myParam" কোয়েরি প্যারামিটার যোগ করা হয়েছে এবং সেটির মান "42" হিসেবে অ্যাসাইন করা হয়েছে:

<AssignMessage name="AM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <QueryParams> ব্যবহার করতে পারবেন:

  • HTTP ভার্ব: GET
  • মেসেজের ধরন: অনুরোধ

এছাড়াও, <AssignTo> এলিমেন্টের type অ্যাট্রিবিউট একটি অনুরোধ মেসেজ হলে তবেই আপনি কোয়েরি প্যারামিটার সেট করতে পারবেন। উত্তরে এগুলি সেট করলে কোনও প্রভাব পড়ে না।

আপনার নীতিতে কোয়েরি প্যারামিটারের খালি অ্যারে নির্ধারণ করলে (<Add><QueryParams/></Add>), নীতিটি কোনও কোয়েরি প্যারামিটার যোগ করে না। এটি <QueryParams> বাদ দেওয়ার মতোই।

<AssignTo>

AssignMessage নীতি কোন অবজেক্টে কাজ করে তা নির্ধারণ করে। বিকল্পগুলি হল:

  • অনুরোধের মেসেজ: API প্রক্সি দ্বারা প্রাপ্ত request
  • উত্তরের মেসেজ: টার্গেট সার্ভার থেকে response ফিরে এসেছে
  • কাস্টম মেসেজ: কাস্টম অনুরোধ বা উত্তর অবজেক্ট

মনে রাখবেন, কিছু ক্ষেত্রে, আপনি সেই অবজেক্ট পরিবর্তন করতে পারবেন না যার উপর AssignMessage নীতি কাজ করে। যেমন, আপনি <Add> বা <Set> ব্যবহার করে উত্তরে কোয়েরি প্যারামিটার (<QueryParams>) বা ফর্ম প্যারামিটার (<FormParams>) যোগ বা পরিবর্তন করতে পারবেন না। আপনি শুধু অনুরোধে কোয়েরি প্যারামিটার ও ফর্ম প্যারামিটার ম্যানিপুলেট করতে পারবেন।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <AssignMessage>
চাইল্ড এলিমেন্ট কোনওটিই নয়

আপনি <AssignTo> উল্লেখ না করলে অথবা <AssignTo> এলিমেন্ট উল্লেখ করলেও এলিমেন্টের জন্য টেক্সট ভ্যালু উল্লেখ না করলে, নীতিটি ডিফল্ট অনুরোধ বা উত্তরে কাজ করে, যা নীতিটি কোথায় কার্যকর হয় তার উপর ভিত্তি করে। অনুরোধের ফ্লোতে নীতি কার্যকর হলে, এটি অনুরোধের মেসেজকে প্রভাবিত করে। এটি যদি রেসপন্স ফ্লোতে কার্যকর হয়, তাহলে নীতিটি ডিফল্ট হিসেবে রেসপন্সকে প্রভাবিত করে।

<AssignTo> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs13

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>

উদাহরণ ১s14

নিম্নলিখিত উদাহরণে উল্লেখ করা হয়েছে যে টার্গেট হল আসল অনুরোধ যা টার্গেট এন্ডপয়েন্টে পাঠানো হবে:

<AssignMessage name="assignto-1">
<!-- DO NOT do this -->
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

উদাহরণ ২s15

নিম্নলিখিত উদাহরণটি একটি নতুন অনুরোধ অবজেক্ট তৈরি করে:

<AssignMessage name="AM-assignto-2"> 
  <AssignTo createNew="true" transport="http" type="request">NameOfNewMessage</AssignTo> 
</AssignMessage>

আপনি নতুন অনুরোধ বা উত্তর অবজেক্ট তৈরি করলে, AssignMessage নীতির অন্যান্য এলিমেন্ট (যেমন <Add>, <Set> এবং <Copy>) সেই নতুন অনুরোধ অবজেক্টের উপর কাজ করে।

আপনি ফ্লোতে পরে অন্যান্য নীতিতে নতুন অনুরোধ অবজেক্ট অ্যাক্সেস করতে পারেন, অথবা ServiceCallout নীতি সহ একটি বাহ্যিক পরিষেবাতে নতুন অনুরোধ অবজেক্ট পাঠাতে পারেন।

উদাহরণ ৩s16

নিম্নলিখিত উদাহরণটি "MyRequestObject" নামের একটি নতুন অনুরোধ অবজেক্ট তৈরি করে:

<AssignMessage name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"&gt;MyRequestObject&lt;/AssignTo>
</AssignMessage>

আপনি নতুন অনুরোধ বা উত্তর অবজেক্ট তৈরি করলে, AssignMessage নীতির অন্যান্য এলিমেন্ট (যেমন <Add>, <Set> এবং <Copy>) সেই নতুন অনুরোধ অবজেক্টের উপর কাজ করে।

আপনি ফ্লোতে পরে অন্যান্য নীতিতে নতুন অনুরোধ অবজেক্ট অ্যাক্সেস করতে পারেন, অথবা ServiceCallout নীতি সহ একটি এক্সটার্নাল পরিষেবায় নতুন অনুরোধ অবজেক্ট পাঠাতে পারেন।

নিম্নলিখিত সারণীতে <AssignTo>-এর অ্যাট্রিবিউট বর্ণনা করা আছে:

অ্যাট্রিবিউট বিবরণ প্রয়োজনীয়? ধরন
createNew

ভ্যালু অ্যাসাইন করার সময় এই নীতি নতুন মেসেজ তৈরি করে কিনা তা নির্ধারণ করে।

"সত্য" হলে, নীতিটি type দ্বারা নির্দিষ্ট করা প্রকারের একটি নতুন ভেরিয়েবল তৈরি করে (হয় "অনুরোধ" বা "প্রতিক্রিয়া")। আপনি নতুন ভেরিয়েবলের নাম নির্দিষ্ট না করলে, নীতিটি type-এর মানের উপর ভিত্তি করে একটি নতুন অনুরোধ বা প্রতিক্রিয়া অবজেক্ট তৈরি করে।

"false" হলে, নীতিটি দুটি উপায়ের যেকোনও একটিতে উত্তর দেয়:

  • <AssignTo> যদি অনুরোধ বা উত্তরে ভেরিয়েবলের নাম সমাধান করতে পারে, তাহলে এটি প্রসেসিং চালিয়ে যায়। যেমন, নীতিটি যদি অনুরোধের ফ্লোতে থাকে, তাহলে ভেরিয়েবলটি হল অনুরোধ অবজেক্ট। নীতিটি যদি কোনও রেসপন্সে থাকে, তাহলে ভেরিয়েবলটি হল রেসপন্স অবজেক্ট।
  • <AssignTo> সমাধান করা না গেলে বা মেসেজ নয় এমন ধরনের সমাধান হলে, নীতিটি একটি ত্রুটি দেখায়।

createNew নির্দিষ্ট করা না থাকলে, নীতিটি দুটি উপায়ের একটিতে সাড়া দেয়:

  • <AssignTo>-এর টেক্সট ভ্যালু কোনও মেসেজে সমাধান করলে, প্রসেসিং পরবর্তী ধাপে এগিয়ে যায়।
  • <AssignTo>-এর টেক্সট ভ্যালু সমাধান করা না গেলে অথবা মেসেজ নয় এমন ধরনের সমাধান হলে, type-এ উল্লেখ করা ধরনের নতুন ভেরিয়েবেল তৈরি করা হয়।
ঐচ্ছিক বুলিয়ান
transport

অনুরোধ বা উত্তর মেসেজের ধরনের জন্য ট্রান্সপোর্ট টাইপ নির্দিষ্ট করে।

ডিফল্ট ভ্যালু হল "http" (একমাত্র কাজ করে এমন ভ্যালু)।

ঐচ্ছিক স্ট্রিং
type createNew "true" হলে, নতুন মেসেজের ধরন নির্দিষ্ট করে। সঠিক ভ্যালু হল "অনুরোধ" বা "উত্তর"।

আপনি এই অ্যাট্রিবিউট বাদ দিলে, ফ্লোয়ের কোথায় এই নীতি কার্যকর হয় তার উপর নির্ভর করে Edge অনুরোধ বা উত্তর তৈরি করে।

ঐচ্ছিক স্ট্রিং

<AssignVariable>

ফ্লো ভেরিয়েবেলে ভ্যালু অ্যাসাইন করে। ফ্লো ভেরিয়েবল না থাকলে, <AssignVariable> এটি তৈরি করে।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type জটিল ধরন
পেরেন্ট এলিমেন্ট <AssignMessage>
চাইল্ড এলিমেন্ট <Name> (প্রয়োজনীয়)
<Ref>
<Template>
<Value>

ফ্লো ভেরিয়েবলে আপনি যে ভ্যালু অ্যাসাইন করেন তা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:

  • লিটারেল স্ট্রিং: ফ্লো ভেরিয়েবলের জন্য লিটারেল স্ট্রিং ভ্যালু নির্দিষ্ট করতে <Value> চাইল্ড এলিমেন্ট ব্যবহার করুন।
  • ফ্লো ভেরিয়েবল: গন্তব্য ফ্লো ভেরিয়েবলের জন্য আগে থেকে থাকা ফ্লো ভেরিয়েবলের ভ্যালু নির্দিষ্ট করতে <Ref> চাইল্ড এলিমেন্ট ব্যবহার করুন। সোর্স হিসেবে ব্যবহার করা যেতে পারে এমন ফ্লো ভেরিয়েবেলের সম্পূর্ণ তালিকার জন্য, ফ্লো ভেরিয়েবেল রেফারেন্স দেখুন।
  • মেসেজ টেমপ্লেট: ইন্টারপোলেট করার জন্য মেসেজ টেমপ্লেট নির্দিষ্ট করতে <Template> চাইল্ড এলিমেন্ট ব্যবহার করুন, যাতে ডেস্টিনেশন ফ্লো ভেরিয়েবলে প্লেস করার জন্য ভ্যালু পাওয়া যায়।

<AssignVariable> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs17

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
    <Ref>source_variable</Ref>
    <Template>message_template</Template>
    or
    <Template ref='template_variable'></Template>
    <Value>variable_value</Value>
  </AssignVariable>
</AssignMessage>

সোর্স ভেরিয়েবল নির্দিষ্ট করতে <Ref> এলিমেন্ট ব্যবহার করুন। <Ref>-এর মাধ্যমে রেফার করা ভেরিয়েবল অ্যাক্সেস করা না গেলে, Edge <Value> এলিমেন্টের মাধ্যমে নির্দিষ্ট করা ভ্যালু ব্যবহার করে। আপনি যদি <Template> নির্ধারণ করেন, তাহলে এটি অন্যান্য চাইল্ড এলিমেন্টের চেয়ে বেশি অগ্রাধিকার পায়।

উদাহরণ ১s18

নিম্নলিখিত উদাহরণে নতুন ভেরিয়েবল myvar-এর ভ্যালু "৪২" লিটারেল ভ্যালুতে সেট করা হয়েছে:

<AssignMessage name="assignvariable-1">
  <AssignVariable>
    <Name>myvar</Name>
    <Value>42</Value>
  </AssignVariable>
</AssignMessage>

উদাহরণ ২s19

নিম্নলিখিত উদাহরণটি ফ্লো ভেরিয়েবেল request.header.user-agent-এর ভ্যালু ডেস্টিনেশন ফ্লো ভেরিয়েবেল myvar-এ অ্যাসাইন করে এবং কোয়েরি প্যারামিটার country-এর ভ্যালু ডেস্টিনেশন ফ্লো ভেরিয়েবেল Country-এ অ্যাসাইন করে:

<AssignMessage name="assignvariable-2">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
</AssignMessage>

কোনও অ্যাসাইনমেন্ট ব্যর্থ হলে, Edge পরিবর্তে "ErrorOnCopy" মানটি ডেস্টিনেশন ফ্লো ভেরিয়েবলে অ্যাসাইন করে।

myvar বা Country ফ্লো ভেরিয়েবল না থাকলে, <AssignVariable> সেগুলি তৈরি করে।

উদাহরণ ৩s20

নিম্নলিখিত উদাহরণে <Template> চাইল্ড এলিমেন্ট ব্যবহার করে দুটি কনটেক্সট ভেরিয়েবলকে তাদের মধ্যে একটি লিটারেল স্ট্রিং (হাইফেন) দিয়ে কনক্যাটিনেট করা হয়েছে:

<AssignMessage name='AV-via-template-1'>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template>{system.uuid}-{messageid}</Template>
  </AssignVariable>
</AssignMessage>

<AssignVariable>-এর একটি সাধারণ ব্যবহার হল কোয়েরি প্যারামিটার, হেডার বা অন্য ভ্যালুর জন্য ডিফল্ট ভ্যালু সেট করা যা অনুরোধের সাথে পাস করা যেতে পারে। আপনি <Ref> এবং <Value> চাইল্ড এলিমেন্ট, উভয়ের কম্বিনেশন ব্যবহার করে এটি করেন। আরও তথ্যের জন্য, <Ref>-এর উদাহরণ দেখুন।

<Name> (<AssignVariable>-এর চাইল্ড)

ডেস্টিনেশন ফ্লো ভেরিয়েবলের নাম নির্দিষ্ট করে (যেমন, AssignMessage নীতির মাধ্যমে যে ভেরিয়েবলের ভ্যালু সেট করা হয়)। <AssignVariable>-এ উল্লেখ করা নামের ভেরিয়েবল না থাকলে, নীতিটি সেই নামে একটি ভেরিয়েবল তৈরি করে।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? প্রয়োজনীয়
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <AssignVariable>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Name> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs21

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
  </AssignVariable>
</AssignMessage>

উদাহরণ ১s22

নিম্নলিখিত উদাহরণে ডেস্টিনেশন ভেরিয়েবলকে myvar হিসেবে নির্দিষ্ট করা হয়েছে এবং এটিকে "৪২" লিটারেল ভ্যালুতে সেট করা হয়েছে:

<AssignMessage name="assignvariable-1">
  <AssignVariable>
    <Name>myvar</Name>
    <Value>42</Value>
  </AssignVariable>
</AssignMessage>

myvar না থাকলে, <AssignVariable> এটি তৈরি করে।

<Ref> (<AssignVariable>-এর চাইল্ড)

ফ্লো ভেরিয়েবেল হিসেবে অ্যাসাইনমেন্টের সোর্স নির্দিষ্ট করে। ফ্লো ভেরিয়েবল আগে থেকে নির্ধারিত ফ্লো ভেরিয়েবল (ফ্লো ভেরিয়েবল রেফারেন্স-এ তালিকাভুক্ত) অথবা আপনার তৈরি করা কাস্টম ফ্লো ভেরিয়েবলের মধ্যে যেকোনও একটি হতে পারে।

<Ref>-এর ভ্যালু সবসময় ফ্লো ভেরিয়েবেল হিসেবে ব্যাখ্যা করা হয়; আপনি ভ্যালু হিসেবে লিটারেল স্ট্রিং নির্দিষ্ট করতে পারবেন না। লিটারেল স্ট্রিং ভ্যালু অ্যাসাইন করতে, পরিবর্তে <Value> এলিমেন্ট ব্যবহার করুন।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <AssignVariable>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Ref>-এর সাথে ফ্লো ভেরিয়েবল উল্লেখ করার সময়, সাধারণত ফ্লো ভেরিয়েবল রেফারেন্স করার জন্য যে বন্ধনী "{}" ব্যবহার করেন তা বাদ দিন। যেমন, আপনার নতুন ভেরিয়েবেলের ভ্যালু client.host ফ্লো ভেরিয়েবেলের ভ্যালুতে সেট করতে:

Do this (no brackets):
  <Ref>client.host</Ref>

Do NOT do this (brackets):
  <Ref>{client.host}</Ref>

গন্তব্য ফ্লো ভেরিয়েবলের জন্য ডিফল্ট ভ্যালু নির্ধারণ করতে, <Ref>-এর সাথে <Value> ব্যবহার করুন। <Ref>-এর মাধ্যমে নির্দিষ্ট করা ফ্লো ভেরিয়েবল না থাকলে, পড়া না গেলে বা খালি থাকলে, Edge তার পরিবর্তে গন্তব্য ফ্লো ভেরিয়েবলে <Value>-এর ভ্যালু অ্যাসাইন করে।

<Ref> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
    <Ref>source_variable</Ref>
  </AssignVariable>
</AssignMessage>

উদাহরণ ১s23

নিম্নলিখিত উদাহরণটি ফ্লো ভেরিয়েবেল request.header.user-agent-এর ভ্যালু ডেস্টিনেশন ফ্লো ভেরিয়েবেল myvar-এ এবং কোয়েরি প্যারামিটার country-এর ভ্যালু Country ভেরিয়েবেলে অ্যাসাইন করে:

<AssignMessage name="assignvariable-4">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
  </AssignVariable>
</AssignMessage>

এই উদাহরণে, Edge-এর কাছে কোনও অ্যাসাইনমেন্টের জন্য ডিফল্ট (বা ফলব্যাক ভ্যালু) নির্দিষ্ট করা নেই।

উদাহরণ ২s23

নিম্নলিখিত উদাহরণে ফ্লো ভেরিয়েবেল request.header.user-agent-এর ভ্যালু ডেস্টিনেশন ফ্লো ভেরিয়েবেল myvar-এ এবং কোয়েরি প্যারামিটার country-এর ভ্যালু Country ভেরিয়েবেলে অ্যাসাইন করা হয়েছে:

<AssignMessage name="assignvariable-2">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
</AssignMessage>

এই উদাহরণে, request.header.user-agent ফ্লো ভেরিয়েবল বা Country কোয়েরি প্যারামিটারের ভ্যালু যদি শূন্য, অপাঠ্য বা বিকৃত হয়, তাহলে Edge নতুন ভেরিয়েবলে "ErrorOnCopy" ভ্যালু অ্যাসাইন করে।

উদাহরণ ৩s24

<AssignVariable>-এর একটি সাধারণ ব্যবহার হল কোয়েরি প্যারামিটার, হেডার বা অন্য কোনও ভ্যালুর ডিফল্ট ভ্যালু সেট করা যা অনুরোধের সাথে পাস করা যেতে পারে। যেমন, আপনি একটি ওয়েদার API প্রক্সি তৈরি করেন যেখানে অনুরোধে "w" নামের একটি কোয়েরি প্যারামিটার থাকে। এই প্যারামিটারে সেই শহরের আইডি থাকে যার আবহাওয়া আপনি জানতে চান। অনুরোধের URL-এর ফর্ম্যাট হল:

http://myCO.com/v1/weather/forecastrss?w=city_ID

"w"-এর জন্য ডিফল্ট ভ্যালু নির্ধারণ করতে, নিচে উল্লেখ করা উদাহরণের মতো AssignMessage নীতি তৈরি করুন:

<AssignMessage continueOnError="false" enabled="true" name="assignvariable-3">
  <AssignTo createNew="false" transport="http" type="request"/>
  <IgnoreUnresolvedVariables>true
  </IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>request.queryparam.w</Name>
    <Ref>request.queryparam.w</Ref>
    <Value>12797282</Value>
  </AssignVariable>
</AssignMessage>

এই উদাহরণে, <AssignVariable>, request.queryparam.w-এর ভ্যালু পায় এবং এটি নিজেকে অ্যাসাইন করে। ফ্লো ভেরিয়েবল নাল হলে, অর্থাৎ অনুরোধ থেকে "w" কোয়েরি প্যারামিটার বাদ দেওয়া হলে, এই উদাহরণে <Value> এলিমেন্ট থেকে ডিফল্ট ভ্যালু ব্যবহার করা হয়। তাই, আপনি এই API প্রক্সিতে অনুরোধ করতে পারেন যা "w" কোয়েরি প্যারামিটার বাদ দেয়:

http://myCO.com/v1/weather/forecastrss

...এবং এখনও API প্রক্সি একটি সঠিক ফলাফল প্রদান করে।

<Value> ব্যবহার করার সময় থেকে আলাদা, <Ref>-এর ভ্যালু অবশ্যই একটি ফ্লো ভেরিয়েবল হতে হবে, যেমন request, response, অথবা target অবজেক্টের প্রপার্টি। এছাড়াও, ভ্যালুটি আপনার তৈরি করা কাস্টম ফ্লো ভেরিয়েবল হতে পারে।

আপনি যদি এমন কোনও ফ্লো ভেরিয়েবল উল্লেখ করেন যা <Ref>-এর মানের জন্য নেই, এবং <IgnoreUnresolvedVariables>-এর মান "true" হয়, তাহলে Edge একটি সমস্যা দেখায়।

<Template> (<AssignVariable>-এর চাইল্ড)

মেসেজ টেমপ্লেট নির্দিষ্ট করে। মেসেজ টেমপ্লেট আপনাকে নীতি কার্যকর করার সময় পরিবর্তনশীল স্ট্রিং প্রতিস্থাপন করতে দেয় এবং কার্লি ব্র্যাকেটে মোড়ানো পরিবর্তনশীল নামের সাথে আক্ষরিক স্ট্রিং একত্রিত করতে পারে। এছাড়াও, মেসেজ টেমপ্লেট ফাংশন যেমন এস্কেপিং এবং কেস কনভার্সন সাপোর্ট করে।

একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ref অ্যাট্রিবিউট ব্যবহার করুন যেখানে ভেরিয়েবলের মান একটি মেসেজ টেমপ্লেট। যেমন, আপনি কোনও মেসেজ টেমপ্লেটকে ডেভেলপার অ্যাপে কাস্টম অ্যাট্রিবিউট হিসেবে স্টোর করতে পারেন। API কী বা নিরাপত্তা টোকেন (অতিরিক্ত নীতির মাধ্যমে) যাচাই করার পরে Edge যখন ডেভেলপার অ্যাপ শনাক্ত করে, তখন <AssignVariable> এলিমেন্ট অ্যাপের কাস্টম অ্যাট্রিবিউট থেকে মেসেজ টেমপ্লেট ব্যবহার করতে পারে, যা নিরাপত্তা নীতি থেকে ফ্লো ভেরিয়েবল হিসেবে উপলভ্য।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <AssignVariable>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Template> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs25

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Template>message_template</Template>
    or
    <Template ref='template_variable'></Template>
  </AssignVariable>
</AssignMessage>

উদাহরণ ১s26

নিম্নলিখিত উদাহরণে দুটি প্রসঙ্গ ভেরিয়েবলকে একটি লিটারেল স্ট্রিংয়ের (একটি হাইফেন) মাধ্যমে একসাথে যুক্ত করার জন্য মেসেজ টেমপ্লেটিং সিনট্যাক্স ব্যবহার করা হয়েছে:

<AssignMessage name='AV-via-template-1'>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template>{system.uuid}-{messageid}</Template>
  </AssignVariable>
</AssignMessage>

উদাহরণ ২s27

নিম্নলিখিত উদাহরণে একটি ফ্লো ভেরিয়েবেল নির্দিষ্ট করা হয়েছে, যেখানে ভেরিয়েবেলের ভ্যালু হল আগে থেকে নির্ধারিত মেসেজ টেমপ্লেট। নীতি পরিবর্তন না করেই রানটাইমে আগে থেকে নির্ধারিত টেমপ্লেট ইনজেক্ট করতে চাইলে এই বিকল্প ব্যবহার করুন:

<AssignMessage name='AV-via-template-indirectly'>  
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template ref='my_template_variable'/>
  </AssignVariable>
</AssignMessage>

উদাহরণ ৩s28

নিম্নলিখিত উদাহরণে একটি ফ্লো ভেরিয়েবল ও টেক্সট ভ্যালু উল্লেখ করা হয়েছে। এই ক্ষেত্রে, যদি রেফারেন্স করা ভেরিয়েবেল নন-নাল হয়, তাহলে সেই ভ্যালু টেমপ্লেট হিসেবে ব্যবহার করা হয়। রেফারেন্স করা ভ্যালু শূন্য হলে, টেক্সট ভ্যালু (এই ক্ষেত্রে, {system.uuid}-{messageid}) টেমপ্লেট হিসেবে ব্যবহার করা হয়। এই প্যাটার্নটি "ওভাররাইড" ভ্যালু প্রদান করার জন্য উপযোগী, যেখানে কিছু ক্ষেত্রে আপনি ডিফল্ট টেমপ্লেট (টেক্সট অংশ) ওভাররাইড করতে চান, যা ডাইনামিকভাবে সেট করা হয়। যেমন, কোনও শর্তাধীন স্টেটমেন্ট কী-ভ্যালু ম্যাপ থেকে কোনও ভ্যালু নিতে পারে এবং রেফারেন্স করা ভেরিয়েবলকে সেই ভ্যালুতে সেট করতে পারে:

<AssignMessage name='AV-template-with-fallback'> 
 <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template ref='my_variable'>{system.uuid}-{messageid}</Template>
  </AssignVariable>
</AssignMessage>

<Value> (<AssignVariable>-এর চাইল্ড)

<AssignVariable>-এর মাধ্যমে সেট করা ডেস্টিনেশন ফ্লো ভেরিয়েবলের ভ্যালু নির্ধারণ করে। ভ্যালু সবসময় আক্ষরিক স্ট্রিং হিসেবে ব্যাখ্যা করা হয়; আপনি ভ্যালু হিসেবে ফ্লো ভেরিয়েবল ব্যবহার করতে পারবেন না, এমনকি আপনি ভ্যালুটি ব্র্যাকেটে ("{}") রাখলেও। ফ্লো ভেরিয়েবল ব্যবহার করতে, পরিবর্তে <Ref> ব্যবহার করুন।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <AssignVariable>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Ref> এলিমেন্টের সাথে একসাথে ব্যবহার করা হলে, <Value> ডিফল্ট (বা ফলব্যাক) ভ্যালু হিসেবে কাজ করে। <Ref> নির্দিষ্ট করা না থাকলে, সমাধান করা না গেলে বা ফাঁকা থাকলে, <Value>-এর ভ্যালু ব্যবহার করা হয়।

<Value> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs29

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
    <Value>variable_value</Value>
  </AssignVariable>
</AssignMessage>

নমুনা ১

নিম্নলিখিত উদাহরণে ডেস্টিনেশন ফ্লো ভেরিয়েবল, myvar-এর ভ্যালু লিটারেল ভ্যালু "৪২" হিসেবে সেট করা হয়েছে:

<AssignMessage name="assignvariable-1">
  <AssignVariable>
    <Name>myvar</Name>
    <Value>42</Value>
  </AssignVariable>
</AssignMessage>

নমুনা ২

নিচের উদাহরণে ফ্লো ভেরিয়েবেল request.header.user-agent-এর ভ্যালু ফ্লো ভেরিয়েবেল myvar-এ অ্যাসাইন করা হয়েছে এবং কোয়েরি প্যারামিটার country-এর ভ্যালু Country ভেরিয়েবেলে অ্যাসাইন করা হয়েছে:

<AssignMessage name="assignvariable-2">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
</AssignMessage>

কোনও অ্যাসাইনমেন্ট ব্যর্থ হলে, <AssignVariable> পরিবর্তে গন্তব্য ফ্লো ভেরিয়েবলে "ErrorOnCopy" ভ্যালু অ্যাসাইন করে।

<Copy>

source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা মেসেজ থেকে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা মেসেজে ভ্যালু কপি করে। আপনি যদি <AssignTo>-এর সাথে কোনও টার্গেট নির্দিষ্ট না করেন, তাহলে এই নীতি অনুরোধ বা উত্তরে মান কপি করে, ফ্লোতে এই নীতি কোথায় কার্যকর হয় তার উপর নির্ভর করে।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <AssignMessage>
চাইল্ড এলিমেন্ট <FormParams>
<Headers>
<Path>
<Payload>
<QueryParams>
<ReasonPhrase>
<StatusCode>
<Verb>
<Version>

আপনি যদি <Copy> এলিমেন্টের নিচে কোনও চাইল্ড এলিমেন্ট নির্দিষ্ট না করেন, তাহলে এটি নির্দিষ্ট সোর্স মেসেজের সব অংশ কপি করবে।

<Copy> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs30

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
    <Copy source="[request|response]">
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>[false|true]</Path>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>[false|true]</ReasonPhrase>
    <StatusCode>[false|true]</StatusCode>
    <Verb>[false|true]</Verb>
    <Version>[false|true]</Version>
  </Copy>
  <!-- Used as the destination for the <Copy> values -->
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>
  

উদাহরণ ১s31

নিম্নলিখিত উদাহরণটি request মেসেজ থেকে একটি হেডার, তিনটি ফর্ম প্যারামিটার, পাথ এবং সব কোয়েরি প্যারামিটার newRequest নামের একটি নতুন, কাস্টম অনুরোধে কপি করে:

<AssignMessage name="AM-copy-1">
  <AssignTo createNew="true" transport="http" type="request">newRequest</AssignTo>
  <Copy source="request">
    <Headers>
      <Header name="Header_Name_1"/>
    </Headers>
    <FormParams>
      <FormParam name="Form_Param_Name_1"/>
      <FormParam name="Form_Param_Name_2"/>
      <FormParam name="Form_Param_Name_3"/>
    </FormParams>
    <Path>true</Path>
    <QueryParams/>
  </Copy>
</AssignMessage>

<Payload> এবং <Verb>-এর মতো এলিমেন্ট উপস্থিত না থাকার কারণে, নীতিটি মেসেজের সেই অংশগুলি কপি করে না।

উদাহরণ ২s32

নিচের উদাহরণে প্রথমে আগে থেকে থাকা response মেসেজের সবকিছু মুছে দেওয়া হয়, তারপর secondResponse নামের অন্য একটি মেসেজ থেকে সব ভ্যালু কপি করে response মেসেজে পেস্ট করা হয়:

<AssignMessage name='AM-Copy-Response'>
  <AssignTo createNew="false" transport="http" type="response">response</AssignTo>
  <!-- first remove any existing values -->
  <Remove/>
  <!-- then copy everything from the designated message -->
  <Copy source="secondResponse"/>
</AssignMessage>

<Copy> এলিমেন্টে একটি অ্যাট্রিবিউট আছে:

অ্যাট্রিবিউট বিবরণ প্রয়োজনীয়? ধরন
সোর্স

কপির সোর্স অবজেক্ট নির্দিষ্ট করে।

  • source উল্লেখ করা না থাকলে, ডিফল্ট হিসেবে message ব্যবহার করা হয়, যা নীতি কার্যকর করার ফ্লো অনুযায়ী আলাদা ভ্যালু গ্রহণ করে। যদি নীতিটি অনুরোধ ফ্লোর মধ্যে কার্যকর হয়, তাহলে message ভেরিয়েবলটি request অবজেক্টকে বোঝায়। নীতিটি যদি রেসপন্স ফ্লোর মধ্যে কার্যকর হয়, তাহলে message ভেরিয়েবলটি response অবজেক্টকে রেফার করে।
  • সোর্স ভেরিয়েবেল সমাধান করা না গেলে অথবা মেসেজ নয় এমন টাইপে সমাধান করা হলে, <Copy> উত্তর দিতে পারে না।
ঐচ্ছিক স্ট্রিং

<FormParams> (<Copy>-এর চাইল্ড)

<Copy> এলিমেন্টের source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা অনুরোধ থেকে ফর্ম প্যারামিটার কপি করে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা অনুরোধে পেস্ট করে। এই এলিমেন্টের কোনও প্রভাব উত্তরে পড়ে না।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <FormParam>টি এলিমেন্টের অ্যারে বা খালি অ্যারে
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট <FormParam>

<FormParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs33

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  </Copy>
</AssignMessage>

উদাহরণ ১s34

নিম্নলিখিত উদাহরণটি অনুরোধ থেকে একটি ফর্ম প্যারামিটার কপি করে কাস্টম অনুরোধ "MyCustomRequest"-এ পেস্ট করে:

<AssignMessage name="copy-formparams-1">
  <Copy source="request">
    <FormParams>
      <FormParam name="paramName">Form param value 1</FormParam>
    </FormParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

উদাহরণ ২s35

নিম্নলিখিত উদাহরণটি কাস্টম অনুরোধ "MyCustomRequest"-এ সব ফর্ম প্যারামিটার কপি করে:

<AssignMessage name="copy-formparams-2">
  <Copy source="request">
    <FormParams/>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

উদাহরণ ৩s36

নিচের উদাহরণে তিনটি ফর্ম প্যারামিটার কাস্টম অনুরোধ "MyCustomRequest"-এ কপি করা হয়েছে:

<AssignMessage name="copy-formparams-3">
  <Copy source="request">
    <FormParams>
      <FormParam name="paramName1"/>
      <FormParam name="paramName2"/>
      <FormParam name="paramName3"/>
    </FormParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

উদাহরণ ৪s37

একই নামের একাধিক ফর্ম প্যারামিটার থাকলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

<AssignMessage name="copy-formparams-4">
  <Copy source="request">
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

এই উদাহরণ "f1", "f2" এবং "f3"-এর দ্বিতীয় ভ্যালু কপি করে। "f3"-এর শুধুমাত্র একটি ভ্যালু থাকলে, সেটি কপি করা হয় না।

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <FormParams> ব্যবহার করতে পারবেন:

  • HTTP ভার্ব: POST
  • মেসেজের ধরন: উত্তর
  • নিম্নলিখিতগুলির মধ্যে একটি (বা দুটিই):
    • ফর্ম ডেটা: কোনও ভ্যালু বা "" (খালি স্ট্রিং) হিসেবে সেট করুন। যেমন, curl-এর সাথে, আপনার অনুরোধে -d "" যোগ করুন।
    • Content-Length হেডার: ০-তে সেট করুন (যদি আসল অনুরোধে কোনও ডেটা না থাকে; অন্যথায়, বর্তমান দৈর্ঘ্য। যেমন, curl-এর সাথে আপনার অনুরোধে -H "Content-Length: 0" যোগ করুন।

আপনি <FormParams> কপি করলে, টার্গেট পরিষেবায় মেসেজ পাঠানোর আগে <Copy> মেসেজের Content-Type "application/x-www-form-urlencoded" হিসেবে সেট করে।

<Headers> (<Copy>-এর চাইল্ড)

<Copy> এলিমেন্টের source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা অনুরোধ বা উত্তর মেসেজ থেকে HTTP হেডার কপি করে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা অনুরোধ বা উত্তর মেসেজে পেস্ট করে।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <Header>টি এলিমেন্টের অ্যারে বা খালি অ্যারে
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট <Header>

<Headers> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs38

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Copy>
</AssignMessage>

উদাহরণ ১s39

নিম্নলিখিত উদাহরণটি অনুরোধ থেকে user-agent হেডারটি নতুন, কাস্টম অনুরোধ অবজেক্টে কপি করে:

<AssignMessage name="copy-headers-1">
  <Copy source="request">
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

উদাহরণ ২s40

সব হেডার কপি করতে, নিম্নলিখিত উদাহরণের মতো একটি খালি <Headers> এলিমেন্ট ব্যবহার করুন:

<AssignMessage name="copy-headers-2">
  <Copy source="request">
    <Headers/>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

উদাহরণ ৩s41

একই নামের একাধিক হেডার থাকলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

<AssignMessage name="copy-headers-3">
  <Copy source="request">
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

এই উদাহরণ "h1", "h2" এবং "h3"-এর দ্বিতীয় ভ্যালু কপি করে। "h3"-এর শুধুমাত্র একটি ভ্যালু থাকলে, সেটি কপি করা হয় না।

<Path> (<Copy>-এর চাইল্ড)

সোর্স অনুরোধ থেকে গন্তব্য অনুরোধে পাথ কপি করা হবে কিনা তা নির্ধারণ করে। এই এলিমেন্টের কোনও উত্তরের উপর কোনও প্রভাব নেই।

"true" হলে, এই নীতি <Copy> এলিমেন্টের source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা অনুরোধ মেসেজ থেকে পাথ কপি করে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা অনুরোধ মেসেজে পেস্ট করে।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Path> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Path>[false|true]</Path>
  </Copy>
</AssignMessage>

উদাহরণ ১s42

নিম্নলিখিত উদাহরণ থেকে বোঝা যায় যে AssignMessage নীতিকে সোর্স অনুরোধ থেকে নতুন, কাস্টম অনুরোধ অবজেক্টে পাথ কপি করতে হবে:

<AssignMessage name="copy-path-1">
  <Copy source="request">
    <Path>true</Path>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <Path> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: অনুরোধ

<Payload> (<Copy>-এর চাইল্ড)

সোর্স থেকে ডেস্টিনেশনে পেলোড কপি করা হবে কিনা তা নির্ধারণ করে। সোর্স ও ডেস্টিনেশন অনুরোধ বা উত্তর হতে পারে।

"true" হলে, এই নীতি <Copy> এলিমেন্টের source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা মেসেজ থেকে পেলোড কপি করে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা মেসেজে পেস্ট করে।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Payload> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs43

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Payload>[false|true]</Payload>
  </Copy>
</AssignMessage>

উদাহরণ ১s44

নিম্নলিখিত উদাহরণে <Payload>-কে "true" হিসেবে সেট করা হয়েছে যাতে অনুরোধের পেলোড অনুরোধ থেকে উত্তরে কপি করা হয়:

<AssignMessage name="AM-copy-payload-1">
  <Copy source="request">
    <Payload>true</Payload>
  </Copy>
  <AssignTo>response</AssignTo>
</AssignMessage>

<QueryParams> (<Copy>-এর চাইল্ড)

<Copy> এলিমেন্টের source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা অনুরোধ থেকে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা অনুরোধে কোয়েরি স্ট্রিং প্যারামিটার কপি করে। এই এলিমেন্টের কোনও উত্তরের উপর কোনও প্রভাব নেই।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <QueryParam>টি এলিমেন্টের অ্যারে বা খালি অ্যারে
পেরেন্ট এলিমেন্ট <QueryParam>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<QueryParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs45

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Copy>
</AssignMessage>

উদাহরণ ১s46

নিম্নলিখিত উদাহরণে অনুরোধ থেকে "my_param" কোয়েরি প্যারামিটার কপি করে নতুন, কাস্টম অনুরোধ অবজেক্টে পেস্ট করা হয়:

<AssignMessage name="copy-queryparams-1">
  <Copy source="request">
    <QueryParams>
      <QueryParam name="my_param"/>
    </QueryParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

উদাহরণ ২s47

নিম্নলিখিত উদাহরণে অনুরোধ থেকে সব কোয়েরি প্যারামিটার একটি নতুন, কাস্টম অনুরোধ অবজেক্টে কপি করা হয়:

<AssignMessage name="copy-queryparams-2">
  <Copy source="request">
    <QueryParams/>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

উদাহরণ ৩s48

একই নামের একাধিক কোয়েরি প্যারামিটার থাকলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

<AssignMessage name="copy-queryparams-3">
  <Copy source="request">
    <QueryParams>
      <QueryParam name="qp1"/>
      <QueryParam name="qp2"/>
      <QueryParam name="qp3.2"/>
    </QueryParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

এই উদাহরণ "qp1", "qp2" এবং "qp3"-এর দ্বিতীয় ভ্যালু কপি করে। "qp3"-এর যদি একটিই ভ্যালু থাকে, তাহলে সেটি কপি করা হয় না।

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <QueryParams> ব্যবহার করতে পারবেন:

  • HTTP ভার্ব: GET
  • মেসেজের ধরন: অনুরোধ

<ReasonPhrase> (<Copy>-এর চাইল্ড)

সোর্স রেসপন্স থেকে ডেস্টিনেশন রেসপন্সে কারণের বাক্যাংশ কপি করা হবে কিনা তা নির্ধারণ করে। এই এলিমেন্ট কোনও অনুরোধের উপর প্রভাব ফেলে না।

"true" হলে, এই নীতি ReasonPhrase থেকে উত্তর কপি করে যা <Copy> এলিমেন্টের source অ্যাট্রিবিউট থেকে উত্তর কপি করে যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়েছে।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<ReasonPhrase> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs49

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <ReasonPhrase>[false|true]</ReasonPhrase>
  </Copy>
</AssignMessage>

উদাহরণ ১s50

নিম্নলিখিত উদাহরণে <ReasonPhrase>-কে true-এ সেট করা হয়েছে। সোর্স এবং <AssignTo> এলিমেন্ট নির্দিষ্ট করা থাকলে, এটি <Copy>-কে নামযুক্ত রেসপন্স মেসেজ থেকে response অবজেক্টে কারণের শব্দগুচ্ছ কপি করতে বাধ্য করে:

<AssignMessage name="AM-copy-reasonphrase-1">
  <Copy source="serviceCalloutResponse">
    <ReasonPhrase>true</ReasonPhrase>
  </Copy>
  <AssignTo>response</AssignTo>
</AssignMessage>

আপনি <ReasonPhrase> তখনই ব্যবহার করতে পারবেন যখন সোর্স ও ডেস্টিনেশন মেসেজ Response ধরনের হবে।

<StatusCode> (<Copy>-এর চাইল্ড)

স্ট্যাটাস কোডটি সোর্স রেসপন্স থেকে ডেস্টিনেশন রেসপন্সে কপি করা হয়েছে কিনা তা নির্ধারণ করে। এই এলিমেন্ট কোনও অনুরোধের উপর প্রভাব ফেলে না।

"true" হলে, এই নীতি <Copy> এলিমেন্টের source অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা রেসপন্স মেসেজ থেকে স্ট্যাটাস কোড কপি করে <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা রেসপন্স মেসেজে পেস্ট করে।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<StatusCode> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs52

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <StatusCode>[false|true]</StatusCode>
  </Copy>
</AssignMessage>

উদাহরণ ১s53

নিচের উদাহরণে <StatusCode>-কে "true" হিসেবে সেট করা হয়েছে, যা ডিফল্ট রেসপন্স অবজেক্ট থেকে নতুন, কাস্টম রেসপন্স অবজেক্টে স্ট্যাটাস কোড কপি করে:

<AssignMessage name="copy-statuscode-1">
  <Copy source="response">
    <StatusCode>true</StatusCode>
  </Copy>
  <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo>
</AssignMessage>

আপনি <StatusCode> তখনই ব্যবহার করতে পারবেন যখন সোর্স ও ডেস্টিনেশন মেসেজ Response ধরনের হবে।

<StatusCode>-এর একটি সাধারণ ব্যবহার হল প্রক্সি রেসপন্স স্ট্যাটাস কোডকে টার্গেট থেকে প্রাপ্ত মানের থেকে আলাদা মান হিসেবে সেট করা।

<Verb> (<Copy>-এর চাইল্ড)

HTTP ভার্ব সোর্স অনুরোধ থেকে ডেস্টিনেশন অনুরোধে কপি করা হয়েছে কিনা তা নির্ধারণ করে। এই এলিমেন্টের কোনও উত্তরের উপর কোনও প্রভাব নেই।

"true" হলে, <Copy> এলিমেন্টের source অ্যাট্রিবিউটে পাওয়া ভার্বটি <AssignTo> এলিমেন্টে উল্লেখ করা অনুরোধে কপি করে।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Verb> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs54

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Verb>[false|true]</Verb>
  </Copy>
</AssignMessage>

উদাহরণ ১s55

নিম্নলিখিত উদাহরণে <Verb>-কে "true" হিসেবে সেট করা হয়েছে, যা ডিফল্ট অনুরোধ থেকে নতুন, কাস্টম অনুরোধে ভার্ব কপি করে:

<AssignMessage name="copy-verb-1">
  <Copy source="request">
    <Verb>true</Verb>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <Verb> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: অনুরোধ

<Version> (<Copy>-এর চাইল্ড)

HTTP ভার্সন সোর্স অনুরোধ থেকে ডেস্টিনেশন অনুরোধে কপি করা হয়েছে কিনা তা নির্ধারণ করে। এই এলিমেন্টের কোনও উত্তরের উপর কোনও প্রভাব নেই।

"true" হলে, <Copy> এলিমেন্টের source অ্যাট্রিবিউটে পাওয়া HTTP ভার্সনটি <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা অবজেক্টে কপি করে।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <Copy>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Version> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs56

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Version>[false|true]</Version>
  </Copy>
</AssignMessage>

উদাহরণ ১s57

নিম্নলিখিত উদাহরণে অনুরোধে <Version> "true" হিসেবে সেট করা হয়, যা ডিফল্ট অনুরোধ অবজেক্ট থেকে নতুন, কাস্টম অনুরোধ অবজেক্টে ভার্সন কপি করে:

<AssignMessage name="copy-version-1">
  <Copy source="request">
    <Version>true</Version>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <Version> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: অনুরোধ

<DisplayName>

ম্যানেজমেন্ট UI প্রক্সি এডিটরে অন্য, আরও স্বাভাবিক-শোনা নাম দিয়ে নীতি লেবেল করতে name অ্যাট্রিবিউট ছাড়াও ব্যবহার করুন।

<DisplayName> এলিমেন্ট সব নীতির ক্ষেত্রে প্রযোজ্য।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক। আপনি <DisplayName> বাদ দিলে, নীতির name অ্যাট্রিবিউটের ভ্যালু ব্যবহার করা হয়
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <PolicyElement>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<DisplayName> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

উদাহরণ

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> এলিমেন্টে কোনও অ্যাট্রিবিউট বা চাইল্ড এলিমেন্ট নেই।

<IgnoreUnresolvedVariables>

কোনও অমীমাংসিত ভেরিয়েবল পাওয়া গেলে প্রসেসিং বন্ধ হবে কিনা তা নির্ধারণ করে।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <AssignMessage>
চাইল্ড এলিমেন্ট কোনওটিই নয়

সমাধান না হওয়া ভেরিয়েবল উপেক্ষা করতে এবং প্রসেসিং চালিয়ে যেতে true-এ সেট করুন; অন্যথায় false। ডিফল্ট ভ্যালু হল false।

<IgnoreUnresolvedVariables>-কে true-এ সেট করা, <AssignMessage>-এর continueOnError-কে true-এ সেট করার থেকে আলাদা, কারণ এটি ভেরিয়েবলের ভ্যালু সেট করা ও পাওয়ার জন্য নির্দিষ্ট। আপনি continueOnError-কে true-এ সেট করলে, Edge সব সমস্যা উপেক্ষা করে, শুধু ভেরিয়েবল ব্যবহার করার সময় যেসব সমস্যা হয় সেগুলি নয়।

<IgnoreUnresolvedVariables> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs58

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <IgnoreUnresolvedVariables>[true|false]
  </IgnoreUnresolvedVariables>
</AssignMessage>

উদাহরণ ১s59

নিচে দেওয়া উদাহরণে <IgnoreUnresolvedVariables>-কে "ট্রু" হিসেবে সেট করা হয়েছে:

<AssignMessage name="AM-Set-Headers">
  <Set>
    <Headers>
      <Header name='new-header'>{possibly-defined-variable}<Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>true
  </IgnoreUnresolvedVariables>
</AssignMessage>

যেহেতু <IgnoreUnresolvedVariables>-কে true-এ সেট করা হয়েছে, তাই possibly-defined-variable ভেরিয়েবেল নির্দিষ্ট করা না থাকলে, এই নীতি কোনও ত্রুটি দেখাবে না।

<Remove>

মেসেজ থেকে হেডার, কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার এবং/অথবা মেসেজ পেলোড সরিয়ে দেয়। মেসেজটি কোনও অনুরোধ বা উত্তর হতে পারে। <AssignTo> এলিমেন্ট ব্যবহার করে কোন মেসেজের উপর <Remove> কাজ করে তা আপনি নির্দিষ্ট করেন।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type জটিল ধরন
পেরেন্ট এলিমেন্ট <AssignMessage>
চাইল্ড এলিমেন্ট <FormParams>
<Headers>
<Payload>
<QueryParams>

<Remove>-এর একটি সাধারণ ব্যবহার হল ইনকামিং অনুরোধ অবজেক্ট থেকে সংবেদনশীল তথ্য ধারণকারী একটি কোয়েরি প্যারামিটার বা হেডার মুছে ফেলা, যাতে এটি ব্যাকএন্ড সার্ভারে পাস করা এড়ানো যায়।

<Remove> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs60

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Remove>
</AssignMessage>

উদাহরণ ১s61

নিম্নলিখিত উদাহরণটি উত্তর থেকে মেসেজের বিষয়বস্তু সরিয়ে দেয়:

<AssignMessage name="AM-remove-1">
  <DisplayName>remove-1</DisplayName>
  <Remove>
    <Payload>true</Payload>
  </Remove>
  <AssignTo>response</AssignTo>
</AssignMessage>

রেসপন্স ফ্লোতে, এই নীতি রেসপন্সের বডি সরিয়ে দেয়, ক্লায়েন্টকে শুধু HTTP হেডার ফেরত দেয়।

উদাহরণ ২s62

নিম্নলিখিত উদাহরণে request অবজেক্ট থেকে সব ফর্ম প্যারামিটার এবং একটি কোয়েরি প্যারামিটার সরানো হয়:

<AssignMessage name="AM-remove-2">
  <Remove>
    <!-- Empty (<FormParams/>) removes all form parameters -->
    <FormParams/>
    <QueryParams>
      <QueryParam name="qp1"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ৩s63

নিম্নলিখিত উদাহরণটি মেসেজ অবজেক্ট থেকে সবকিছু সরিয়ে দেয়:

<AssignMessage name="AM-remove-3">
  <Remove/>
  <AssignTo>request</AssignTo>
</AssignMessage>

সাধারণত, আপনি এটি তখনই করবেন যখন আপনি মেসেজে কিছু রিপ্লেসমেন্ট ভ্যালু সেট করার জন্য <Set> এলিমেন্ট বা <Copy> এলিমেন্ট ব্যবহার করতে চলেছেন।

<FormParams> (<Remove>-এর চাইল্ড)

অনুরোধ থেকে নির্দিষ্ট ফর্ম প্যারামিটার সরিয়ে দেয়। এই এলিমেন্টের কোনও প্রভাব উত্তরে পড়ে না।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <FormParam>টি এলিমেন্টের অ্যারে বা খালি অ্যারে
পেরেন্ট এলিমেন্ট <Remove>
চাইল্ড এলিমেন্ট <FormParam>

<FormParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs64

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  </Remove>
</AssignMessage>

উদাহরণ ১s65

নিম্নলিখিত উদাহরণটি অনুরোধ থেকে তিনটি ফর্ম প্যারামিটার সরিয়ে দেয়:

<AssignMessage name="AM-remove-formparams-1">
  <Remove>
    <FormParams>
      <FormParam name="form_param_1"/>
      <FormParam name="form_param_2"/>
      <FormParam name="form_param_3"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ২s66

নিম্নলিখিত উদাহরণটি অনুরোধ থেকে সব ফর্ম প্যারামিটার সরিয়ে দেয়:

<AssignMessage name="AM-remove-formparams-2">
  <Remove>
    <FormParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ৩s67

একই নামের একাধিক ফর্ম প্যারামিটার থাকলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

<AssignMessage name="AM-remove-formparams-3">
  <Remove>
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

এই উদাহরণ "f1", "f2" এবং "f3"-এর দ্বিতীয় ভ্যালু সরিয়ে দেয়। "f3"-এ শুধু একটি ভ্যালু থাকলে, সেটি সরানো হয় না।

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <FormParams> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: অনুরোধ
  • Content-Type: "application/x-www-form-urlencoded"

<Headers> (<Remove>-এর চাইল্ড)

অনুরোধ বা উত্তর থেকে নির্দিষ্ট HTTP হেডার সরিয়ে দেয়, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <Header>টি এলিমেন্টের অ্যারে বা খালি অ্যারে
পেরেন্ট এলিমেন্ট <Remove>
চাইল্ড এলিমেন্ট <Header>

<Headers> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Remove>
</AssignMessage>

উদাহরণ ১s68

নিম্নলিখিত উদাহরণটি অনুরোধ থেকে user-agent হেডার সরিয়ে দেয়:

<AssignMessage name="AM-remove-one-header">
  <Remove>
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ২s69

নিম্নলিখিত উদাহরণটি অনুরোধ থেকে সব হেডার সরিয়ে দেয়:

<AssignMessage name="AM-remove-all-headers">
  <Remove>
    <Headers/>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ৩s70

একই নামের একাধিক হেডার থাকলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

<AssignMessage name="AM-remove-headers-3">
  <Remove>
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

এই উদাহরণে অনুরোধ থেকে "h1", "h2" এবং "h3"-এর দ্বিতীয় ভ্যালু সরিয়ে দেওয়া হয়। "h3"-এ শুধুমাত্র একটি ভ্যালু থাকলে, সেটি সরানো হয় না।

<Payload> (<Remove>-এর সন্তান)

<Remove> অনুরোধ বা উত্তরে পেলোড মুছে দেয় কিনা তা নির্ধারণ করে, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়। পে-লোড মুছে ফেলতে "true" হিসেবে সেট করুন; অন্যথায় "false" হিসেবে সেট করুন। ডিফল্ট ভ্যালু হল "false"।

ডিফল্ট ভ্যালু মিথ্যা
আবশ্যক? ঐচ্ছিক
Type বুলিয়ান
পেরেন্ট এলিমেন্ট <Remove>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Payload> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <Payload>[false|true]</Payload>
  </Remove>
</AssignMessage>

উদাহরণ ১s71

নিম্নলিখিত উদাহরণে <Payload>-কে "ট্রু" হিসেবে সেট করা হয়েছে যাতে অনুরোধের পেলোড মুছে যায়:

<AssignMessage name="AM-remove-payload-1">
  <Remove>
    <Payload>true</Payload>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

<QueryParams> (<Remove>-এর সন্তান)

অনুরোধ থেকে নির্দিষ্ট করা কোয়েরি প্যারামিটার সরিয়ে দেয়। এই এলিমেন্টের কোনও প্রভাব উত্তরে পড়ে না।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <QueryParam>টি এলিমেন্টের অ্যারে বা খালি অ্যারে
পেরেন্ট এলিমেন্ট <Remove>
চাইল্ড এলিমেন্ট <QueryParam>

<QueryParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs72

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Remove>
</AssignMessage>

উদাহরণ ১s73

নিম্নলিখিত উদাহরণে অনুরোধ থেকে একটি কোয়েরি প্যারামিটার সরানো হয়েছে:

<AssignMessage name="AM-remove-queryparams-1">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ২s74

নিম্নলিখিত উদাহরণটি অনুরোধ থেকে সব কোয়েরি প্যারামিটার সরিয়ে দেয়:

<AssignMessage name="AM-remove-queryparams-2">
  <Remove>
      <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ৩s75

একই নামের একাধিক কোয়েরি প্যারামিটার থাকলে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করুন:

<AssignMessage name="AM-remove-queryparams-3">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
        <QueryParam name="qp2"/>
        <QueryParam name="qp3.2"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

এই উদাহরণে অনুরোধ থেকে "qp1", "qp2" এবং "qp3"-এর দ্বিতীয় ভ্যালু সরিয়ে দেওয়া হয়। "qp3"-এর শুধুমাত্র একটি ভ্যালু থাকলে, সেটি সরানো হয় না।

উদাহরণ ৪s76

নিম্নলিখিত উদাহরণে অনুরোধ থেকে apikey কোয়েরি প্যারামিটার সরিয়ে দেওয়া হয়:

<AssignMessage name="AM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <QueryParams> ব্যবহার করতে পারবেন:

  • HTTP ভার্ব: GET
  • মেসেজের ধরন: অনুরোধ

<Set>

অনুরোধ বা উত্তর মেসেজে তথ্য সেট করে, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়। <Set> আসল মেসেজে আগে থেকেই থাকা হেডার বা কোয়েরি বা ফর্ম প্যারামিটার ওভাররাইট করে। HTTP মেসেজে হেডার, কোয়েরি ও ফর্ম প্যারামিটারে একাধিক ভ্যালু থাকতে পারে। হেডার বা প্যারামিটারের জন্য অতিরিক্ত ভ্যালু যোগ করতে, পরিবর্তে <Add> এলিমেন্ট ব্যবহার করুন।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type জটিল ধরন
পেরেন্ট এলিমেন্ট <AssignMessage>
চাইল্ড এলিমেন্ট <FormParams>
<Headers>
<Payload>
<Path>
<QueryParams>
<ReasonPhrase>
<StatusCode>
<Verb>
<Version>

<Set> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>path</Path>
    <Payload contentType="content_type" variablePrefix="prefix"
        variableSuffix="suffix">new_payload</Payload>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase>
    <StatusCode>HTTP_status_code or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</AssignMessage>

উদাহরণ ১s77

নিম্নলিখিত উদাহরণে একটি নির্দিষ্ট হেডার সেট করা হয়েছে। অনুরোধের ফ্লোতে এই নীতি অ্যাটাচ করা হলে, এটি আপস্ট্রিম সিস্টেমকে একটি অতিরিক্ত হেডার গ্রহণ করার অনুমতি দেবে যা আসল ইনবাউন্ড অনুরোধে অন্তর্ভুক্ত ছিল না।

<AssignMessage name="AM-Set-Header">
  <Set>
    <Headers>
        <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header>
    </Headers>
  </Set>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ২s78

নিম্নলিখিত উদাহরণটি একটি উত্তরের জন্য পেলোড এবং Content-Type হেডার ওভাররাইট করে।

<AssignMessage name="AM-Overwrite-Payload">
  <Set>
    <Payload contentType="application/json">{ "status" : 42 }</Payload>
  </Set>
  <AssignTo>response</AssignTo>
</AssignMessage>

<FormParams> (<Set>-এর চাইল্ড)

অনুরোধে আগে থেকে থাকা ফর্ম প্যারামিটার ওভাররাইট করে এবং আপনি এই এলিমেন্টের সাথে যে নতুন মান উল্লেখ করেন তার সাথে সেগুলি প্রতিস্থাপন করে। এই এলিমেন্টের কোনও উত্তরের উপর কোনও প্রভাব নেই।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <FormParam>টি এলিমেন্টের অ্যারে
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট <FormParam>

<FormParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs79

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  </Set>
</AssignMessage>

উদাহরণ ১s80

নিম্নলিখিত উদাহরণে, নতুন, কাস্টম অনুরোধে "myparam" নামক ফর্ম প্যারামিটারকে request.header.myparam ভেরিয়েবলের ভ্যালুতে সেট করা হয়:

<AssignMessage name="AM-set-formparams-1">
  <Set>
    <FormParams>
      <FormParam name="myparam">{request.header.myparam}</FormParam>
    </FormParams>
  </Set>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <FormParams> ব্যবহার করতে পারবেন:

  • HTTP ভার্ব: POST
  • মেসেজের ধরন: অনুরোধ

আপনার নীতিতে (<Add><FormParams/></Add>) ফাঁকা ফর্ম প্যারামিটার নির্দিষ্ট করলে, নীতিটি কোনও ফর্ম প্যারামিটার যোগ করে না। এটি <FormParams> বাদ দেওয়ার মতোই।

<Set> মেসেজের Content-Type পরিবর্তন করে "application/x-www-form-urlencoded" করে দেয় এবং তারপর টার্গেট এন্ডপয়েন্টে পাঠায়।

<Headers> (<Set>-এর চাইল্ড)

অনুরোধ বা উত্তরে আগে থেকে থাকা HTTP হেডার ওভাররাইট করে, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <Header>টি এলিমেন্টের অ্যারে
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট <Header>

<Headers> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs81

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Set>
</AssignMessage>

উদাহরণ ১s81

নিম্নলিখিত উদাহরণটি x-ratelimit-remaining হেডারকে ratelimit.Quota-1.available.count ভেরিয়েবলের ভ্যালুতে সেট করে:

<AssignMessage name="AM-Set-RateLimit-Header">
  <Set>
    <Headers>
      <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header>
    </Headers>
  </Set>
  <AssignTo>response</AssignTo>
</AssignMessage>

আপনার নীতিতে (<Set><Headers/></Set>) খালি হেডার উল্লেখ করলে, নীতি কোনও হেডার সেট করে না। এটি <Headers> বাদ দেওয়ার মতোই কাজ করবে।

<Path> (<Set>-এর চাইল্ড)

<Payload> (<Set>-এর চাইল্ড)

অনুরোধ বা উত্তরের জন্য মেসেজের বিষয়বস্তু নির্ধারণ করে, যা <AssignTo> এলিমেন্ট দ্বারা নির্দিষ্ট করা হয়। পেলোড যেকোনও সঠিক কন্টেন্টের ধরন হতে পারে, যেমন প্লেন টেক্সট, JSON বা XML।

ডিফল্ট ভ্যালু খালি স্ট্রিং
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Payload> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs82

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Payload contentType="content_type" variablePrefix="prefix"
        variableSuffix="suffix">new_payload</Payload>
  </Set>
</AssignMessage>

উদাহরণ ১s83

নিম্নলিখিত উদাহরণটি একটি প্লেন টেক্সট পে-লোড সেট করে:

<AssignMessage name="set-payload-1">
  <Set>
    <Payload contentType="text/plain">42</Payload>
  </Set>
</AssignMessage>

উদাহরণ ২s84

নিম্নলিখিত উদাহরণটি একটি JSON পেলোড সেট করে:

<AssignMessage name="set-payload-2">
  <Set>
    <Payload contentType="application/json">
      {"name":"foo", "type":"bar"}
    </Payload>
  </Set>
</AssignMessage>

উদাহরণ ৩s85

নিম্নলিখিত উদাহরণে, ভেরিয়েবেলের নাম কার্লি ব্র্যাকেটে রেখে পেলোডে ভেরিয়েবেলের ভ্যালু যোগ করা হয়েছে:

<AssignMessage name="set-payload-3">
  <Set>
    <Payload contentType="application/json">
      {"name":"foo", "type":"{variable_name}"}
    </Payload>
  </Set>
</AssignMessage>

Apigee-এর আগের ভার্সনে, আপনি JSON পেলোডের মধ্যে ভেরিয়েবল রেফারেন্স বোঝাতে কার্লি ব্র্যাকেট ব্যবহার করতে পারতেন না। সেইসব রিলিজে, আপনাকে ডিলিমিটার অক্ষর নির্দিষ্ট করতে variablePrefix এবং variableSuffix অ্যাট্রিবিউট ব্যবহার করতে হবে এবং ভেরিয়েবল নাম র‍্যাপ করতে সেগুলি ব্যবহার করতে হবে, যেমন:

<AssignMessage name="set-payload-3b">
  <Set>
    <Payload contentType="application/json" variablePrefix="@" variableSuffix="#">
      {"name":"foo", "type":"@variable_name#"}
    </Payload>
  </Set>
</AssignMessage>

এই পুরনো সিনট্যাক্স এখনও কাজ করে।

উদাহরণ 4s86

<Payload>-এর কন্টেন্ট মেসেজ টেমপ্লেট হিসেবে বিবেচনা করা হয়। এর অর্থ হল, AssignMessage নীতি রানটাইমে রেফারেন্স করা ভেরিয়েবলের ভ্যালু দিয়ে কার্লি ব্র্যাকেটে র‍্যাপ করা ভেরিয়েবলকে প্রতিস্থাপন করে।

নিম্নলিখিত উদাহরণে পেলোডের অংশকে ভেরিয়েবল ভ্যালুতে সেট করতে কার্লি ব্র্যাকেট সিনট্যাক্স ব্যবহার করা হয়েছে:

<AssignMessage name="set-payload-4">
  <Set>
    <Payload contentType="text/xml">
      <root>
        <e1>sunday</e1>
        <e2>funday</e2>
        <e3>{var1}</e3>
      </root>
    </Payload>
  </Set>
</AssignMessage>

নিম্নলিখিত সারণীতে <Payload>-এর অ্যাট্রিবিউট বর্ণনা করা আছে:

অ্যাট্রিবিউট বিবরণ উপস্থিতি ধরন
contentType

উল্লেখ করা থাকলে, contentType-এর ভ্যালু Content-Type HTTP হেডারে অ্যাসাইন করা হয়।

ঐচ্ছিক স্ট্রিং
variablePrefix ঐচ্ছিকভাবে ফ্লো ভেরিয়েবলে লিডিং ডিলিমিটার নির্দিষ্ট করে। ডিফল্ট হিসেবে "{" সেট করা থাকে। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন। ঐচ্ছিক Char
variableSuffix ফ্লো ভেরিয়েবলে ট্রেলিং ডিলিমিটার নির্দিষ্ট করে। ডিফল্ট হিসেবে "}" সেট করা থাকে। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন। ঐচ্ছিক Char

<QueryParams> (<Set>-এর চাইল্ড)

অনুরোধে আগে থেকে থাকা কোয়েরি প্যারামিটারকে নতুন ভ্যালু দিয়ে ওভাররাইট করে। এই এলিমেন্টের কোনও প্রভাব উত্তরের উপর পড়ে না।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type <QueryParam>টি এলিমেন্টের অ্যারে
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট <QueryParam>

<QueryParams> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs87

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Set>
</AssignMessage>

উদাহরণ ১s88

নিম্নলিখিত উদাহরণে "address" কোয়েরি প্যারামিটারকে request.header.address ভেরিয়েবেলের ভ্যালুতে সেট করা হয়েছে:

<AssignMessage name="AM-set-queryparams-1">  <Set>
    <QueryParams>
      <QueryParam name="address">{request.header.address}</QueryParam>
    </QueryParams>
  </Set>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <QueryParams> ব্যবহার করতে পারবেন:

  • HTTP ভার্ব: GET
  • মেসেজের ধরন: অনুরোধ

আপনার নীতিতে খালি কোয়েরি প্যারামিটার নির্ধারণ করলে (<Set><QueryParams/></Set>), নীতিটি কোনও কোয়েরি প্যারামিটার সেট করে না। এটি <QueryParams> বাদ দেওয়ার মতোই।

<ReasonPhrase> (<Set>-এর চাইল্ড)

উত্তরে কারণের বাক্যাংশ সেট করে। এটি সাধারণত <StatusCode>-এর সাথে ডিবাগ করার জন্য করা হয়। এই এলিমেন্টের কোনও অনুরোধের উপর কোনও প্রভাব নেই।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<ReasonPhrase> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs89

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase>
  </Set>
</AssignMessage>

উদাহরণ ১s90

নিম্নলিখিত উদাহরণে একটি সহজ কারণের বাক্যাংশ সংজ্ঞায়িত করা হয়েছে:

<AssignMessage name="set-reasonphrase-1">
  <Set>
    <ReasonPhrase>Bad medicine</ReasonPhrase>
  </Set>
  <AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>

উদাহরণ ২s91

<ReasonPhrase>-এর কন্টেন্ট মেসেজ টেমপ্লেট হিসেবে বিবেচনা করা হয়। এর অর্থ হল কার্লি ব্র্যাকেটের মধ্যে থাকা ভেরিয়েবেলের নাম রানটাইমে রেফারেন্স করা ভেরিয়েবেলের মান দিয়ে পরিবর্তন করা হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<AssignMessage name="AM-set-reasonphrase-2">
  <Set>
    <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase>
  </Set>
  <AssignTo>response</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <ReasonPhrase> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: উত্তর

<StatusCode> (<Set>-এর চাইল্ড)

উত্তরে স্ট্যাটাস কোড সেট করে। এই এলিমেন্ট কোনও অনুরোধের উপর প্রভাব ফেলে না।

ডিফল্ট ভ্যালু '২০০' (যখন <AssignTo>-এর createNew অ্যাট্রিবিউট 'true' হিসেবে সেট করা থাকে)
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং বা variable
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<StatusCode> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs92

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <StatusCode>HTTP_status_code or {variable}</StatusCode>
  </Set>
</AssignMessage>

নমুনা ১

নিম্নলিখিত উদাহরণটি একটি সাধারণ স্ট্যাটাস কোড সেট করে:

<AssignMessage name="AM-set-statuscode-404">
  <Set>
    <StatusCode>404</StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</AssignMessage>

নমুনা ২

<StatusCode>-এর কন্টেন্ট মেসেজ টেমপ্লেট হিসেবে বিবেচনা করা হয়। এর অর্থ হল, কার্লি ব্র্যাকেটের মধ্যে থাকা ভেরিয়েবেলের নাম রানটাইমে রেফারেন্স করা ভেরিয়েবেলের মান দিয়ে পরিবর্তন করা হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<AssignMessage name="set-statuscode-2">
  <Set>
    <StatusCode>{calloutresponse.status.code}</StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <StatusCode> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: উত্তর

<Verb> (<Set>-এর চাইল্ড)

অনুরোধে HTTP ভার্ব সেট করে। এই এলিমেন্টের কোনও উত্তরের উপর কোনও প্রভাব নেই।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং বা variable
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Verb> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
  </Set>
</AssignMessage>

উদাহরণ ১s93

নিম্নলিখিত উদাহরণটি অনুরোধে একটি সাধারণ ভার্ব সেট করে:

<AssignMessage name="AM-set-verb-1">
  <Set>
    <Verb>POST</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</AssignMessage>

উদাহরণ ২s94

<Verb>-এর কন্টেন্ট মেসেজ টেমপ্লেট হিসেবে বিবেচনা করা হয়। এর অর্থ হল, কার্লি ব্র্যাকেটের মধ্যে থাকা ভেরিয়েবেলের নাম রানটাইমে রেফারেন্স করা ভেরিয়েবেলের ভ্যালু দিয়ে পরিবর্তন করা হবে।

নিম্নলিখিত উদাহরণে একটি ক্রিয়াপদ পূরণ করার জন্য ভেরিয়েবল ব্যবহার করা হয়েছে:

<AssignMessage name="AM-set-verb-to-dynamic-value">
  <Set>
    <Verb>{my_variable}</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</AssignMessage>

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <Verb> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: অনুরোধ

<Version> (<Set>-এর চাইল্ড)

অনুরোধে HTTP ভার্সন সেট করে। এই এলিমেন্টের কোনও উত্তরের উপর কোনও প্রভাব নেই।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং বা variable
পেরেন্ট এলিমেন্ট <Set>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Version> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্সs95

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</AssignMessage>

উদাহরণ ১s96

নিম্নলিখিত উদাহরণে ভার্সন নম্বর "1.1" হিসেবে সেট করা হয়েছে:

<AssignMessage name="AM-set-version-1">
  <Set>
    <Version>1.1</Version>
  </Set>
 </AssignMessage>

নমুনা ২

ভার্সন নম্বর সেট করতে নিম্নলিখিত উদাহরণে কার্লি ব্র্যাকেটের মধ্যে ভেরিয়েবল ব্যবহার করা হয়েছে:

<AssignMessage name="AM-set-version-2">
  <Set>
    <Version>{my_version}</Version>
  </Set>
  <AssignTo>request</AssignTo>
</AssignMessage>

<Version>-এর কন্টেন্ট মেসেজ টেমপ্লেট হিসেবে বিবেচনা করা হয়। এর অর্থ হল, কার্লি ব্র্যাকেটের মধ্যে থাকা ভেরিয়েবলের নাম রানটাইমে রেফারেন্স করা ভেরিয়েবলের ভ্যালু দিয়ে পরিবর্তন করা হবে।

নিচে উল্লেখ করা শর্ত পূরণ হলে তবেই আপনি <Version> ব্যবহার করতে পারবেন:

  • মেসেজের ধরন: অনুরোধ

কাস্টম অনুরোধ মেসেজ তৈরি করুন

কাস্টম অনুরোধ মেসেজ তৈরি করতে আপনি AssignMessage নীতি ব্যবহার করতে পারেন। কাস্টম অনুরোধ তৈরি করার পরে, আপনি এটি নিম্নলিখিত উপায়ে ব্যবহার করতে পারবেন:

  • অন্যান্য নীতিতে এর ভেরিয়েবল অ্যাক্সেস করুন
  • এটি কোনও এক্সটার্নাল পরিষেবায় পাস করে

কাস্টম অনুরোধ মেসেজ তৈরি করতে, আপনার AssignMessage নীতিতে <AssignTo> এলিমেন্ট ব্যবহার করুন নীতি। createNew-কে "ট্রু" হিসেবে সেট করুন এবং এলিমেন্টের বডিতে নতুন মেসেজের নাম নির্দিষ্ট করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<AssignMessage name="AM-assignto-2"> 
  <AssignTo createNew="true" transport="http" type="request">NameOfNewMessage</AssignTo> 
</AssignMessage>

ডিফল্ট হিসেবে, Edge কাস্টম অনুরোধ মেসেজের সাথে কিছু করে না। এটি তৈরি করার পরে, Edge আসল অনুরোধের সাথে ফ্লো চালিয়ে যাবে। কাস্টম অনুরোধ ব্যবহার করতে, আপনার প্রক্সিতে ServiceCallout নীতির মতো একটি নীতি যোগ করুন যা কাস্টম অনুরোধটি একটি বাহ্যিক পরিষেবাতে পাঠাতে পারে।

নিম্নলিখিত উদাহরণগুলি কাস্টম অনুরোধ মেসেজ তৈরি করে:

উদাহরণ ১s97

নিম্নলিখিত উদাহরণটি অ্যাসাইন মেসেজ সহ একটি কাস্টম অনুরোধ অবজেক্ট তৈরি করে:

<AssignMessage name="AssignMessage-3">
  <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo>
  <Copy>
    <Headers>
     <Header name="user-agent"/>
    </Headers>
  </Copy>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.addy}</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <IgnoreUnresolvedVariables>false
  </IgnoreUnresolvedVariables>
</AssignMessage>

এই উদাহরণ:

  • "MyCustomRequest" নামে একটি নতুন অনুরোধ মেসেজ অবজেক্ট তৈরি করে।
  • MyCustomRequest-এ, এই নীতি:
    • ইনকামিং অনুরোধ থেকে নতুন মেসেজে user-agent HTTP হেডারের ভ্যালু কপি করে। যেহেতু <Copy> user-agent ফ্লো ভেরিয়েবলের জন্য একটি অ্যাবসোলিউট রেফারেন্স ব্যবহার করে, তাই <Copy>-এ source অ্যাট্রিবিউট নির্দিষ্ট করার প্রয়োজন নেই।
    • কাস্টম মেসেজে address কোয়েরি প্যারামিটারকে ইনকামিং অনুরোধের addy কোয়েরি প্যারামিটারের ভ্যালুতে সেট করে।
    • HTTP ভার্ব GET-এ সেট করে।
  • "false" হিসেবে <IgnoreUnresolvedVariables> সেট করে। <IgnoreUnresolvedVariables> "false" হলে, নীতিটি যোগ করার চেষ্টা করে এমন ভেরিয়েবলের মধ্যে একটি যদি না থাকে, তাহলে Edge API ফ্লোতে প্রসেসিং বন্ধ করে দেবে।

উদাহরণ ২s98

Assign Message-এর মাধ্যমে কীভাবে কাস্টম অনুরোধ অবজেক্ট তৈরি করতে হয় তার আরেকটি উদাহরণ এখানে দেওয়া হল:

<AssignMessage name="AssignMessage-2">
  <AssignTo createNew="true" type="request">partner.request</AssignTo>
  <Set>
    <Verb>POST</Verb>
    <Payload contentType="text/xml">
      <request><operation>105</operation></request>
    </Payload>
  </Set>
</AssignMessage>

এই উদাহরণ "partner.request" নামে একটি নতুন কাস্টম অনুরোধ তৈরি করে। তারপর এটি নতুন অনুরোধে <Verb> এবং <Payload> সেট করে।

আপনি অন্য AssignMessage নীতিতে কাস্টম অনুরোধ মেসেজ অ্যাক্সেস করতে পারবেন যা ফ্লোতে পরে ঘটে। নিম্নলিখিত উদাহরণটি কাস্টম অনুরোধ মেসেজের user-agent হেডারের মান পায়:

<AssignMessage name="custom-request-1-access">
  <DisplayName>custom-request-1-access</DisplayName>
  <AssignTo>partner.request</AssignTo>
  <Set>
    <Headers>
      <Header name="user-agentCopyCustomRequest">{MyCustomRequest.header.user-agent}</Header>
    </Headers>
  </Set>
</AssignMessage>

ভিডিও

AssignMessage নীতি সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিওগুলি দেখুন।

ভিডিও বিবরণ
মেসেজ সংক্রান্ত নীতি কেন অ্যাসাইন করবেন? ব্যাকএন্ড কোড পরিবর্তন না করেই API অনুরোধ বা উত্তর পরিবর্তন করতে AssignMessage নীতি ব্যবহার করার সুবিধা সম্পর্কে জানুন।
AssignMessage নীতি ব্যবহার করে API এলিমেন্ট কপি করুন API অনুরোধ বা উত্তর থেকে এলিমেন্ট কপি করুন এবং AssignMessage নীতি ব্যবহার করে নতুন অনুরোধ বা উত্তর অবজেক্ট তৈরি করুন।
AssignMessage নীতি ব্যবহার করে API এলিমেন্ট সরানো AssignMessage নীতি ব্যবহার করে টার্গেট ব্যাকএন্ডে পৌঁছানোর আগে API এলিমেন্ট সরিয়ে দিন এবং API পরিবর্তন করুন।
AssignMessage নীতি ব্যবহার করে API এলিমেন্ট যোগ ও সেট করা AssignMessage নীতি ব্যবহার করে কোয়েরি প্যারামিটার, হেডার, ফর্ম প্যারামিটার বা পেলোড যোগ করার মাধ্যমে API অনুরোধ বা উত্তর পরিবর্তন করুন।
AssignMessage নীতি ব্যবহার করে কাস্টম ভেরিয়েবল তৈরি করুন AssignMessage নীতি ব্যবহার করে কাস্টম ফ্লো ভেরিয়েবল সেট করুন এবং API প্রক্সিতে অন্যান্য নীতিতে ভেরিয়েবল ব্যবহার করুন।
AssignMessage নীতি ব্যবহার করে নতুন অনুরোধ বা উত্তর অবজেক্ট তৈরি করুন API রানটাইমে AssignMessage নীতি ব্যবহার করে নতুন API অনুরোধ বা উত্তর অবজেক্ট তৈরি করুন।
AssignMessage নীতি ব্যবহার করে মক API তৈরি করুন রেসপন্স ফ্লোতে AssignMessage নীতি যোগ করে একটি সহজ মক REST API তৈরি করুন।
AssignMessage নীতি ব্যবহার করে পেলোড সেট বা পরিবর্তন করুন API রানটাইমে AssignMessage নীতি ব্যবহার করে SOAP পেলোড সেট করার মাধ্যমে REST অনুরোধকে SOAP অনুরোধে কনভার্ট করুন।

সমস্যার কোড

এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

সমস্যার কোড HTTP স্ট্যাটাস কারণ এর সমাধান করুন
steps.assignmessage.SetVariableFailed 500 নীতিটি কোনও ভেরিয়েবল সেট করতে পারেনি। সমাধান না হওয়া ভেরিয়েবলের নামের জন্য ফল্ট স্ট্রিং দেখুন।
steps.assignmessage.VariableOfNonMsgType 500

<Copy> এলিমেন্টের source অ্যাট্রিবিউট এমন ভেরিয়েবলে সেট করা থাকলে এই সমস্যা হয় যা মেসেজ টাইপের নয়।

মেসেজ টাইপ ভেরিয়েবল সম্পূর্ণ HTTP অনুরোধ ও উত্তরকে উপস্থাপন করে। বিল্ট-ইন Edge ফ্লো ভেরিয়েবল request, response ও message হল মেসেজ ধরনের। মেসেজ ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।

steps.assignmessage.UnresolvedVariable 500

Assign Message নীতিতে উল্লেখ করা কোনও ভেরিয়েবল যদি:

  • আউট-অফ-স্কোপ (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হচ্ছে সেখানে উপলভ্য নয়)
  • অথবা
  • সমাধান করা যাচ্ছে না (সংজ্ঞায়িত করা হয়নি)

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

সমস্যার নাম কারণ এর সমাধান করুন
InvalidIndex Assign Message নীতির <Copy> এবং/অথবা <Remove> এলিমেন্টে নির্দিষ্ট করা ইন্ডেক্স ০ বা নেগেটিভ সংখ্যা হলে, API প্রক্সি ডেপ্লয় করা যায় না।
InvalidVariableName চাইল্ড এলিমেন্ট <Name> খালি থাকলে বা <AssignVariable> এলিমেন্টে উল্লেখ করা না থাকলে, API প্রক্সি ডেপ্লয় করা যায় না, কারণ কোনও সঠিক ভেরিয়েবল নাম নেই যেখানে কোনও ভ্যালু অ্যাসাইন করা যায়। ভেরিয়েবলের সঠিক নাম লিখতে হবে।
InvalidPayload নীতিতে উল্লেখ করা পেলোড সঠিক নয়।

ফল্ট ভেরিয়েবল

এই নীতি রানটাইমে কোনও সমস্যা ট্রিগার করলে, এইসব ভেরিয়েবল সেট করা হয়। আরও তথ্যের জন্য, নীতি সংক্রান্ত সমস্যার ব্যাপারে আপনার কী জানা প্রয়োজন দেখুন।

ভেরিয়েবল কোথায় উদাহরণ
fault.name="fault_name" fault_name হল সমস্যার নাম, যা উপরে দেওয়া রানটাইম সংক্রান্ত সমস্যা সারণীতে তালিকাভুক্ত করা আছে। ফল্ট কোডের শেষ অংশটি হল ফল্টের নাম। fault.name Matches "UnresolvedVariable"
assignmessage.policy_name.failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। assignmessage.AM-SetResponse.failed = true

সমস্যার উত্তরের উদাহরণ

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.assignmessage.VariableOfNonMsgType"
      },
      "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message"
   }
}

ভুল নিয়মের উদাহরণ

    <FaultRule name="Assign Message Faults">    <Step>
        <Name>AM-CustomNonMessageTypeErrorResponse</Name>
        <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition>
    </Step>
    <Step>
        <Name>AM-CustomSetVariableErrorResponse</Name>
        <Condition>(fault.name = "SetVariableFailed")</Condition>
    </Step>
    <Condition>(assignmessage.failed = true) </Condition>
</FaultRule>

স্কিমা

প্রতিটি নীতির ধরন XML স্কিমা (.xsd) দ্বারা সংজ্ঞায়িত করা হয়। রেফারেন্সের জন্য, নীতি স্কিমা GitHub-এ উপলভ্য।

সম্পর্কিত বিষয়

AssignMessage নীতির ওয়ার্কিং স্যাম্পেল API Platform স্যাম্পেল-এ উপলভ্য।

ProxyEndpoint থেকে target.url কীভাবে ওভাররাইড করতে হয় তার আরও উন্নত উদাহরণের জন্য, এই Apigee কমিউনিটি নিবন্ধ দেখুন।

ServiceCallout নীতিতে "সেট পাথ" কীভাবে কাজ করে তা দেখতে, Apigee GitHub স্যাম্পেলে এই করে শেখার উদাহরণ দেখুন। শুধু রিপোজিটরি ক্লোন করুন এবং সেই বিষয়ের নির্দেশাবলী অনুসরণ করুন। উদাহরণটি অনুরোধের পাথ সেট করতে AssignMessage নীতি ব্যবহার করে, তারপর একটি বাহ্যিক পরিষেবাতে অনুরোধ করতে একটি পরিষেবা কলআউট নীতি ব্যবহার করে।