Azure Logic Apps と統合される関数を作成するCreate a function that integrates with Azure Logic Apps

Azure Functions は、Logic Apps デザイナーで Azure Logic Apps と統合できます。Azure Functions integrates with Azure Logic Apps in the Logic Apps Designer. この統合により、他の Azure サービスやサードパーティ製のサービスとのオーケストレーションにおいて、Functions のコンピューティング機能を使用することができます。This integration lets you use the computing power of Functions in orchestrations with other Azure and third-party services.

このチュートリアルでは、Azure 上で Functions と Logic Apps、Cognitive Services を使用することで、Twitter 投稿の感情分析を実行する方法を説明します。This tutorial shows you how to use Functions with Logic Apps and Cognitive Services on Azure to run sentiment analysis from Twitter posts. HTTP によってトリガーされる関数は、感情 スコアに基づいて、ツイートを緑、黄、赤に分類します。An HTTP triggered function categorizes tweets as green, yellow, or red based on the sentiment score. ネガティブな感情が検出されると、電子メールが送信されます。An email is sent when poor sentiment is detected.

Logic Apps デザイナーでのアプリの最初の 2 つの手順の画像

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • Cognitive Services API リソースを作成します。Create a Cognitive Services API Resource.
  • ツイートの感情を分類する関数を作成します。Create a function that categorizes tweet sentiment.
  • Twitter に接続するロジック アプリを作成します。Create a logic app that connects to Twitter.
  • 感情の検出をロジック アプリに追加します。Add sentiment detection to the logic app.
  • ロジック アプリを関数に接続します。Connect the logic app to the function.
  • 関数からの応答に基づいて電子メールを送信します。Send an email based on the response from the function.

前提条件Prerequisites

Cognitive Services リソースの作成Create a Cognitive Services resource

Cognitive Services API は、個々のリソースとして Azure で使用できます。The Cognitive Services APIs are available in Azure as individual resources. Text Analytics API を使用して、監視されているツイートの感情を検出します。Use the Text Analytics API to detect the sentiment of the tweets being monitored.

  1. Azure Portal にサインインします。Sign in to the Azure portal.

  2. Azure Portal の左上隅にある [リソースの作成] をクリックします。Click Create a resource in the upper left-hand corner of the Azure portal.

  3. [AI + 機械学習] > [テキスト分析] の順にクリックします。Click AI + Machine Learning > Text Analytics. 次に、表に記載した設定を使用してリソースを作成します。Then, use the settings as specified in the table to create the resource.

    Cognitive リソースを作成するページ

    SettingSetting 推奨値Suggested value DescriptionDescription
    NameName MyCognitiveServicesAccntMyCognitiveServicesAccnt 一意のアカウント名を選択します。Choose a unique account name.
    LocationLocation 米国西部West US お近くの場所を使用します。Use the location nearest you.
    [価格レベル]Pricing tier F0F0 まずは低いレベルを選んでください。Start with the lowest tier. 呼び出し回数が不足する場合は、高いレベルにスケーリングします。If you run out of calls, scale to a higher tier.
    リソース グループResource group myResourceGroupmyResourceGroup このチュートリアルでは、すべてのサービスで同じリソース グループを使用します。Use the same resource group for all services in this tutorial.
  4. [作成] をクリックして、リソースを作成します。Click Create to create your resource.

  5. [概要] をクリックし、 [エンドポイント] の値をテキスト エディターにコピーします。Click on Overview and copy the value of the Endpoint to a text editor. この値は、Cognitive Services API への接続を作成するときに使用します。This value is used when creating a connection to the Cognitive Services API.

    Cognitive Services の設定

  6. 左側のナビゲーション列で [キー] をクリックし、 [キー 1] の値をコピーして、テキスト エディターにメモしておきます。In the left navigation column, click Keys, and then copy the value of Key 1 and set it aside in a text editor. このキーは、ロジック アプリを Cognitive Services API に接続するために使用します。You use the key to connect the logic app to your Cognitive Services API.

    Cognitive Services のキー

Function App の作成Create the function app

関数は、Logic Apps ワークフローの処理タスクをオフロードするのに役立ちます。Functions provides a great way to offload processing tasks in a logic apps workflow. このチュートリアルでは、HTTP によってトリガーされる関数を使用して、Cognitive Services からのツイート 感情 スコアを処理し、カテゴリ値を返します。This tutorial uses an HTTP triggered function to process tweet sentiment scores from Cognitive Services and return a category value.

  1. Azure portal メニューから [リソースの作成] を選択します。From the Azure portal menu, select Create a resource.

    Azure portal メニューを使用してリソースを追加します

  2. [新規] ページで、 [計算][関数アプリ] の順に選択します。In the New page, select Compute > Function App.

  3. 図の下にある表に指定されている関数アプリの設定を使用します。Use the function app settings as specified in the table below the image.

    基本

    設定Setting 推奨値Suggested value [説明]Description
    サブスクリプションSubscription 該当するサブスクリプションYour subscription この新しい Function App が作成されるサブスクリプション。The subscription under which this new function app is created.
    リソース グループResource Group myResourceGroupmyResourceGroup Function App を作成するための新しいリソース グループの名前。Name for the new resource group in which to create your function app.
    関数アプリ名Function App name グローバルに一意の名前Globally unique name 新しい Function App を識別する名前。Name that identifies your new function app. 有効な文字は、a-z (大文字と小文字の区別をしない)、0-9、および -です。Valid characters are a-z (case insensitive), 0-9, and -.
    公開Publish コードCode コード ファイルまたは Docker コンテナーの公開オプション。Option to publish code files or a Docker container.
    ランタイム スタックRuntime stack 優先言語Preferred language お気に入りの関数プログラミング言語をサポートするランタイムを選択します。Choose a runtime that supports your favorite function programming language. C# および F# 関数用の [.NET] を選択します。Choose .NET for C# and F# functions.
    [リージョン]Region 優先リージョンPreferred region ユーザーに近いリージョン、または関数がアクセスする他のサービスの近くのリージョンを選択します。Choose a region near you or near other services your functions access.

    [Next : Hosting >](次へ: ホスティング>) ボタンを選択します。Select the Next : Hosting > button.

  4. ホスティングに関する次の設定を入力します。Enter the following settings for hosting.

    Hosting

    設定Setting 推奨値Suggested value [説明]Description
    ストレージ アカウントStorage account グローバルに一意の名前Globally unique name 関数アプリで使用されるストレージ アカウントを作成します。Create a storage account used by your function app. ストレージ アカウント名の長さは 3 ~ 24 文字で、数字と小文字のみを使用できます。Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only. 既存のアカウントを使用することもできますが、ストレージ アカウントの要件を満たしている必要があります。You can also use an existing account, which must meet the storage account requirements.
    オペレーティング システムOperating system 優先オペレーティング システムPreferred operating system オペレーティング システムは、ランタイム スタックの選択に基づいてあらかじめ選択されますが、必要に応じて設定を変更できます。An operating system is pre-selected for you based on your runtime stack selection, but you can change the setting if necessary.
    プランPlan 従量課金プランConsumption plan Function App にどのようにリソースが割り当てられるかを定義するホスティング プラン。Hosting plan that defines how resources are allocated to your function app. 既定の [従量課金プラン] では、リソースは関数の必要に応じて動的に追加されます。In the default Consumption Plan, resources are added dynamically as required by your functions. このサーバーなしの ホスティングでは、関数が実行された時間にのみ課金されます。In this serverless hosting, you only pay for the time your functions run. App Service プランで実行する場合は、関数アプリのスケーリングを管理する必要があります。When you run in an App Service plan, you must manage the scaling of your function app.

    [Next : Monitoring >](次へ: 監視>) ボタンを選択します。Select the Next : Monitoring > button.

  5. 監視に関する次の設定を入力します。Enter the following settings for monitoring.

    監視

    設定Setting 推奨値Suggested value [説明]Description
    Application InsightsApplication Insights DefaultDefault 最も近いサポートされているリージョン内に同じアプリ名の Application Insights リソースを作成します。Creates an Application Insights resource of the same App name in the nearest supported region. この設定を展開することによって、 [新しいリソース名] を変更するか、またはデータを格納する Azure 地理的環境内の別の [場所] を選択することができます。By expanding this setting, you can change the New resource name or choose a different Location in an Azure geography where you want to store your data.

    [確認および作成] を選択して、アプリ構成の選択内容を確認します。Select Review + Create to review the app configuration selections.

  6. [作成] を選択して、Function App をプロビジョニングし、デプロイします。Select Create to provision and deploy the function app.

  7. ポータルの右上隅の通知アイコンを選択し、"デプロイメントに成功しました" というメッセージが表示されるまで待ちます。Select the Notification icon in the upper-right corner of the portal and watch for the Deployment succeeded message.

    デプロイの通知

  8. [リソースに移動] を選択して、新しい関数アプリを確認します。Select Go to resource to view your new function app. また、 [ダッシュボードにピン留めする] を選択することもできます。You can also select Pin to dashboard. ピン留めすると、ダッシュボードからこの関数アプリ リソースに戻るのが容易になります。Pinning makes it easier to return to this function app resource from your dashboard.

HTTP によってトリガーされる関数の作成Create an HTTP triggered function

  1. Function App を展開し、 [関数] の横にある [+] ボタンをクリックします。Expand your function app and click the + button next to Functions. これが関数アプリの初めての関数の場合は、 [ポータル内] を選択します。If this is the first function in your function app, select In-portal.

    Azure Portal での関数のクイック スタート ページ

  2. 次に、 [Webhook + API] を選択し、 [作成] をクリックします。Next, select Webhook + API and click Create.

    HTTP トリガーの選択

  3. この run.csx ファイルの内容を次のコードに置き換えて、 [保存] をクリックします。Replace the contents of the run.csx file with the following code, then click Save:

    #r "Newtonsoft.Json"
    
    using System;
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Logging;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
    {
        string category = "GREEN";
    
        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        log.LogInformation(string.Format("The sentiment score received is '{0}'.", requestBody));
    
        double score = Convert.ToDouble(requestBody);
    
        if(score < .3)
        {
            category = "RED";
        }
        else if (score < .6) 
        {
            category = "YELLOW";
        }
    
        return requestBody != null
            ? (ActionResult)new OkObjectResult(category)
            : new BadRequestObjectResult("Please pass a value on the query string or in the request body");
    }
    

    この関数コードは、要求で受信した感情 スコアに基づいて、色のカテゴリを返します。This function code returns a color category based on the sentiment score received in the request.

  4. 関数をテストするには、一番右の [テスト] をクリックして [テスト] タブを展開します。 [要求本文] に「0.2」という値を入力し、 [実行] をクリックします。To test the function, click Test at the far right to expand the Test tab. Type a value of 0.2 for the Request body, and then click Run. 応答本文で RED という値が返されます。A value of RED is returned in the body of the response.

    Azure Portal で関数をテストする

これで、感情 スコアを分類する関数が作成できました。Now you have a function that categorizes sentiment scores. 次に、Twitter および Cognitive Services API に関数を統合するロジック アプリを作成します。Next, you create a logic app that integrates your function with your Twitter and Cognitive Services API.

ロジック アプリを作成しますCreate a logic app

  1. Azure Portal で、左上隅にある [新規] ボタンをクリックします。In the Azure portal, click the New button found on the upper left-hand corner of the Azure portal.

  2. [Web] > [ロジック アプリ] の順にクリックします。Click Web > Logic App.

  3. 次に、 [名前] の値を入力し (TweetSentiment など)、表に記載した設定を使用します。Then, type a value for Name like TweetSentiment, and use the settings as specified in the table.

    Azure Portal でロジック アプリを作成する

    SettingSetting 推奨値Suggested value DescriptionDescription
    NameName TweetSentimentTweetSentiment アプリの適切な名前を選択します。Choose an appropriate name for your app.
    リソース グループResource group myResourceGroupmyResourceGroup 以前と同じ既存のリソース グループを選択します。Choose the same existing resource group as before.
    LocationLocation East USEast US 近くの場所を選択します。Choose a location close to you.
  4. 適切な設定値を入力したら、 [作成] をクリックしてロジック アプリを作成します。Once you have entered the proper settings values, click Create to create your logic app.

  5. アプリが作成されたら、ダッシュボードにピン留めされた新しいロジック アプリをクリックします。After the app is created, click your new logic app pinned to the dashboard. Logic Apps デザイナーで、下へスクロールして [空のロジック アプリ] テンプレートをクリックします。Then in the Logic Apps Designer, scroll down and click the Blank Logic App template.

    空の Logic Apps テンプレート

これで、Logic Apps デザイナーを使用してサービスとトリガーをアプリに追加できるようになりました。You can now use the Logic Apps Designer to add services and triggers to your app.

Twitter への接続Connect to Twitter

最初に、Twitter アカウントへの接続を作成します。First, create a connection to your Twitter account. ロジック アプリはツイートをポーリングし、これによりアプリの実行がトリガーされます。The logic app polls for tweets, which trigger the app to run.

  1. デザイナーで、Twitter サービスをクリックし、 [新しいツイートが投稿されたら] トリガーをクリックします。In the designer, click the Twitter service, and click the When a new tweet is posted trigger. Twitter アカウントにサインインして、Logic Apps によるアカウントの使用を承認します。Sign in to your Twitter account and authorize Logic Apps to use your account.

  2. 次の表で指定されている Twitter トリガーの設定を使用します。Use the Twitter trigger settings as specified in the table.

    Twitter コネクタの設定

    SettingSetting 推奨値Suggested value 説明Description
    [検索テキスト]Search text #Azure#Azure 選択した間隔で新しいツイートが十分に投稿される程度に一般的なハッシュタグを使用します。Use a hashtag that is popular enough to generate new tweets in the chosen interval. Free レベルを使用している状態で、使用頻度の高すぎるハッシュタグを使用すると、Cognitive Services API でのトランザクションのクォータがすぐに上限に達してしまう場合があります。When using the Free tier and your hashtag is too popular, you can quickly use up the transaction quota in your Cognitive Services API.
    間隔Interval 1515 頻度の単位での、Twitter に対する要求間の間隔です。The time elapsed between Twitter requests, in frequency units.
    頻度Frequency Minute Twitter のポーリングに使用する頻度の単位です。The frequency unit used for polling Twitter.
  3. [保存] をクリックして、Twitter アカウントに接続します。Click Save to connect to your Twitter account.

これで、アプリが Twitter に接続されました。Now your app is connected to Twitter. 次はテキスト分析に接続し、収集されたツイートの感情を検出します。Next, you connect to text analytics to detect the sentiment of collected tweets.

感情の検出を追加するAdd sentiment detection

  1. [新しいステップ][アクションの追加] の順にクリックします。Click New Step, and then Add an action.

  2. [アクションを選択してください] で「テキスト分析」と入力し、 [感情の検出] アクションをクリックします。In Choose an action, type Text Analytics, and then click the Detect sentiment action.

    [新しいステップ]、[アクションの追加]

  3. MyCognitiveServicesConnection などの接続名を入力し、テキスト エディターにメモしておいた Cognitive Services API と Cognitive Services エンドポイントのキーを貼り付けて、 [作成] をクリックします。Type a connection name such as MyCognitiveServicesConnection, paste the key for your Cognitive Services API and the Cognitive Services endpoint you set aside in a text editor, and click Create.

    [新しいステップ]、[アクションの追加]

  4. 次に、テキスト ボックスに「Tweet Text」と入力し、 [新しいステップ] をクリックします。Next, enter Tweet Text in the text box and then click on New Step.

    分析するテキストを定義する

これで感情の検出が構成されたので、感情スコアの出力を使用する関数への接続を追加できます。Now that sentiment detection is configured, you can add a connection to your function that consumes the sentiment score output.

感情の出力を関数に接続するConnect sentiment output to your function

  1. Logic Apps デザイナーで、 [新しいステップ] > [アクションの追加] の順にクリックし、 [Azure Functions] を条件としてフィルター処理して、 [Azure 関数を選択する] をクリックします。In the Logic Apps Designer, click New step > Add an action, filter on Azure Functions and click Choose an Azure function.

    感情を検出する

  2. 先ほど作成した関数アプリを選択します。Select the function app you created earlier.

    関数の選択

  3. このチュートリアルで作成した関数を選択します。Select the function you created for this tutorial.

    関数の選択

  4. [要求本文][Score](スコア) をクリックし、 [保存] をクリックします。In Request Body, click Score and then Save.

    Score

これで、ロジック アプリから感情スコアが送信されたときに、関数がトリガーされます。Now, your function is triggered when a sentiment score is sent from the logic app. 関数によって、色分けされたカテゴリがロジック アプリに返されます。A color-coded category is returned to the logic app by the function. 次に、関数から感情の値 RED が返されたときに送信される電子メール通知を追加します。Next, you add an email notification that is sent when a sentiment value of RED is returned from the function.

電子メール通知を追加するAdd email notifications

ワークフローの最後の部分では、感情スコアが RED だったときに電子メールがトリガーされます。The last part of the workflow is to trigger an email when the sentiment is scored as RED. このトピックでは Outlook.com コネクタを使用します。This topic uses an Outlook.com connector. Gmail や Office 365 の Outlook コネクタを使用して同様の手順を実行することもできます。You can perform similar steps to use a Gmail or Office 365 Outlook connector.

  1. Logic Apps デザイナーで、 [新しいステップ] > [条件の追加] をクリックします。In the Logic Apps Designer, click New step > Add a condition.

    ロジック アプリに条件を追加する

  2. [値の選択] をクリックして、 [本文] をクリックします。Click Choose a value, then click Body. [次の値に等しい] を選択し、 [値の選択] をクリックして「RED」と入力し、 [保存] をクリックします。Select is equal to, click Choose a value and type RED, and click Save.

    条件に対するアクションを選択する

  3. [true の場合][アクションの追加] をクリックします。outlook.com を検索して、 [電子メールの送信] をクリックし、Outlook.com アカウントにサインインします。In IF TRUE, click Add an action, search for outlook.com, click Send an email, and sign in to your Outlook.com account.

    [電子メールの送信] アクション用に電子メールを構成する

    注意

    Outlook.com アカウントを取得していない場合は、Gmail や Office 365 Outlook など、別のコネクタを選択できます。If you don't have an Outlook.com account, you can choose another connector, such as Gmail or Office 365 Outlook

  4. [電子メールの送信] アクションでは、表で指定されている電子メール設定を使用します。In the Send an email action, use the email settings as specified in the table.

    [電子メールの送信] アクション用に電子メールを構成する

SettingSetting 推奨値Suggested value 説明Description
ToTo メール アドレスを入力します。Type your email address 通知を受け取る電子メール アドレス。The email address that receives the notification.
[件名]Subject "ネガティブなツイートの感情を検出しました"Negative tweet sentiment detected 電子メール通知の件名。The subject line of the email notification.
本文Body [ツイート テキスト]、[場所]Tweet text, Location [ツイート テキスト] パラメーターと [場所] パラメーターをクリックします。Click the Tweet text and Location parameters.
  1. [Save] をクリックします。Click Save.

これでワークフローが完成したので、ロジック アプリを有効にして、関数の動作を確認できます。Now that the workflow is complete, you can enable the logic app and see the function at work.

ワークフローをテストするTest the workflow

  1. Logic Apps デザイナーで [実行] をクリックしてアプリを起動します。In the Logic App Designer, click Run to start the app.

  2. 左の列で [概要] をクリックしてロジック アプリの状態を確認します。In the left column, click Overview to see the status of the logic app.

    ロジック アプリの実行の状態

  3. (省略可能) 実行中のいずれかをクリックすると、その実行に関する詳細が表示されます。(Optional) Click one of the runs to see details of the execution.

  4. 関数に移動し、ログを表示して、感情スコアの受信と処理が行われたことを確認します。Go to your function, view the logs, and verify that sentiment values were received and processed.

    関数のログを表示する

  5. ネガティブである可能性のある感情が検出されると、電子メールが届きます。When a potentially negative sentiment is detected, you receive an email. 電子メールが届かない場合は、関数コードを変更して、毎回 RED が返されるようにすることができます。If you haven't received an email, you can change the function code to return RED every time:

    return (ActionResult)new OkObjectResult("RED");
    

    電子メール通知を確認した後、元のコードに戻してください。After you have verified email notifications, change back to the original code:

    return requestBody != null
        ? (ActionResult)new OkObjectResult(category)
        : new BadRequestObjectResult("Please pass a value on the query string or in the request body");
    

    重要

    このチュートリアルを完了した後は、ロジック アプリを無効にする必要があります。After you have completed this tutorial, you should disable the logic app. アプリを無効にすることで、実行に対して課金されたり、Cognitive Services API でのトランザクションが上限に達したりするのを回避できます。By disabling the app, you avoid being charged for executions and using up the transactions in your Cognitive Services API.

ここまでで、Functions を Logic Apps ワークフローと簡単に統合できることが確認できました。Now you have seen how easy it is to integrate Functions into a Logic Apps workflow.

ロジック アプリを無効にするDisable the logic app

ロジック アプリを無効にするには、 [概要] をクリックし、画面上部の [Disable](無効化) をクリックします。To disable the logic app, click Overview and then click Disable at the top of the screen. アプリを無効にすれば、削除しなくても、その実行が停止され、課金が停止されます。Disabling the app stops it from running and incurring charges without deleting the app.

関数のログ

次の手順Next steps

このチュートリアルでは、以下の内容を学習しました。In this tutorial, you learned how to:

  • Cognitive Services API リソースを作成します。Create a Cognitive Services API Resource.
  • ツイートの感情を分類する関数を作成します。Create a function that categorizes tweet sentiment.
  • Twitter に接続するロジック アプリを作成します。Create a logic app that connects to Twitter.
  • 感情の検出をロジック アプリに追加します。Add sentiment detection to the logic app.
  • ロジック アプリを関数に接続します。Connect the logic app to the function.
  • 関数からの応答に基づいて電子メールを送信します。Send an email based on the response from the function.

次のチュートリアルに進み、関数用のサーバーレス API を作成する方法を学習してください。Advance to the next tutorial to learn how to create a serverless API for your function.

Logic Apps の詳細については、Azure Logic Apps に関するページを参照してください。To learn more about Logic Apps, see Azure Logic Apps.