नमस्कार

हिंदी भाषा के इस लेख में आपका स्वागत है, आपके प्रतिक्रिया का हमें इंतेज़ार रहेगा और हम आशा करते है की यह लेख आपके लिए उपयोगी साबित होगी।



Credits

Translated from: Azure Logic Apps: Calling Azure Functions inside Logic Apps
Author: 

परिचय

मेरे पिछले लेख में मैं एक बुनियादी गतिशील नमस्ते दुनिया तर्क अनुप्रयोग बनाने के लिए एक Azure फ़ंक्शन को कॉल करने के लिए कैसेसमझा, यह तर्क Apps अंदर Azure कार्य एकीकरण के लिए एक सरल परिचय था। हालांकि, वहाँ की तरह लेख में पता नहीं था कि कई अन्य परिदृश्य हैं:

  • कैसे आप एक Azure फ़ंक्शन के इनपुट भेज सकते हैं?
  • "जटिल" और सरल के साथ सौदा करने के लिए कैसे outputs से Azure समारोह?
  • Azure कार्यों का किस प्रकार समर्थित हैं?
  • और इतने पर।

इस आलेख में हम इन विषयों में से कुछ को गहरा करने और का उपयोग करने के लिए आप शुरू के लिए आप कुछ युक्तियाँ और चालें प्रदान करने का प्रयास करेगा Azure कार्य   पर अपने तर्क Apps.

Azure कार्यों का किस प्रकार समर्थित हैं?

नीला कार्यों तुम एक काम करता है, बनाने के लिए BlobTrigger (c# और नोड), खाली (c# और नोड), EventHubTrigger (c# और नोड), जेनेरिक WebHook (c# और नोड) के लिए... HttpTrigger (c# और नोड) से टेम्पलेट्स विकल्प की एक किस्म प्रदान करता है

बावजूद यह सब प्रस्तुत करते हैं, इस समय (Azure पर सब कुछ कर सकते हैं विकसित और तेजी से बदल) विविध, केवल समर्थित Azure कार्य आप अपने तर्क क्षुधा के अंदर कॉल कर सकते हैं कर रहे हैं:

  • WebHook नोड जे एस फ़ंक्शंस
  • या WebHook C# फ़ंक्शंस

कैसे हम एक Azure फ़ंक्शन के इनपुट भेज सकते हैं?

थोड़ी देर के बाद बहुत समझने की क्या ज़रूरत है करने के लिए आसान है एक Azure समारोह, हालांकि, प्रतिक्रिया आउटपुट या आउटपुट, के लिए उपयोग करने के लिए जानकारी भेजें और उन्हें में क्रमिक कनेक्टर्स का उपयोग करने के लिए कुछ चुनौतियों ला सकते हैं।

चलो इन चुनौतियों में से कुछ रहस्यमय नहीं रखना करने के लिए प्रयास करें आदेश के लिए कुछ बुनियादी नमूने बनाएँ, और इन नमूनों के लिए हम WebHook नोड जे एस फ़ंक्शन का उपयोग किया जाएगा।

एक महत्वपूर्ण बात आपको पता होना चाहिए कि, तर्क Apps के भीतर है, तुम हमेशा एक मान्य JSON संदेश किसी Webbook फ़ंक्शन के इनपुट के रूप में भेजने के लिए की जरूरत है।

खाली एक Azure फ़ंक्शन के इनपुट भेजने

अपने समारोह वास्तव में किसी भी इनपुट के लिए की जरूरत नहीं है, तो आप अभी भी एक वैध JSON संदेश भेजने के लिए की आवश्यकता होगी, लेकिन कोई भी मान जो हम खर्च अनावश्यक है, क्योंकि यहाँ चाल एक खाली JSON संदेश भेजने के लिए है:

{}

नोट: दोहरे उद्धरण चिह्नों के बिना

यदि हम ऐसा नहीं है और इनपुट पेलोड ऑब्जेक्ट को रिक्त छोड़ दें या "" तर्क अनुप्रयोग को निम्न त्रुटि के साथ विफल हो जाएगा:

"WebHook अनुरोध एक मुख्य निकाय के रूप में JSON स्वरूपित होना चाहिए."

एक Azure फ़ंक्शन के इनपुट भेजने

आदानों Azure हमें कार्य करने के लिए भेजने के लिए, उदाहरण के लिए, मैन्युअल रूप से हमारे JSON संदेश के रूप में कॉन्फ़िगर करें फ़ंक्शन आदानों कक्ष के भीतर "इनपुट पेलोड ऑब्जेक्ट" संपत्ति पर बनाएँ। चलो एक उदाहरण को देखो:

  • हम तर्क App hashtag '#LogicApps' युक्त एक नया कलरव के लिए लग रहा है, में एक "चहचहाना-एक नया कलरव प्रकट होता है, जब" ट्रिगर जोड़ देगा
    • के बाद से वे लगातार इस हैशटैग के साथ tweets उभर रहे हैं गति, खातिर मैं hashtag '#nodejs' (है कि आप कुछ चित्रों पर देख सकते हैं) का इस्तेमाल किया
  • उसके बाद हम "द्वारा Tweeted" और 'ट्वीट पाठ' हमारे Azure फ़ंक्शन के लिए, जानकारी के रूप में भेजने के लिए चाहते हैं चलो उपेक्षा अब क्या कार्य करता है के लिए, फ़ंक्शन निम्न JSON स्वरूप प्राप्त करने के लिए की जरूरत है कि अब के लिए महत्वपूर्ण है।
{   
  "Tweet": {   
    "by" "New York",   
    "text" "21 2nd Street"   
  }   
}

कि "इनपुट पेलोड ऑब्जेक्ट" संपत्ति पर पूरा करने के लिए हम की जरूरत है, उदाहरण के लिए और ध्यान रखें कि कोड है कि आप करने के लिए अपने फ़ंक्शन के अंदर है पर निर्भर करता है:

  • पाठ गुण पर, टाइप करें:
{“Tweet”: {“by”:
    • यहाँ हम हमारे JSON संदेश बनाने के लिए शुरू कर रहे हैं
  • अगले हम की जरूरत है "द्वारा Tweeted" आउटपुट से हमारे चहचहाना ट्रिगर का चयन करने के लिए
    • ध्यान दें कि आप सभी तत्वों/मापदंडों के पिछले कदम है कि आप उपयोग कर सकते हैं, पर इस क्रिया की खिड़की के नीचे देख सकते हैं।

  • उसके बाद, हम शेष संदेश के टाइप करके बनाएँ करने के लिए जारी रखने के लिए की आवश्यकता:
,”text”:
  • अगले steap, चहचहाना ट्रिगर से "Tweeted पाठ" आउटपुट का चयन करें और बाकी JSON संदेश के अंत में टा���प करने के लिए है:
}}

अंतिम परिणाम इस तरह दिखेगा:

कैसे हम एक Azure फ़ंक्शन का उत्पादन करने के लिए उपयोग कर सकते हैं?

अब है कि हम अब आप हमारे Azure फ़ंक्शन के इनपुट भेजने के लिए, चलो देखते हैं कैसे हम अपने उत्पादन में क्रमिक कनेक्टर्स, एक बार फिर, उपयोग कर सकते हैं करने के लिए प्रतिक्रिया करने के लिए पहुँच उत्पादन, या outputs के, और उन्हें बाद में कनेक्टर्स उपयोग... कुछ चुनौतियों ला सकते हैं।

एक Azure समारोह के आउटपुट पुनर्प्राप्त कर रहा है

इसके बाद के संस्करण एक ही इनपुट नमूना निम्नलिखित प्रदान करते हैं:

  "Tweet": { 
    "by" "New York"
    "text" "21 2nd Street" 
  
}

चलो कहते हैं कि हम निम्न Azure फ़ंक्शन:

module.exports = function (context, data) {
          
  var Tweet = data.Tweet;
    
  var d = new Date().getTime();
  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' .replace(/[xy]/g, function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);   
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
  });   
          
  // Response of the function to be used later.   
  context.res = {      
    body: {         
      Msg: 'Sandro you have a new tweet msg: ' + Tweet.text,
      FileName: 'TweetMsg_' + uuid + ".txt"       
    }        
  };   
                  
  context.done();   
};

उस (के पहले उपलब्ध कराए गए इनपुट में परिणाम) को आउटपुट निम्न देता है:

  • एक स्थैतिक स्ट्रिंग और ट्वीट संदेश की सामग्री से बना है एक संदेश - "Msg"-
  • और एक फ़ाइल का नाम - "फ़ाइल नाम" - एक स्थैतिक स्ट्रिंग, एक जनरेटेड GUID और एक TXT एक्सटेंशन द्वारा रचित।
{   
  "Msg" "Sandro you have a new tweet msg: This is #LogicApps demo msg",   
  "FileName" "TweetMsg_315381a5-847f-4962-9f1f-4fb65a958753.txt"  
}

और हम आउटपुट पैरामीटर 'Msg' का मान एक Dropbox केवल युक्त फ़ाइल बनाना चाहते हैं। इसके अलावा, फ़ाइल का नाम "फ़ाइल नाम" आउटपुट पैरामीटर का मान होना चाहिए।

लेकिन अब के लिए चलो स्टैटिकली 'Demo1.txt' के रूप में फ़ाइल नाम सेट करें
  • यदि हम हमारे तर्क App करने के लिए "Dropbox है-बनाएँ फ़ाइल" कनेक्टर जोड़ें

  • फ़ोल्डर पथ, चलो कहते हैं कि जड़ टाइपिंग द्वारा सेट करें:
/
    • नोट:: भी "..." बटन करने के लिए अपने Dropbox फ़ोल्डर नेविगेट करने के लिए कि आप का उपयोग कर सकते हैं
  • फ़ाइल का नाम और प्रकार पर क्लिक करें:
Demo1.txt
  • और फिर "फ़ाइल सामग्री" पाठ बॉक्स पर क्लिक करें, हम देखेंगे कि Azure फ़ंक्शन का आउटपुट पैरामीटर "शरीर" और "स्थिति कोड" डिजाइन में हैं।
    • चलो हम बनाना चाहते हैं फ़ाइल की सामग्री के रूप में "शरीर" का चयन करें।

यदि हम सहेजने और तर्क App, निष्पादित जब एक नया कलरव पाया जाता है, हम हमारे Dropbox में कोई नई फ़ाइल देखेंगे, हालांकि, फ़ाइल की सामग्री की उम्मीद नहीं है, इसके बजाय यह फ़ंक्शन द्वारा दिया जाता है कि पूरे JSON संदेश हो जाएगा

क्योंकि हम स्टैटिकली फ़ाइल नाम निर्धारित कर रहे हैं, हम भी निम्न तर्क App फांसी पर निम्नलिखित त्रुटि प्राप्त कर सकते हैं, हम शीघ्र ही इसके साथ सौदा होगा:

"शरीर": {
"स्थिति": 409,
"संदेश": "फ़ाइल ' / Demo1.txt' पहले से मौजूद है। किसी मौजूदा फ़ाइल को अद्यतन करने के लिए अद्यतन कार्रवाई का उपयोग करें. ",
"स्रोत": "127.0.0.1"
}

तो कैसे मैं आउटपुट पैरामीटर और उन पर Dropbox कनेक्टर गुण का उपयोग करने के लिए उपयोग कर सकते हैं?

यहाँ चाल है:
  • डिज़ाइन-समय पर, "शरीर" दोनों "फ़ाइल नाम" और "फ़ाइल सामग्री" गुण Dropbox कनेक्टर (या किसी भी अन्य कनेक्टर) में फ़ंक्शन आउटपुट पैरामीटर सेट करें
    • आप वास्तव में यह कदम करने की ज़रूरत नहीं है, लेकिन कारण है कि क्यों हम यह करना है क्योंकि आम तौर पर हम एक छोटे से आलसी हैं और हम चाहते हैं कि डिजाइनर आधा काम हमारे लिए क्या

  • और फिर हमें "कोड देखें" मोड में इस मान को संपादित करने के लिए, "दृश्य कोड" विकल्प में तर्क Apps डिज़ाइनर के शीर्ष पर क्लिक करें

  • उसके बाद हम मूल्यों की उम्मीद करने के लिए "बनाएँ फ़ाइल" आदानों संपादित करने की आवश्यकता

  • परिवर्तन "इनपुट"->"प्रश्नों में प्रवेश करें" -> "नाम" करने के लिए गुण:
@{body(‘TwitterPassDataToFunction’)[‘FileName’]
  • और 'निवेश' करने के लिए "शरीर" ->:
@{body(‘TwitterPassDataToFunction’)[‘Msg’]

यदि हम तर्क Apps Designer करने के लिए, परिवर्तित करें "डिजाइनर" विकल्प, क्लिक करके अब हम डिजाइनर पहले से ही अपेक्षित पैरामीटर सेट करने के लिए इन गुणों को रेंडर करता है कि नोटिस जाएगा। पैरामीटर कि आउट-ऑफ़-द-बॉक्स नहीं हैं:

यदि हम एक बार फिर से बचाने के लिए और तर्क App, निष्पादित जब एक नया कलरव पाया जाता है, हम हमारे Dropbox उम्मीद फ़ाइल नाम के साथ में एक नई फ़ाइल देखेंगे:

��र अगर हम फ़ाइल (फ़ाइलें) की सामग्री की जाँच करें, हम भी है कि फ़ाइल में अपेक्षित सामग्री देखेंगे:

हमें उम्मीद है कि अगले संस्करण outputs है, डिफ़ॉल्ट रूप से, एक प्रथम श्रेणी के अनुभव करने के लिए Azure कार्यों से निपटने के लिए एक बेहतर अनुभव होगा।

नीला फ़ंक्शन केवल एक पैरामीटर लौटने

हम "आप उपयोग कर सकते हैं एक स्ट्रिंग चर" की एक अवधारणा बनाने के बाद कनेक्टर्स में केवल एक पैरामीटर, वापसी करना चाहते हैं, तो पिछले नमूने अब दो पैरामीटर, देता है। हम हमारे कार्य एक प्रथम श्रेणी के अनुभव "करने के लिए दृश्य कनेक्टर के इनपुट को बदलने के लिए कोड" स्विच करने की आवश्यकता के बिना करने के लिए Azure करने के लिए छोटे परिवर्तन कर सकते हैं।

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

हम एक नए Azure फ़ंक्शन तर्क अनुप्रयोग डिज़ाइनर से बनाते हैं, तो यह निम्न कोड, कि बेशक हम बदल सकते हैं का सुझाव देगा:

module.exports = function (context, data) {
          
  var Tweet = data.Tweet;
          
  // Response of the function to be used later.   
  context.res = {   
              
    body: {   
                  
      greeting: 'Hello ' + Tweet + '!'  
                  
    }   
                  
  };   
             
  context.done();   
            
};

यदि हम इस टेम्पलेट दृष्टिकोण का उपयोग करें और, उदाहरण के लिए है करने के लिए कोड परिवर्तित करें:

body: {    
      Msg: 'Sandro you have a new tweet msg: ' + Tweet.text
    }

हम पिछले नमूने के रूप में एक ही समस्या का सामना करेंगे, और हम "कोड देखने के लिए" पहुँच और मैन्युअल रूप से परिवर्तन/क्रमिक connectors का पैरामीटर सेट करने के लिए होगा।

लेकिन इस मामले में हम एक अलग दृष्टिकोण है एक बेहतर प्रयोक्ता अनुभव तर्क Apps डिज़ाइनर में कार्यान्वित कर सकते हैं। सुझाए गए दृष्टिकोण का पालन के बजाए हम निम्न कोड को कार्यान्वित कर सकते हैं:

module.exports = function (context, data) {
    
  var Tweet = data.Tweet;
  // Response of the function to be used later.   
  context.res = {     
   body: 'Sandro you have a new tweet msg: ' + Tweet.text
  };   
         
  context.done();      
};

हम अब Azure पोर्टल के माध्यम से इस फ़ंक्शन को निष्पादित करने का प्रयास करें, तो हम देखेंगे कि उत्पादन अब एक JSON संदेश नहीं है:

{   
  "Msg" "Sandro you have a new tweet msg: This is #LogicApps demo msg",   
  "FileName" "TweetMsg_83557388-97c4-4503-a3cd-7be145f31d42.txt"   
}

लेकिन इसके बजाय अब एक स्ट्रिंग है:

Sandro you have a new tweet msg: 21 2nd Street

अगर हम अब हमारे तर्क app है कि हम पहले बनाया करने के लिए वापस जाओ और:
  • चहचहाना आउटपुट पैरामीटर "चहचहाना आईडी" के साथ "Dropbox है-बनाएँ फ़ाइल" फ़ाइल नाम गुण सेट करें और ". txt" टाइप करके किसी फ़ाइल एक्सटेंशन जोड़ें
  • और Azure समारोह के साथ सामग्री फ़ाइल आउटपुट पैरामीटर: "शरीर"

हम, एक बार फिर, सहेजें और तर्क App, निष्पादित जब एक नया कलरव पाया जाता है, तो हम देखेंगे एक नई फ़ाइल (फ़ाइलें) हमारे Dropbox में अपेक्षित फ़ाइल नाम के साथ बनाए जाते हैं:

और ��म, एक बार फिर, फ़ाइल (फ़ाइलें), की सामग्री की जाँच करें, तो हम भी है कि फ़ाइल में अपेक्षित सामग्री देखेंगे:

इस तरह होने, एक बेहतर उपयोगकर्ता अनुभव के अंदर तर्क Apps डिजाइनर। हालाँकि, इस approach केवल काम करता है एक एकल मान आउटपुट है, तो (int, स्ट्रिंग, डबल)।

संदर्भ

यह आलेख मूल रूप में प्रकाशित किया गया था तर्क Apps: टिप्स एण्ड ट्रिक्स तर्क Apps अंदर Azure फ़ंक्शन का उपयोग करने के लिए   लेकिन फिक्सिंग और इतने पर वर्तनी नया अनुपलब्ध या महत्वपूर्ण सामग्री जोड़ने द्वारा, इस लेख में सुधार करने के लिए स्वतंत्र महसूस कृपया.

अन्य भाषाएँ

यह आलेख निम्न भाषाओं में भी उपलब्ध है:

यह भी देखें

TechNet Wiki तर्क ऐप् स से संबंधित लेख की एक बड़ी राशि को खोजने के लिए एक अन्य महत्वपूर्ण जगह है। TechNet Wiki पर Microsoft Azure अनुप्रयोग सेवा संसाधनों श्रेष्ठ प्रविष्टि बिंदु है.