1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Logic Apps - Azure Functionsからの呼び出しとGmail送信

Last updated at Posted at 2021-07-04

目的

Azure Functions から Azure Logic Apps を呼び出し、
Azure Logic AppsAzure Functions から受け渡した値をGmail送信する

構成

Azure Functions と Azure Service Bus を使用してロジック アプリを呼び出すか、またはトリガーする を参考に以下構成のロジックアプリを作成する

image-20210704141924229.png

Postmanから送信する要求本文は以下とし、文字列test-nameをメール本文に挿入する

{
    "name": "test-name"
}

ロジックアプリの作成

1. トリガ(HTTP要求の受信時)作成

トリガに HTTP要求の受信時を選択

image-20210704144910059.png

Functionsから受信する要求本文のスキーマ定義を行う
サンプルのペイロードを使用してスキーマを生成するを選択する

image-20210704145409358.png

image-20210704150117721.png

サンプルのペイロードを入力することで、以下のようにスキーマが生成される

image-20210704150151328.png

要求本文がスキーマと一致しない場合、 HTTP 400 Bad Request が返される

Functionsから送信するPOSTの宛先はロジックアプリを保存後に生成される

image-20210704150541036.png

2. アクション(応答)追加

アクションの 応答 を選択する

image-20210704151208431.png

以下のように 本文name を選択するとトリガで定義したスキーマの nameを応答本文に含めることができる

image-20210704150917232.png

3. アクション(Gmail送信)追加

アクションの メールの送信 を選択する

image-20210704151648581.png

メールの送信に使用するGmailアカウントにサインインする

image-20210704152238032.png

宛先のメールアドレスを入力し、Add new parameter から ボディ件名 をチェックする

image-20210704152350762.png

メールの件名、ボディを入力し、動的なコンテンツの追加 から式で triggerBody()?['name'] を入力し、トリガで定義したスキーマの nameをボディに追加する

image-20210704152707968.png

4. POSTの宛先を取得

image-20210704153329737.png

HTTP Trigger 関数の作成

関数の作成方法については省略

以下、Python の実装コード例

import logging
import json
import requests
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
  logging.info('Python HTTP trigger function processed a request.')

  # ロジックアプリから取得したHTTP POSTのURL
  uri = 'https://prod-11.japanwest.logic.azure.com:443/workflows/492c717d4.....'

  try:
    req_body = req.get_json()
    name = req_body.get('name')
  except ValueError:
    return func.HttpResponse("Bad Request", status_code=400)
  
  try:
    headers = {'Content-Type': 'application/json'}
    payload = {'name': name}

    # POST送信
    response = requests.post(uri, headers = headers, data = json.dumps(payload))
    logging.info(f'response code: {response.status_code}')
    logging.info(f'response body: {response.text}')
  except:
    return func.HttpResponse("Internal Server Error", status_code=500)

  return func.HttpResponse("OK", status_code=200)

動作確認

Functionsはローカルデバッグ実行で確認
Azure Functions - ローカルでのテスト、デバッグ(Python)参照

Postman

image-20210704154629697.png

Funcstionsを実行しているターミナル

image-20210704155038716.png

Gmail

image-20210704154704867.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?