足立区在住SEのブログ

足立区在住のSE、中小企業診断士のブログです。機械学習、自然言語処理など。

OutSystemsでSendGrid API v3をコールする。

SendGrid の WEB API v3 を試してみました。
JSONでリクエストを投げるだけでメール送信ができます。

Documentation画面からJSONを入力して簡単にテスト送信できます。
https://sendgrid.com/docs/API_Reference/api_v3.html
f:id:adachinose:20170615112824j:plain

1.HeadersのAuthorizationに
 「Bearer {API_KEY}」を入力。
({API_KEY}は、SendGridにログインしてSetting>API Keys から作成するキー)

2.Request Bodyに、下のサンプルのJSONが入っているので宛先などを修正して
「SEND REQUEST」をクリックするだけでメールが送れます。

{
  "personalizations": [
    {
      "to": [
        {
          "email": "john.doe@example.com",
          "name": "John Doe"
        }
      ],
      "subject": "Hello, World!"
    }
  ],
  "from": {
    "email": "sam.smith@example.com",
    "name": "Sam Smith"
  },
  "reply_to": {
    "email": "sam.smith@example.com",
    "name": "Sam Smith"
  },
  "subject": "Hello, World!",
  "content": [
    {
      "type": "text/html",
      "value": "<html><p>Hello, world!</p></html>"
    }
  ]
}


Transactional Templatesで用意したメールテンプレートの文面を使って
メールを送ることもできます。
template_idでテンプレートを指定して、substitutionsで置換文字列を渡します。

{
  "personalizations": [
    {
      "to": [
        {
          "email": "john.doe@example.com"
        }
      ],
      "substitutions": {
        "-name1-": "john",
        "-name2-": "doe"
      }
    }
  ],
  "from": {
    "email": "sam.smith@example.com"
  },
  "template_id": "{Transactional Templatesのキー}"
}


メールテンプレート
f:id:adachinose:20170615113609j:plain


こんな風に置換されたメールが送信されます。

john
doe

~本文~


このAPIをコールする処理をOutSystemsで作ってみました。

1.Consume REST APIを新規作成して、「Body」タブにJSONを貼り付ける。
f:id:adachinose:20170615114047j:plain

2.「Headers / Auth」タブで、
Authorization(API_KEYを指定する)と
Content-Type("application/json"を指定)を追加する。
f:id:adachinose:20170615114112j:plain


RESTの下に、Sendgrid/PostSendが作成されます。
f:id:adachinose:20170615114123j:plain


JSONに対応するStructureも自動で作成されます。
f:id:adachinose:20170615114134j:plain


SendGridのAPIはResponseのBodyが空で返ってくるようで
HTTPステータスコードで結果を取得するのですが
OutSystemsのREST APIを普通に実行するだけだと
ステータスコードを取れないようです。

REST APIの「On After Response」プロパティを設定し
下記のようにOnAfterResponseを用意して
その中でステータスコードをsession Variablesにセットして取得する必要があるようです。
f:id:adachinose:20170615114148j:plain