Azure Functions を使用したロジック アプリのカスタム コードの追加と実行Add and run custom code for logic apps through Azure Functions

ロジック アプリで C# または node.js のカスタム スニペットを実行するには、Azure Functions を使用してカスタム関数を作成します。To run custom snippets of C# or node.js in logic apps, you can create custom functions through Azure Functions. Azure Functions は、Microsoft Azure でサーバーを使用しない計算を提供し、以下のタスクを実行するのに便利です。Azure Functions offers server-free computing in Microsoft Azure and are useful for performing these tasks:

  • ロジック アプリでのフィールドの高度な書式設定や計算Advanced formatting or compute of fields in logic apps
  • ワークフローでの計算の実行Perform calculations in a workflow.
  • C# または node.js でサポートされる関数を使用したロジック アプリ機能の拡張Extend the logic app functionality with functions that are supported in C# or node.js

ロジック アプリのカスタム関数を作成するCreate custom functions for your logic apps

汎用 Webhook - Node または汎用 Webhook - C# テンプレートから、Azure Functions ポータルで関数を作成することをお勧めします。We recommend that you create a function in the Azure Functions portal, from the Generic Webhook - Node or Generic Webhook - C# templates. そうすれば、ロジック アプリから application/json を受け取るテンプレートが自動的に生成されます。The result creates an auto-populated a template that accepts application/json from a logic app. これらのテンプレートから作成する関数は自動的に検出されて、Logic App デザイナーの [自分のリージョンの Azure Functions] に表示されます。Functions that you create from these templates are automatically detected and appear in the Logic App Designer under Azure Functions in my region.

Azure Portal の関数の [統合] ウィンドウで、[モード][Webhook][Webhook の種類][汎用 JSON] に設定されていることがテンプレートで示される必要があります。In the Azure portal, on the Integrate pane for your function, your template should show that Mode set to Webhook and Webhook type is set to Generic JSON.

Webhook 関数は、要求を受け取ると、それを data 変数経由でメソッドに渡します。Webhook functions accept a request and pass it into the method via a data variable. ペイロードのプロパティにアクセスするには、 data.function-nameのようなドット表記を使用します。You can access the properties of your payload by using dot notation like data.function-name. たとえば、DateTime 値を日付文字列に変換する単純な JavaScript 関数は次の例のようになります。For example, a simple JavaScript function that converts a DateTime value into a date string looks like the following example:

function start(req, res){
    var data = req.body;
    res = {
        body: data.date.ToDateString();
    }
}

ロジック アプリから Azure Functions を呼び出すCall Azure Functions from logic apps

サブスクリプション内のコンテナーを一覧表示し、呼び出す関数を選択するには、Logic App デザイナーで、[アクション] メニューをクリックし、[自分のリージョンの Azure Functions] から選択します。To list the containers in your subscription and select the function that you want to call, in Logic App Designer, click the Actions menu, and select from Azure Functions in my Region.

関数を選択すると、入力ペイロード オブジェクトの指定を求められます。After you select the function, you are asked to specify an input payload object. このオブジェクトは、ロジック アプリから関数に送信されるメッセージで、JSON オブジェクトである必要があります。This object is the message that the logic app sends to the function and must be a JSON object. たとえば、Salesforce トリガーから Last Modified の日付を渡す場合、関数ペイロードは次の例のようになります。For example, if you want to pass in the Last Modified date from a Salesforce trigger, the function payload might look like this example:

最終更新日

関数からロジック アプリをトリガーするTrigger logic apps from a function

関数内からロジック アプリをトリガーすることができます。You can trigger a logic app from inside a function. 呼び出し可能なエンドポイントとしてのロジック アプリ」を参照してください。See Logic apps as callable endpoints. 手動トリガーのあるロジック アプリを作成してから、関数内から手動トリガーの URL に対する HTTP POST を生成し、ロジック アプリに送信するペイロードを含めます。Create a logic app that has a manual trigger, then from inside your function, generate an HTTP POST to the manual trigger URL with the payload that you want sent to the logic app.

Logic App デザイナーから関数を作成するCreate a function from Logic App Designer

Node.js webhook 関数は、デザイナーから作成することもできます。You can also create a node.js webhook function from the designer. 最初に、 [自分のリージョンの Azure Functions] を選択し、関数用にコンテナーを選択します。First, select Azure Functions in my Region, and then choose a container for your function. コンテナーがまだない場合は、 Azure Functions ポータルから作成する必要があります。If you don't yet have a container, you need to create one from the Azure Functions portal. [新規作成]を選択します。Then select Create New.

計算するデータに基づいてテンプレートを生成するには、関数に渡すコンテキスト オブジェクトを指定します。To generate a template based on the data that you want to compute, specify the context object that you plan to pass into a function. このオブジェクトは JSON オブジェクトである必要があります。This object must be a JSON object. たとえば、FTP アクションからファイル コンテンツを渡す場合、コンテキストのペイロードは次の例のようになります。For example, if you pass in the file content from an FTP action, the context payload looks like this example:

コンテキスト ペイロード

注意

このオブジェクトは文字列としてキャストされなかったため、コンテンツは JSON ペイロードに直接追加されます。Because this object wasn't cast as a string, the content is added directly to the JSON payload. ただし、オブジェクトが JSON トークン (つまり、文字列または JSON オブジェクトか配列) でない場合は、エラーが発生します。However, an error occurs if the object is not a JSON token (that is, a string or a JSON object/array). 文字列としてオブジェクトをキャストするには、この記事の最初の図に示されているように引用符を追加します。To cast the object as a string, add quotes as shown in the first illustration in this article.

その後、デザイナーによって、インラインで作成できる関数テンプレートが生成されます。The designer then generates a function template that you can create inline. 変数は、関数に渡す予定のコンテキストに基づいて事前に作成されます。Variables are pre-created based on the context that you plan to pass into the function.