

**サポート終了通知:** 2026 年 10 月 30 日に、 AWS は Amazon Pinpoint のサポートを終了します。2026 年 10 月 30 日を過ぎると、Amazon Pinpoint コンソールまたは Amazon Pinpoint のリソース (エンドポイント、セグメント、キャンペーン、ジャーニー、分析) にアクセスできなくなります。詳細については、「[Amazon Pinpoint のサポート終了](https://docs.aws.amazon.com/console/pinpoint/migration-guide)」を参照してください。**注:** SMS、音声、モバイルプッシュ、OTP、電話番号の検証に関連する APIs は、この変更の影響を受けず、 AWS エンドユーザーメッセージングでサポートされています。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル
<a name="tutorials"></a>

このセクションのチュートリアルは、いくつかの重要なタスクを完了する方法を、新規の Amazon Pinpoint ユーザーに説明することを目的としています。Amazon Pinpoint を初めて使用する場合、または特定の機能についてまだよくわからない場合、これらのチュートリアルから始めることをお勧めします。

このガイドのチュートリアルには、開発者やシステム管理者を対象として作られたタスクが含まれています。これらのチュートリアルでは、Amazon Pinpoint API、AWS SDK、AWS CLI を使用してタスクを実行する方法が示されます。

**Topics**
+ [Amazon Pinpoint で Postman を使用する](tutorials-using-postman.md)
+ [SMS 登録システムを設定する](tutorials-two-way-sms.md)

# チュートリアル: Amazon Pinpoint API で Postman を使用する
<a name="tutorials-using-postman"></a>

Postman は使いやすいグラフィカル環境で API をテストする、人気の高いツールです。Postman を使用して、API リクエストを任意の REST API へ送信し、リクエストに対する応答を受け取ることができます。Postman を使用するのは、Amazon Pinpoint API への呼び出しをテストおよびトラブルシューティングするのに便利な方法です。このチュートリアルには、Amazon Pinpoint で Postman を設定し、使用する手順が含まれています。

**注記**  
Postman は、サードパーティー企業によって開発されています。Amazon Web Services (AWS) が開発およびサポートするものではありません。Postman の使用方法または Postman に関連する問題のサポートの詳細については、Postman ウェブサイトで[サポートセンター](https://support.postman.com/hc/en-us)を参照してください。

## このチュートリアルの内容
<a name="tutorials-using-postman-about"></a>

このセクションでは、このチュートリアルの概要について説明します。

**対象者**  
このチュートリアルは、開発者とシステム実装者を対象としています。このチュートリアルの手順を完了するために Amazon Pinpoint または Postman に精通している必要はありません。IAM ポリシーの管理および JSON のコード例の変更に慣れている必要があります。

このチュートリアルの手順は、新しいユーザーが、Amazon Pinpoint リソースを完全に削除する可能性のある API オペレーションを使用できないように設計されました。上級ユーザーは、 ユーザーに関連付けられているポリシーを変更して、この制限を解除できます。

**使用される機能**  
このチュートリアルには、次の Amazon Pinpoint 機能の使用例が含まれています。
+ Postman を使用して Amazon Pinpoint APIと対話する

**所要時間**  
このチュートリアルは完了までに約 15 分かかります。

**リージョン別制限**  
このソリューションの使用に関連するリージョン別制限はありません。

**リソース使用量のコスト**  
 AWS アカウントの作成には料金はかかりません。ただし、このソリューションを実装することで、Postman を使用して次のいずれかを実行すると AWS 、使用コストが発生する可能性があります。
+ E メール、SMS、モバイルプッシュ、または音声メッセージを送信する
+ キャンペーンを作成して送信する
+ 電話番号検証機能を使用する

Amazon Pinpoint の使用に関連する料金の詳細については、「[Amazon Pinpoint pricing](https://aws.amazon.com/pinpoint/pricing/)」を参照してください。

# Postman を Amazon Pinpoint で使用するための前提条件
<a name="tutorials-using-postman-prerequisites"></a>

このチュートリアルを開始する前に、次の前提条件を完了してください。
+ AWS アカウントが必要です。AWS アカウントを作成するには、[https://console.aws.amazon.com/](https://console.aws.amazon.com/)から、[**Create a new AWS account**] を選択します。
+ AWS マネジメントコンソール へのサインインに使用するアカウントで新しい IAM ポリシーおよびロールを作成できることを確認します。
+ 作成した少なくとも 1 つのサンプルプロジェクトで E メールが有効になっており、検証済みの E メール ID があることを確認します。「*Amazon Pinpoint ユーザーガイド*」の「[E メールをサポートする Amazon Pinpoint プロジェクトの作成](https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-setup-create.html)」を参照してください。
+ AWS アカウント ID を持っていることを確認します。AWS アカウント ID はコンソールの右上に表示されます。また、コマンドラインインターフェイス (CLI) を使用することもできます。「[AWS アカウント ID の検索](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindAccountId)」を参照してください。
+ Postman をコンピュータにダウンロードしてインストールする必要があります。Postman は、[Postman ウェブサイト](https://www.getpostman.com)からダウンロードできます。
+ コンピュータに Postman をインストールしたら、Postman アカウントを作成します。Postman アプリケーションを最初に起動するときは、ログインするか、新しいアカウントを作成するように求められます。Postman の指示に従ってアカウントにログインします。まだアカウントを持っていない場合は作成します。

**Next**: [IAM ポリシーおよびロールを作成する](tutorials-using-postman-iam-user.md)

# Amazon Pinpoint で使用する IAM ポリシーおよびロールを作成する
<a name="tutorials-using-postman-iam-user"></a>

Postman を使用して Amazon Pinpoint API をテストするとき、最初のステップはユーザーを作成することです。このセクションでは、すべての Amazon Pinpoint リソースの操作をユーザーに許可するポリシーを作成します。その後、ユーザーを作成し、そのユーザーにポリシーを直接アタッチします。

## IAM ポリシーを作成する
<a name="tutorials-using-postman-iam-user-create-policy"></a>

IAM ポリシーの作成方法について説明します。このポリシーを使用するユーザーとロールは、Amazon Pinpoint API ですべてのリソースを操作できます。また、Amazon Pinpoint Email API、Amazon Pinpoint SMS and Voice API に関連するリソースへのアクセスも提供します。

**ポリシーを作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. ナビゲーションペインで **ポリシー**を選択してから **ポリシーの作成**を選択します。

1. **[ポリシーエディター]** で、**[JSON]** を選択します。**[ポリシーエディター]** で現在の JSON を削除して、空白にします。次の JSON をコピーして **[ポリシーエディター]** に貼り付け、**[ポリシーエディター]** で *123456789012* のすべてのインスタンスを AWS アカウント ID に置き換えます。

    AWS アカウント ID はコンソールの右上隅にあるか、CLI を使用できます。[AWS 「アカウント ID の検索](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindAccountId)」を参照してください。
**注記**  
Amazon Pinpoint アカウント内のデータを保護するため、このポリシーには、リソースの読み取り、作成、変更ができるアクセス許可のみが含まれています。リソースの削除を許可するアクセス許可はこのポリシーに含まれていません。IAM コンソールのビジュアルエディタを使用してポリシーを変更できます。IAM ポリシーの詳細については、『IAM ユーザーガイド』の「[Managing IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)」を参照してください。また、IAM API の [CreatePolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicyVersion.html) オペレーションを使用して、このポリシーを更新できます。  
また、このポリシーには、`mobiletargeting` サービスに加えて、`ses` サービスや `sms-voice` サービスを操作するためのアクセス許可も含まれています。`ses` および `sms-voice` のアクセス許可により、それぞれ Amazon Pinpoint Email API および Amazon Pinpoint SMS and Voice API を利用することができます。`mobiletargeting` アクセス許可では、Amazon Pinpoint API を操作することができます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "mobiletargeting:Update*",
                   "mobiletargeting:Get*",
                   "mobiletargeting:Send*",
                   "mobiletargeting:Put*",
                   "mobiletargeting:Create*"
               ],
               "Resource": [
                   "arn:aws:mobiletargeting:*:123456789012:apps/*",
                   "arn:aws:mobiletargeting:*:123456789012:apps/*/campaigns/*",
                   "arn:aws:mobiletargeting:*:123456789012:apps/*/segments/*"
               ]
           },
           {
               "Sid": "VisualEditor1",
               "Effect": "Allow",
               "Action": [
                   "mobiletargeting:TagResource",
                   "mobiletargeting:PhoneNumberValidate",
                   "mobiletargeting:ListTagsForResource",
                   "mobiletargeting:CreateApp"
               ],
               "Resource": "arn:aws:mobiletargeting:*:123456789012:*"
           },
           {
               "Sid": "VisualEditor2",
               "Effect": "Allow",
               "Action": [
                   "ses:TagResource",
                   "ses:Send*",
                   "ses:Create*",
                   "ses:Get*",
                   "ses:List*",
                   "ses:Put*",
                   "ses:Update*",
                   "sms-voice:SendVoiceMessage",
                   "sms-voice:List*",
                   "sms-voice:Create*",
                   "sms-voice:Get*",
                   "sms-voice:Update*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   [**次へ**] を選択します。

1. **[ポリシー名]** にポリシーの名前を入力します (例: **PostmanAccessPolicy**)。[**Create policy**] (ポリシーの作成) を選択します。

1. (オプション) ポリシーにタグを追加するには、**[タグの追加]** を選択します。

1. **[次へ: レビュー]** を選択します。

## IAM ユーザーの作成
<a name="tutorials-using-postman-iam-user-create-user"></a>

**警告**  
IAM ユーザーは長期認証情報を保有するため、セキュリティ上のリスクが生じます。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーは削除することをお勧めします。

ポリシーを作成したら、ユーザーを作成してポリシーをアタッチできます。ユーザーを作成するとき、IAM では、Postman に Amazon Pinpoint API オペレーションの実行を許可する一連の認証情報が提供されます。

**ユーザーを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. IAM コンソールのナビゲーションペインで **[ユーザー]** を選択し、**[ユーザーを作成]** を選択します。

1. **[ユーザーの詳細]** の **[ユーザー名]** に、**PostmanUser** など、ユーザーを識別する名前を入力します。次いで、**[次へ]** を選択します。

1. **[許可を設定]** ページの **[許可のオプション]** で、**[ポリシーを直接アタッチする]** を選択します。

1. **[アクセス許可ポリシー]** で、「[IAM ポリシーを作成する](#tutorials-using-postman-iam-user-create-policy)」で作成したポリシー (**PostmanAccessPolicy**) を選択します。次いで、**[次へ]** を選択します。

1. **[確認して作成]** ページで、必要に応じて、ユーザーを識別するのに役立つタグを追加します。タグの使用に関する詳細については、「IAM ユーザーガイド」の「[IAM リソースのタグ付け](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)」を参照してください。**

1. ユーザーを作成する準備ができたら、[**ユーザーの作成**] を選択します。

## アクセスキーを作成する
<a name="tutorials-using-postman-iam-user-create-key"></a>

**警告**  
このシナリオでは、プログラムによるアクセスと長期的な認証情報を持つ IAM ユーザーが必要です。これはセキュリティ上のリスクをもたらします。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーは削除することをお勧めします。アクセスキーは、必要に応じて更新できます。詳細については、「*IAM ユーザーガイド*」の「[アクセスキーの更新](https://docs.aws.amazon.com/IAM/latest/UserGuide/id-credentials-access-keys-update.html)」を参照してください。

 IAM では、Postman に Amazon Pinpoint API オペレーションの実行を許可するために使用できる一連の認証情報が提供されます。

**ユーザーを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. IAM コンソールのナビゲーションペインで **[ユーザー]** を選択します。「[IAM ユーザーを作成する](#tutorials-using-postman-iam-user-create-user)」で作成したユーザー (**PostmanUser**) を選択し、**[セキュリティ認証情報]** タブを選択します。

1. [**Access keys (アクセスキー)**] セクションで、[**Create access key (アクセスキーを作成)**] を選択します。

1. **[アクセスキーのベストプラクティスと代替案]** ページで、**[ AWSの外部で実行されるアプリケーション]** を選択します。

   次いで、**[次へ]** を選択します。

1. (オプション) ポリシーには説明タグを追加できます。

1. **[アクセスキーを作成]** を選択します。

1. **[アクセスキーを取得]** ページで、**[アクセスキー]** 列と **[シークレットアクセスキー]** 列に表示されている認証情報をコピーします。
**注記**  
このチュートリアルの後半で、アクセスキー ID とシークレットアクセスキーの両方を入力する必要があります。シークレットアクセスキーを表示できるのは、このときのみとなります。コピーして安全な場所に保存することをお勧めします。

1. 両方のキーを保存したら、**[完了]** を選択します。

**Next**: [Postman をセットアップする](tutorials-using-postman-configuration.md)

# Amazon Pinpoint で使用する Postman をセットアップする
<a name="tutorials-using-postman-configuration"></a>

Amazon Pinpoint API にアクセスできるユーザーアカウントを作成したので、Postman をセットアップできます。このセクションでは、Postman で 1 つ以上の環境を作成します。次に、Amazon Pinpoint API の各オペレーションのリクエストテンプレートが含まれているコレクションをインポートします。

## Postman ワークスペースを作成する
<a name="tutorials-using-postman-configuration-create-workspace"></a>

Postman において、ワークスペースはプロジェクトと環境用の組織のコンテナです。**このセクションでは、Amazon Pinpoint で使用するワークスペースを少なくとも 1 つ作成します。

**ワークスペースの作成**

Postman で、その他のアクションを選択し、**[ファイル]**、**[新規]** の順に選択します。

1. **[新規作成]** ウィンドウで **[ワークスペース]** を選択します。

1. 名前と概要を入力し、[可視性] を [個人] に設定します。次に、**[ワークスペースの作成]** を選択します。

## Postman 環境を作成する
<a name="tutorials-using-postman-configuration-create-environments"></a>

Postman では、*環境*とは、キーと値のペアとして保存される一連の変数です。環境を使用すると、Postman を介してリクエストの設定を変更でき、API リクエスト自体を変更する必要はありません。

このセクションでは、Amazon Pinpoint で使用するには、少なくとも 1 つの環境を作成します。作成する各環境には、1 つの AWS リージョンのアカウントに固有の変数のセットが含まれています。このセクションの手順を使用して複数の環境を作成する場合、Postman で **[環境]** メニューから別の環境を選択して、リージョン間で変更できます。

**環境を作成する方法**

1. Postman で、その他のアクションメニューを選択し、**[ファイル]**、**[新規]** の順に選択します。

1. [**新規作成**] ウィンドウで、[**環境**] を選択します。

1. [**MANAGE ENVIRONMENTS**] ウィンドウで、[**環境名**] に「**Amazon Pinpoint - *Region Name***」と入力します。*Region Name* を次のいずれかのリージョンに置き換えます。
   + 米国東部 (バージニア北部)
   + 米国西部 (オレゴン)
   + アジアパシフィック (ムンバイ)
   + アジアパシフィック (シドニー)
   + 欧州 (フランクフルト)
   + 欧州 (アイルランド)
**注記**  
少なくとも、1 つの に対して 1 つの環境を作成するだけで AWS リージョン、1 つのプロジェクトを含める AWS リージョン 必要があります。前述のいずれかの でプロジェクトを作成していない場合は AWS リージョン、[Amazon Pinpoint ユーザーガイド」の「E メールをサポートする Amazon Pinpoint プロジェクトの作成](https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-setup-create.html)」を参照してください。 *Amazon Pinpoint *

1. 6 つの新しい変数、`endpoint`、`region`、`serviceName`、`accountId`、`accessKey`、および `secretAccessKey` を作成します。次の表を使用して、各変数の **[初期値]** 列と **[現在の値]** に入力する値を決定します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/tutorials-using-postman-configuration.html)

   これらの変数を作成すると、[**MANAGE ENVIRONMENTS**] ウィンドウは、次の図に示す例のようになります。  
![\[\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/Postman_Tutorial_2.1_4.png)

   完了したら、**保存** を選択します。
**重要**  
先ほどの画像に示されているアクセスキーは架空のものです。IAM アクセスキーは他のユーザーと共有してはいけません。  
Postman には、環境の共有とエクスポートのための機能があります。これらの機能を使用する場合、これらの認証情報にアクセスすべきではない人と、アクセスキー ID やシークレットアクセスキーを共有しないでください。  
詳細については、 『*IAM ユーザーガイド*』の「[IAM ベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

1. (オプション) 作成する環境を追加するごとに、手順 1～4 を繰り返します。
**ヒント**  
Postman では、必要な数だけ環境を作成することができます。環境は次の方法で使用できます。  
Amazon Pinpoint API をテストする必要があるリージョンごとに個別の環境を作成します。
異なる AWS アカウントアカウントに関連付けられた環境を作成します。
他のユーザーに関連付けられている認証情報を使用する環境を作成します。

1. 環境の作成が完了したら、次のセクションに進みます。

## Postman で Amazon Pinpoint コレクションを作成する
<a name="tutorials-using-postman-configuration-create-pinpoint-collection"></a>

Postman では、*コレクション* は API リクエストのグループです。コレクション内のリクエストは通常、共通の目的で結合されます。このセクションでは、Amazon Pinpoint API での各オペレーションに対するリクエストテンプレートを含む新しいコレクションを作成します。

**Amazon Pinpoint コレクションを作成する**

1. Postman で、その他のアクションメニューを選択し、**[ファイル]** を選択し、**[インポート]** を選択します。

1. [**インポート**] ウィンドウで、[**Import From Link (リンクからインポート)**] を選択し、URL [https://raw.githubusercontent.com/awsdocs/amazon-pinpoint-developer-guide/master/Amazon%20Pinpoint.postman\$1collection.json](https://raw.githubusercontent.com/awsdocs/amazon-pinpoint-developer-guide/master/Amazon%20Pinpoint.postman_collection.json) を入力します。

   [**インポート**] を選択します。Postman は、120 のサンプルリクエストが含まれている Amazon Pinpoint コレクションをインポートします。

## Postman 設定のテスト
<a name="tutorials-using-postman-configuration-test-operation"></a>

Amazon Pinpoint コレクションをインポートした後、簡単なテストを実行して、すべてのコンポーネントが適切に設定されていることを検証することをお勧めします。`GetApps` リクエストを送信することで、設定をテストできます。このリクエストでは、現在の AWS リージョンで自分の Amazon Pinpoint アカウントに存在するすべてのプロジェクトのリストが返されます。このリクエストは、他に追加の設定を必要としないため、設定をテストする方法に適しています。

**Amazon Pinpoint コレクションの設定をテストするには**

1. ナビゲーションペインで、**[Collections]** を選択し、**Amazon Pinpoint** コレクションを展開してから、**Apps** フォルダを展開します。

1. リクエストのリストで、[ **GetApps**] を選択します。

1. **[環境]** セレクタを使用して、「[Postman 環境を作成する](#tutorials-using-postman-configuration-create-environments)」で作成した環境を選択します。

1. [**Send**] を選択します。リクエストが正常に送信されると、[Response] ペインに `200 OK` のステータスが表示されます。次のイメージの例のようなレスポンスが表示されます。  
![\[\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/Postman_Tutorial_2.3_3.png)
**注記**  
にプロジェクトが作成されていない場合 AWS リージョン 、Amazon Pinpoint は を返します`{ "Item": [] }`。

   このレスポンスには、「ステップ 3」で選択したリージョンにある自分のアカウントに存在するすべての Amazon Pinpoint プロジェクトの一覧が表示されます。

### トラブルシューティング
<a name="tutorials-using-postman-configuration-test-operation-troubleshooting"></a>

リクエストを送信すると、エラーが表示される可能性があります。発生する可能性のあるいくつかの一般的なエラーと問題を解決するための手順については、以下のリストをご覧ください。


| エラーメッセージ | 問題 | 解決策 | 
| --- | --- | --- | 
|  何もレスポンスが得られませんでした https://%7B%7Bendpoint%7D%7D/v1/apps に接続中にエラーが発生しました。  |  環境を選択したときに設定される、`{{endpoint}}` 変数の現在の値がありません。  | 環境セレクタを使用して環境を選択します。 | 
|  リクエストに含まれているセキュリティトークンが無効です。  |  Postman では、アクセスキー ID またはシークレットアクセスキーの現在の値を見つけることができませんでした。  |  環境セレクタの近くにある歯車アイコンを選択し、現在の環境を選択します。`accessKey` および `secretAccessKey` の値が **[INITIAL VALUE]** と **[CURRENT VALUE]** の両方の列に表示されること、および認証情報が正しく入力されていることを確認します。  | 
|  「メッセージ」: "ユーザー: arn:aws:iam::123456789012:user/PinpointPostmanUser には、次の操作を実行する権限がありません: mobiletargeting:GetApps on resource: arn:aws:mobiletargeting:us-west-2:123456789012:\$1"  |  ユーザーに関連付けられている IAM ポリシーに、適切なアクセス許可が含まれていません。  |  「[IAM ポリシーを作成する](tutorials-using-postman-iam-user.md#tutorials-using-postman-iam-user-create-policy)」で説明したアクセス許可がユーザーにあること、および「[Postman ワークスペースを作成する](#tutorials-using-postman-configuration-create-environments)」で環境を作成したときに適切な認証情報を指定したことを確認します。  | 

**Next**: [追加のリクエストを送信する](tutorials-using-postman-sample-requests.md)

# Amazon Pinpoint API にリクエストを送信する
<a name="tutorials-using-postman-sample-requests"></a>

Postman の設定とテストが完了したら、Amazon Pinpoint API に追加のリクエストの送信を開始することができます。このセクションには、リクエストの送信を開始する前に知っておく必要がある情報が記載されています。また、Amazon Pinpoint コレクションの使用方法の説明に役立つリクエスト例も 2 つ含まれています。

**重要**  
このセクションの手順を完了したら、Amazon Pinpoint API へのリクエストを送信します。これらのリクエストでは、Amazon Pinpoint アカウントでの新しいリソースの作成、既存のリソースの変更、メッセージの送信、Amazon Pinpoint プロジェクトの設定の変更、その他の Amazon Pinpoint 機能の使用を行います。これらのリクエストを実行するときには注意が必要です。

## Amazon Pinpoint Postman コレクションの例
<a name="tutorials-using-postman-sample-requests-about"></a>

Amazon Pinpoint Postman コレクションのほとんどのオペレーションは、使用する前に設定する必要があります。`GET` と `DELETE` オペレーションの場合、通常は、[**Pre-request Script**] タブで設定されている変数を変更するだけです。

**注記**  
「[IAM ポリシーを作成する](tutorials-using-postman-iam-user.md#tutorials-using-postman-iam-user-create-policy)」で示した IAM ポリシーを使用する場合、このコレクションに含まれる `DELETE` リクエストを実行することはできません。

例えば、`GetCampaign` オペレーションでは、`projectId` と `campaignId` を指定する必要があります。[**Pre-request Script**] タブには、これら両方の変が存在し、値の例が設定されています。値の例を削除し、Amazon Pinpoint プロジェクトとキャンペーンに該当する値に置き換えます。

これらの変数のうち、最も一般的に使用されるのは `projectId` 変数です。この変数の値は、リクエストが適用されるプロジェクトの一意の識別子であることが必要です。プロジェクトの識別子のリストを取得するには、このチュートリアルの前のステップで送信した `GetApps` リクエストに対するレスポンスを参照してください。そのレスポンスで、`Id` フィールドにプロジェクトの一意の識別子が表示されています。`GetApps` オペレーションおよびレスポンスの各フィールドの意味の詳細については、「*Amazon Pinpoint APIリファレンス*」の「[Apps](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps.html)」を参照してください。

**注記**  
Amazon Pinpoint では、「プロジェクト」は「アプリ」や「アプリアプリケーション」と同じです。

`POST` オペレーションと `PUT` オペレーションの場合、リクエスト本文を変更して、API に送信する値が含まれるようにする必要もあります。例えば、`POST` リクエストである `CreateApp` リクエストを送信するときには、作成するプロジェクトの名前を指定する必要があります。[**本文**] タブで、リクエストを変更することができます。この例では、`"Name"` の横にある値をプロジェクトの名前に置き換えます。プロジェクトにタグを追加するには、`tags` オブジェクトで指定します。または、タグを追加しない場合は、`tags` オブジェクト全体を削除することができます。

**注記**  
`UntagResource` オペレーションでは、URL パラメータを指定する必要もあります。これらのパラメータは、[**Params**] タブで指定することができます。[**VALUE**] 列の値を、指定されたリソースについて削除するタグに置き換えます。

## リクエストの例: `CreateApp` オペレーションを使用したプロジェクトを作成する
<a name="tutorials-using-postman-sample-requests-createapp"></a>

Amazon Pinpoint でセグメントおよびキャンペーンを作成する前に、まずプロジェクトを作成する必要があります。Amazon Pinpoint では、*プロジェクト*は、セグメント、キャンペーン、設定、および共通の目的で結合されたデータで構成されます。例えば、特定のアプリケーション、または特定のブランドまたはマーケティングイニシアティブに関連するすべてのコンテンツを含むプロジェクトを使用できます。Amazon Pinpoint にお客様の情報を追加すると、その情報はプロジェクトに関連付けられます。

**CreateApp API リクエストを送信してプロジェクトを作成するには**

1. **環境**メニューで、プロジェクト AWS リージョン を作成する を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/Postman_Tutorial_Environments.png)

    この例では、[**環境**] メニューには次の 4 つのオプションが表示されるように Postman が設定されています。
   + 米国東部 (バージニア北部)
   + 米国西部 (オレゴン)
   + 欧州 (フランクフルト)
   + 欧州 (アイルランド)

1. **[Apps]** フォルダで、**[CreateApp]** オペレーションを選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/Postman_Tutorial_3.2_2.png)

   Amazon Pinpoint Postman コレクション内の **[Apps]** フォルダが展開され、次のリクエストが表示されます。
   + `GetApp`
   + `GetApps`
   + `CreateApp`
   + `DeleteApp`

1. [**本文**] タブの、`"Name"` の横にあるプレースホルダーの値 (`"string"`) を、**"MySampleProject"** など、キャンペーンの名前に置き換えます。

1. キャンペーン名の後ろにあるカンマを削除し、3～5 行目にある `tags` オブジェクト全体を削除します。終了すると、リクエストは次のコードスニペットの例のようになります。

   ```
   {
       "Name": "MySampleProject"
   }
   ```

   Postman は未加工の JSON ペイロードとしてリクエストを送信するように設定されています。

1. **[送信]** を選択します。キャンペーンが正常に作成された場合、[レスポンス] ペインに `201 Created` のステータスが表示されます。

   ```
   {
       "Name": "MySampleProject"
       "Id": "12345678901234567890123456789012",
       "Arn": "arn:aws:mobiletargeting:us-east-1:123456789012:apps/12345678901234567890123456789012",
       "tags": {}
   }
   ```

## 例: `SendMessages` オペレーションを使用して E メールを送信する
<a name="tutorials-using-postman-sample-requests-sendmessages"></a>

トランザクションメッセージを送信するために Amazon Pinpoint `SendMessages` API を使用するのは非常に一般的です。キャンペーンを作成するのではなく、`SendMessages` API を使用してメッセージを送信する利点の 1 つは、E メールアドレス、電話番号、デバイストークンなど任意のアドレスにメッセージを送信できることです。メッセージの送信先のアドレスは、Amazon Pinpoint アカウント内に存在している必要はありません。この方法を、キャンペーンを作成してメッセージを送信する方法と比較してみましょう。Amazon Pinpoint でキャンペーンを送信する前に、Amazon Pinpoint アカウントにエンドポイントを追加し、セグメントを作成し、キャンペーンを作成し実行する必要があります。

このセクションの例は、特定の E メールアドレスに直接トランザクションメールメッセージを送信する方法を説明しています。このリクエストを変更して、SMS、モバイルプッシュ、または音声など、他のチャネル経由でメッセージを送信できます。

**SendMessages リクエストを送信して E メールメッセージを送信するには**

1. E メールチャネルがプロジェクトで有効になっており、メッセージの送受信に使用する E メールアドレスやドメインが設定されていることを確認します。詳細については、『Amazon Pinpoint ユーザーガイド』の「[E メールチャネルの有効化と無効化](pinpoint/latest/userguide/channels-email-setup.html)」と「[E メール ID の検証](https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-manage-verify.html)」を参照してください。**
**注記**  
このセクションの手順を実行するには、E メールアドレスを検証する必要があります。

1. **環境**メニューで、メッセージを送信 AWS リージョン する を選択します。

   この例では、[**環境**] メニューには次の 4 つのオプションが表示されるように Postman が設定されています。
   + 米国東部 (バージニア北部)
   + 米国西部 (オレゴン)
   + 欧州 (フランクフルト)
   + 欧州 (アイルランド)

1. 「**メッセージ**」フォルダで、[**SendMessages**] オペレーションを選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/Postman_Tutorial_3.3_3.png)

1. [**Pre-request Script**] タブで、`projectId` 変数の値をこのセクションのステップ 2 で選択したリージョンに既に存在するプロジェクトの ID と置き換えます。

1. [**本文**] タブで、リクエストエディタに示されているリクエストの例を削除します。次のコードを貼り付けます。

   ```
   {
       "MessageConfiguration":{
           "EmailMessage":{
               "FromAddress":"sender@example.com",
               "SimpleEmail":{
                   "Subject":{
                       "Data":"Sample Amazon Pinpoint message"
                   },
                   "HtmlPart":{
                       "Data":"<h1>Test message</h1><p>This is a sample message sent from <a href=\"https://aws.amazon.com/pinpoint\">Amazon Pinpoint</a> using the SendMessages API.</p>"
                   },
                   "TextPart":{
                       "Data":"This is a sample message sent from Amazon Pinpoint using the SendMessages API."
                   }
               }
           }
       },
       "Addresses":{
           "recipient@example.com": {
               "ChannelType": "EMAIL"
           }
       }
   }
   ```

1. 前述のコードで、*sender@example.com* を検証済みの E メールアドレスに置き換えます。*recipient@example.com* を、メッセージの送信先にする検証済み E メールアドレスに置き換えます。
**注記**  
アカウントがまだ Amazon Pinpoint E メールサンドボックスにある場合は、Amazon Pinpoint アカウントで検証済みのアドレスまたはドメインにのみ E メールを送信できます。アカウントをサンドボックスから削除する方法については、『*Amazon Pinpoint ユーザーガイド*』の「[ Requesting production access for email](https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-setup-production-access.html)」を参照してください。

1. **[送信]** を選択します。メッセージが正常に送信された場合、[レスポンス] ペインに `200 OK` のステータスが表示されます。

   ```
   {
       "ApplicationId": "12345678901234567890123456789012",
       "RequestId": "<sampleValue>",
       "Result": {
           "recipient@example.com": {
               "DeliveryStatus": "SUCCESSFUL",
               "StatusCode": 200,
               "StatusMessage": "<sampleValue>",
               "MessageId": "<sampleValue>"
           }
       }
   }
   ```

# Amazon Pinpoint で SMS 登録システムを設定する
<a name="tutorials-two-way-sms"></a>

SMS メッセージ (テキストメッセージ) は、Amazon Pinpoint を使用して時間的制約のあるメッセージをお客様に送信するのに最適な方法です。多くの人が常に自分の電話を近くに置いているので、SMS メッセージはプッシュ通知、E メール、または電話よりも人々の注意を引く傾向があります。

お客様の携帯電話番号を取り込むには、普通、ウェブベースのフォームを使用します。お客様の電話番号を確認し、サブスクリプションを確認したら、そのお客様にプロモーション、トランザクション、販売促進、取引、および情報提供の SMS メッセージを送信できます。

このチュートリアルでは、お客様の連絡先情報を取り込むためのウェブフォームの設定について説明します。ウェブフォームはこの情報を Amazon Pinpoint に送信します。次に、Amazon Pinpoint は電話番号が有効であることを確認し、その電話番号に関連するその他のメタデータをキャプチャします。その後で、Amazon Pinpoint は、お客様にサブスクリプションについて確認するメッセージを送信します。お客様がサブスクリプションを確認したら、Amazon Pinpoint はお客様がメッセージを受信するように選択します。

次のアーキテクチャダイアグラムは、このソリューションでのデータフローを示しています。

![\[\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_Architecture.png)


## ダブルオプトインについて
<a name="tutorials-two-way-sms-double-opt-in"></a>

このチュートリアルでは、双方向 SMS メッセージを使用する Amazon Pinpoint でのダブルオプトインのセットアップ方法について説明します。

SMS ダブルオプトインシステムでは、お客様は、ウェブフォームまたはアプリ内で送信することによって、電話番号を提供します。お客様からのリクエストを受信したら、Amazon Pinpoint に新しいエンドポイントを作成します。新しいエンドポイントはコミュニケーションからオプトアウトされているはずです。次に、その電話番号にメッセージを送信します。メッセージの中で、受信者に特定の単語やフレーズ (「はい」や「確認」など) で返事をしてサブスクリプションを確認します。お客様が指定した単語またはフレーズを使用してメッセージに応答した場合は、エンドポイントのステータスをオプトインに変更します。それ以外の場合、お客様が応答しなかったり、別の単語やフレーズで応答したりした場合は、エンドポイントをオプトアウトのステータスのままにしておくことができます。

## このソリューションについて
<a name="tutorials-two-way-sms-about"></a>

このセクションには、このチュートリアルで構築しようとしているソリューションに関する情報が含まれています。

**対象者**  
このチュートリアルは、開発者とシステム実装者を対象としています。このチュートリアルの手順を行うのに Amazon Pinpoint に精通している必要はありません。ただし、IAM ポリシーの管理、Node.js での Lambda 関数の作成、およびウェブコンテンツのデプロイについて慣れている必要があります。

**使用される機能**  
このチュートリアルには、次の Amazon Pinpoint 機能の使用例が含まれています。
+ トランザクション SMS メッセージの送信
+ 電話番号検証を使用して電話番号に関する情報を取得する
+ 双方向 SMS メッセージングを使用して着信 SMS メッセージを受信する
+ 動的なセグメントを作成する
+ キャンペーンの作成
+ を使用して Amazon Pinpoint API を操作する AWS Lambda

**所要時間**  
このチュートリアルを完了するには、約 1 時間かかります。このソリューションを実装した後は、独自のユースケースに合わせてソリューションを改良するために実行できる追加のステップがあります。

**リージョン別制限**  
このチュートリアルでは、Amazon Pinpoint コンソールを使用してロングコードをリースする必要があります。Amazon Pinpoint コンソールを使用して、複数の国を拠点とする専用のロングコードをリースできます。ただし、SMS メッセージの送信に使用できるのは、カナダを拠点とするロングコードだけです。(他の国や地域を拠点とするロングコードを使用してボイスメッセージを送信できます。)

この制限を念頭に置いて、このチュートリアルのコード例を作成しました。例えば、コード例では、受信者の電話番号は常に 10 桁で国コードは 1 であると想定しています。米国またはカナダ以外の国またはリージョンでこのソリューションを実装する場合は、コード例を適切に修正する必要があります。

**リソース使用量のコスト**  
 AWS アカウントの作成には料金はかかりません。ただし、このソリューションを実装することによって、以下のコストが発生する可能性があります。
+ [**Long code lease costs**] – このチュートリアルを完了するにはロングコードをリースする必要があります。カナダを拠点とするロングコードは、1 か月あたり 1.00 USD のコストがかかります。
+ [**Phone number validation usage**] – このチュートリアルのソリューションでは、Amazon Pinpoint の電話番号を検証する機能を使用して、受信した各番号が有効で正しい形式であることを確認し、電話番号に関する追加情報を取得します。電話番号検証のリクエストには、1 件あたり 0.006 米ドル (USD) の料金が発生します。
+ [**Message sending costs**] – このチュートリアルのソリューションは、アウトバウンド SMS メッセージを送信します。Amazon Pinpoint を通じて送信するメッセージごとに料金が発生します。各メッセージに対して支払う料金は、受信者の国または地域によって異なります。米国内の受信者 (米国領を除く) にメッセージを送信すると、メッセージあたり 0.00645 米ドル (USD) をお支払いいただきます。カナダの受信者にメッセージを送信すると、受信者の通信事業者と場所に応じて、0.00109～0.02 米ドル (USD) をお支払いいただきます。
+ [**Message receiving costs**] – このソリューションは、着信 SMS メッセージも受信して処理します。Amazon Pinpoint アカウントに関連付けられている電話番号に送信される各着信メッセージに対してお支払いいただきます。支払い額は、受信側の電話番号によって異なります。受信番号が米国 (米国領を除く) に拠点を置いている場合、受信メッセージあたり 0.0075米ドル (USD) をお支払いいただきます。番号がカナダを拠点としている場合、受信メッセージあたり 0.00155 米ドル (USD) をお支払いいただきます。
+ [**Lambda usage**] – このソリューションでは Amazon Pinpoint API とやり取りする 2 つの Lambda 関数を使用します。Lambda 関数を呼び出すと、関数のリクエストの数、コードの実行に要する時間、および関数が使用するメモリの量に基づいて課金されます。このチュートリアルの関数はごくわずかなメモリしか使用せず、通常 1～3 秒間実行されます。このソリューションの使用の一部またはすべての使用量が Lambda 無料利用枠内に該当します。詳細については、「[Lambda pricing](https://aws.amazon.com/lambda/pricing/)」を参照してください。
+ [**API Gateway usage**] – このソリューションのウェブフォームは、 によって管理されている API を呼び出します。API Gateway への 100 万回の呼び出しごとに、Amazon Pinpoint を使用する AWS リージョンに応じて 3.50～3.70 USD を支払います。詳細については、[[API Gateway pricing](https://aws.amazon.com/api-gateway/pricing/)] を参照してください。
+ [**Web hosting costs**] – このソリューションには、ウェブサイトでホストする必要があるウェブベースのフォームが含まれています。このコンテンツをホストするための支払い額は、ウェブホスティングプロバイダーによって異なります。

**注記**  
このリストに示されているすべての価格は米ドル (USD)。

**次の手順**: [前提条件](tutorials-two-way-sms-prereqs.md)

# Amazon Pinpoint で SMS を設定するための前提条件
<a name="tutorials-two-way-sms-prereqs"></a>

このチュートリアルを開始する前に、次の前提条件を完了する必要があります。
+ AWS アカウントを持っている必要があります。AWS アカウントを作成するには、[「https://console.aws.amazon.com/」](https://console.aws.amazon.com/)、[**Create a new AWS account**] を選択します。
+ AWS マネジメントコンソール へのサインインに使用するアカウントは、次のタスクを実行できる必要があります。
  + 新しい IAM ポリシーおよびロールを作成する
  + 新しい Amazon Pinpoint プロジェクトを作成する
  + 新しい Lambda 関数を作成する
  + API Gateway で新しい API を作成する
+ ウェブページをホストして公開する方法が必要です。ウェブページをホストするために AWS サービスを使用できますが、必須ではありません。
**ヒント**  
AWS サービスを使用してウェブページをホストする方法の詳細については、「[静的ウェブサイトをホスティングする](https://aws.amazon.com/getting-started/hands-on/host-static-website/)」を参照してください。

**Next**: [Amazon Pinpoint を設定する](tutorials-two-way-sms-part-1.md)

# Amazon Pinpoint で SMS を設定する
<a name="tutorials-two-way-sms-part-1"></a>

SMS メッセージを設定する前に、Amazon Pinpoint プロジェクトが必要です。このセクションでは、以下の作業を行います。
+ Amazon Pinpoint でプロジェクトを作成する
+ SMS チャネルを有効にして電話番号をリースする
+ 双方向 SMS メッセージングを設定する

始める前に、[前提条件](tutorials-two-way-sms-prereqs.md)を確認します。

## Amazon Pinpoint でプロジェクトを作成する
<a name="tutorials-two-way-sms-part-1-create-project"></a>

開始するには、Amazon Pinpoint プロジェクトを作成する必要があります。Amazon Pinpoint では、*プロジェクト*は、セグメント、キャンペーン、設定、および共通の目的で結合されたデータで構成されます。例えば、特定のアプリケーション、または特定のブランドまたはマーケティングイニシアティブに関連するすべてのコンテンツを含むプロジェクトを使用できます。Amazon Pinpoint にお客様の情報を追加すると、その情報はプロジェクトに関連付けられます。

新しいプロジェクトを作成するためのステップは、以前 Amazon Pinpoint にプロジェクトを作成したことがあるかどうかによって異なります。

### プロジェクトを作成する (新しい Amazon Pinpoint ユーザー)
<a name="tutorials-two-way-sms-part-1-create-project-opt-1"></a>

これらのステップでは、現在の AWS リージョンでプロジェクトを作成したことがない場合に、新しい Amazon Pinpoint プロジェクトを作成するプロセスについて説明します。

**プロジェクトを作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/) で Amazon Pinpoint コンソールを開きます。

1. 次の図に示すように、リージョンセレクタを使用して、使用する AWS リージョンを選択します。不明な場合は、最寄りに配置されたリージョンを選択します。  
![\[米国東部 (バージニア北部) が選択されていることを示すリージョンのドロップダウン。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/Region_Selector.png)

1. [**開始する**] の [**名前**] にキャンペーン (**SMSRegistration** など) の名前を入力して、[**プロジェクトを作成する**] を選択します。

1. [**Configure features**] ページで、[**Skip this step**] を選択します。

1. ナビゲーションペインで、[**All projects**] を選択します。

1. [**すべてのプロジェクト**] ページで、先ほど作成したプロジェクトの横に、[**プロジェクト ID**] 列に表示されている値をコピーします。
**ヒント**  
このチュートリアルでは、いくつかの異なる場所でこの ID を使用する必要があります。プロジェクト ID は、後でコピーできるように都合の良い場所に保管してください。

### プロジェクトを作成する (既存の Amazon Pinpoint ユーザー)
<a name="tutorials-two-way-sms-part-1-create-project-opt-2"></a>

これらのステップでは、現在の AWS リージョンでプロジェクトを既に作成している場合に、新しい Amazon Pinpoint プロジェクトを作成するプロセスについて説明します。

**プロジェクトを作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/) で Amazon Pinpoint コンソールを開きます。

1. 次の図に示すように、リージョンセレクタを使用して、使用する AWS リージョンを選択します。不明な場合は、最寄りに配置されたリージョンを選択します。  
![\[米国東部 (バージニア北部) が選択されていることを示すリージョンのドロップダウン。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/Region_Selector.png)

1. [**All projects**] ページで、[**Create a project**] を選択します。

1. [**プロジェクトを作成する**] ウィンドウの [**プロジェクト名**] に、プロジェクトの名前 (**SMSRegistration** など) を入力します。**[作成]** を選択します。

1. [**Configure features**] ページで、[**Skip this step**] を選択します。

1. ナビゲーションペインで、[**All projects**] を選択します。

1. [**すべてのプロジェクト**] ページで、先ほど作成したプロジェクトの横に、[**プロジェクト ID**] 列に表示されている値をコピーします。
**ヒント**  
このチュートリアルでは、いくつかの異なる場所でこの ID を使用する必要があります。プロジェクト ID は、後でコピーできるように都合の良い場所に保管してください。

## 専用の電話番号を取得する
<a name="tutorials-two-way-sms-part-1-set-up-channel"></a>

**注記**  
Amazon Pinpoint のユーザーガイドドキュメントを更新しました。SMS と音声リソースを作成、設定、管理する方法に関する最新情報を入手するには、新しい「[AWS End User Messaging SMS ユーザーガイド](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html)」を参照してください。

プロジェクトを作成すると、そのプロジェクトの機能の設定を開始できます。このセクションでは、SMS チャネルを有効にし、SMS メッセージを送信するときに使用する専用の電話番号を取得します。

**注記**  
このセクションでは、ブランドおよびキャンペーン登録後に米国の 10DLC 電話番号をリースする、または米国の通話料無料番号やカナダのロングコードをリースすることを前提としています。このセクションの手順に従い、米国またはカナダ以外の国を選択すると、その番号を使用して SMS メッセージを送信することはできません。米国やカナダ以外の国で SMS 対応のロングコードをリースする方法については、「*AWS End User Messaging SMS ユーザーガイド*」の「[サポートされている国とリージョン (SMS チャネル)](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。

Amazon Pinpoint コンソールを使用して SMS チャネルを有効にするには、次の手順に従います。

**SMS チャネルを有効にする**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/) で Amazon Pinpoint コンソールを開きます。

1. ナビゲーションペインで、[**設定**] の [**SMS および音声**] を選択します。

1. [**SMS 設定**] の横の [**編集**] を選択します。

1. [**全般設定**] で、[**Enable the SMS channel for this project**] を選択し、[**変更の保存**] を選択します。

 AWS エンドユーザーメッセージング SMS コンソールを使用して電話番号をリクエストするには、次の手順に従います。

**電話番号をリクエストする (コンソール)**

1. [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/) で AWS エンドユーザーメッセージング SMS コンソールを開きます。
**注記**  
Amazon Pinpoint プロジェクトを AWS リージョン 作成したのと同じ で電話番号をリクエストしてください。

1. ナビゲーションペインの **[設定]** で、**[電話番号]**、**[リクエスト発信者]** の順を選択します。

1. **[メッセージ送信先の国]** の **[国を選択]**] ページで、[米国] または [カナダ] を選択します。[**次へ**] を選択します。

1. **[メッセージングのユースケース]** セクションで、以下を入力します。
   + **[番号機能]** で **[SMS]** を選択します。
**重要**  
電話番号を購入すると、SMS と音声の機能は変更できなくなります。
   + **[双方向メッセージング]** で、**[はい]** を選択します。

1. [**次へ**] を選択します。

1. **[発信者タイプを選択]** で **[ロングコード]** または **[10DLC]** を選択します。

   10DLC を選択し、既にキャンペーンを登録している場合は、**[登録済みキャンペーンに関連付ける]** からキャンペーンを選択できます。

1. [**次へ**] を選択します。

1. **[確認とリクエスト]** で、リクエストを送信する前に検証して編集できます。**[リクエスト]** を選択します。

1. リクエストした電話番号の種類によっては、**[登録が必須です]** ウィンドウが表示される場合があります。電話番号はこの登録に関連付けられるため、登録が承認されるまではメッセージを送信できません。登録要件の詳細については、「[登録](https://docs.aws.amazon.com/sms-voice/latest/userguide/registrations.html)」を参照してください。

   1. **[登録フォーム名]** に、わかりやすい名前を入力します。

   1. **[登録を開始]** を選択して電話番号の登録を完了するか、**[後で登録]** を選択します。
**重要**  
登録が承認されるまでは、電話番号からメッセージを送信できません。  
 登録状況にかかわらず、電話番号の月額リース料は引き続き請求されます。登録要件の詳細については、「[登録](https://docs.aws.amazon.com/sms-voice/latest/userguide/registrations.html)」を参照してください。

## 双方向 SMS を有効にする
<a name="tutorials-two-way-sms-part-1-enable-two-way"></a>

これで、専用の電話番号があるので、双方向 SMS をセットアップできます。双方向 SMS を有効にすると、お客様は送信された SMS メッセージに応答することができるようになります。このソリューションでは、双方向 SMS を使用して、お客様が SMS プログラムにサブスクライブすることを希望することを確認する手段を提供します。

 AWS エンドユーザーメッセージング SMS コンソールを使用して双方向 SMS を有効にするには、次の手順に従います。

**双方向 SMS を有効にする**

1. [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/) で AWS エンドユーザーメッセージング SMS コンソールを開きます。

1. ナビゲーションペインの **[設定]** で、**[電話番号]** を選択します。

1. **[電話番号]** ページで、電話番号を選択します。

1. **[双方向 SMS]** タブで、**[設定を編集]** ボタンを選択します。

1. **[設定を編集]** ページで **[双方向メッセージを有効にする]** を選択します。

1. **[送信先タイプ]** で、**[Amazon SNS]** を選択します。
   + **新しい Amazon SNS トピック** – AWS エンドユーザーメッセージング SMS は、アカウントにトピックを作成します。トピックは、必要なすべてのパーミッションがあれば、自動的に作成されます。Amazon SNS トピックの詳細については、「Amazon SNS デベロッパーガイド」の「[Amazon SNS を設定する](https://docs.aws.amazon.com/sns/latest/dg/sns-configuring.html)」を参照してください。**
   + **[受信メッセージの送信先]** に、トピック名 (**SMSRegistrationFormTopic** など) を入力します。

1. **[双方向チャネルの役割]** で、**[SNS トピックポリシーを使用]** を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

End AWS User Messaging SMS コンソールを使用して、顧客がサブスクリプション ( **Yes**や など) を確認するために送信するキーワードを電話番号に追加します**Confirm**。

**キーワードを追加する**

1. [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/) で AWS エンドユーザーメッセージング SMS コンソールを開きます。

1. ナビゲーションペインで、**[設定]** の **[電話番号]** を選択します。

1. **[電話番号]** ページで、キーワードを追加する電話番号を選択します。

1. **[キーワード]** タブで **[キーワードを追加]** ボタンを選択します。

1. **[カスタムキーワード]** ペインで、以下を追加します。
   + **キーワード** — 追加する新しいキーワード (**Yes** や **Confirm** など)。
   + **応答メッセージ** — 受信者に送り返すメッセージ。
   + **キーワードアクション** — キーワードの受信時に実行するアクション。**[自動応答]** を選択します。

1. **[キーワードを追加]** を選択します。

**Next**: [IAM ポリシーおよびロールを作成する](tutorials-two-way-sms-part-2.md)

# Amazon Pinpoint で SMS で使用する IAM ポリシーとロールを作成する
<a name="tutorials-two-way-sms-part-2"></a>

Amazon Pinpoint で SMS 登録ソリューションを実装する次のステップは、 AWS Identity and Access Management (IAM) でポリシーとロールを設定することです。このソリューションでは、Amazon Pinpoint に関連付けられている特定のリソースへのアクセスを提供するポリシーを作成する必要があります。次に、ロールを作成して、ポリシーをアタッチします。このチュートリアルの後半で、このロールを使用して Amazon Pinpoint API で特定のオペレーションを呼び出す AWS Lambda 関数を作成します。

## IAM ポリシーを作成する
<a name="tutorials-two-way-sms-part-2-create-policy"></a>

このセクションでは、IAM ポリシーを作成する方法を説明します。このポリシーを使用するユーザーとロールは、以下を実行できます。
+ 電話番号検証機能を使用する
+ Amazon Pinpoint エンドポイントを表示、作成、および更新する
+ Amazon Pinpoint エンドポイントにメッセージを送信する

このチュートリアルでは、Lambda にこれらのタスクを実行する機能を付与できます。ただし、セキュリティを強化するために、このポリシーでは、*最小特権*を付与する原則が使用されます。つまり、このソリューションを完了するために必要なアクセス許可のみが付与され、それ以上は付与されません。このポリシーには、次のような制限事項があります。
+ 特定のリージョンで 電話番号検証 API を呼び出すためにのみ使用できます。
+ 特定の Amazon Pinpoint プロジェクトに関連付けられているエンドポイントを表示、作成、または更新するためにのみ使用できます。
+ 特定の Amazon Pinpoint プロジェクトに関連付けられているエンドポイントにメッセージを送信するためにのみ使用できます。

**ポリシーを作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. ナビゲーションペインで **ポリシー**を選択してから **ポリシーの作成**を選択します。

1. [**JSON**] タブに、以下のコードを貼り付けます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents",
                   "logs:CreateLogGroup"
               ],
               "Resource": "arn:aws:logs:*:*:*"
           },
           {
               "Effect": "Allow",
               "Action": "mobiletargeting:SendMessages",
               "Resource": "arn:aws:mobiletargeting:us-east-1:111122223333:apps/projectId/*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "mobiletargeting:GetEndpoint",
                   "mobiletargeting:UpdateEndpoint",
                   "mobiletargeting:PutEvents"
               ],
               "Resource": "arn:aws:mobiletargeting:us-east-1:111122223333:apps/projectId/endpoints/*"
           },
           {
               "Effect": "Allow",
               "Action": "mobiletargeting:PhoneNumberValidate",
               "Resource": "arn:aws:mobiletargeting:us-east-1:111122223333:phone/number/validate"
           }
       ]
   }
   ```

------

   前述の例で、以下を実行します。
   + *region* を、 `us-east-1`や など、Amazon Pinpoint を使用する AWS リージョンに置き換えます`eu-central-1`。
**ヒント**  
Amazon Pinpoint が利用可能な AWS リージョンの完全なリストについては、「」の[AWS 「リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#pinpoint_region)」を参照してください*AWS 全般のリファレンス*。
   + *accountId* を AWS アカウントの一意の ID に置き換えます。
   + *projectId* をこのチュートリアルの「[Amazon Pinpoint でプロジェクトを作成する](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-create-project)」で作成したプロジェクトの一意の ID で置き換えます。
**注記**  
`logs` アクションは、Lambda のアウトプットを CloudWatch Logs に記録することを可能にします。

1. [**次へ**] を選択します。

1. **[ポリシー名]** にポリシーの名前を入力します (例: **RegistrationFormPolicy**)。[**Create policy**] (ポリシーの作成) を選択します。

## IAM ロールを作成する
<a name="tutorials-two-way-sms-part-2-create-role"></a>

**ロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. IAM コンソールのナビゲーションペインで、[**ロール**]、[**ロールを作成する**] の順に選択します。

1. **[信頼されたエンティティタイプ]** で **[AWS のサービス]** を選択し、**[サービスまたはユースケース]** でドロップダウンリストから **[Lambda]** を選択します。

1. [**次へ**] を選択します。

1. **[アクセス許可ポリシー]** で、前のセクションで作成したポリシーを選択または検索し、**[次へ]** を選択します。

1. **[ロールの詳細]** の **[ロール名]** に、**SMSRegistrationForm** など、ロールの名前を入力します。[**ロールの作成**] を選択してください。

**Next**:[Lambda 関数を作成する](tutorials-two-way-sms-part-3.md)

# Amazon Pinpoint SMS メッセージングで使用する Lambda 関数を作成する
<a name="tutorials-two-way-sms-part-3"></a>

このセクションでは、Amazon Pinpoint SMS メッセージングで使用するための 2 つの Lambda 関数を作成して設定する方法について説明します。後で、特定のイベントが発生したときにこれらの関数を呼び出すように API Gateway および Amazon Pinpoint をセットアップします。これらの関数のどちらも、指定した Amazon Pinpoint プロジェクトにエンドポイントを作成し、更新します。最初の関数では、電話番号検証機能も使用します。

## お客様の情報を検証する関数を作成し、エンドポイントを作成する
<a name="tutorials-two-way-sms-part-3-create-register-function"></a>

最初の関数は、Amazon API Gateway から受信する登録フォームから入力を受けます。この情報を使用して Amazon Pinpoint の[電話番号検証](https://docs.aws.amazon.com/pinpoint/latest/developerguide/validate-phone-numbers.html)機能を使用して、お客様の電話番号に関する情報を取得します。次に、検証されたデータを使用して、指定された Amazon Pinpoint プロジェクトに新しいエンドポイントを作成します。デフォルトでは、関数に作成されるエンドポイントはユーザーからの今後の通信からオプトアウトされますが、このステータスは 2 番目の関数で変更できます。最後に、この関数では、ユーザーから SMS 通信を受信することをお客様が希望することを確認するように求めるメッセージをお客様に送信します。

**Lambda 関数を作成するには**

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) で AWS Lambda コンソールを開きます。

1. [**関数の作成**] を選択してください。

1. **[関数の作成]** で、**[設計図の使用]** を選択します。

1. 検索フィールドに **hello** と入力して Enter キーを押します。結果のリストで、次のイメージに示すように、`hello-world` Node.js 関数を選択します。  
![\[[設計図の使用] が選択されたことを示す [関数の作成] ページ。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_LAM_Step1.5.png)

1. **[基本的な情報]** で、以下を実行します。
   + [**名前**] には、**RegistrationForm** など、関数の名前を入力します。
   + [**Role**] で、[**既存のロールを選択**] を選択します。
   + **[既存のロール]** に、「[IAM ロールを作成する](tutorials-two-way-sms-part-2.md#tutorials-two-way-sms-part-2-create-role)」で作成した **[SMSRegistrationForm]** ロールを選択します。

   完了したら、[**関数の作成**] を選択します。

1. コードエディタで **[コードソース]** のサンプル関数を削除し、次のコードを貼り付けます。

   ```
   import { PinpointClient, PhoneNumberValidateCommand, UpdateEndpointCommand, SendMessagesCommand } from "@aws-sdk/client-pinpoint"; // ES Modules import
   const pinClient = new PinpointClient({region: process.env.region});  
   
   // Make sure the SMS channel is enabled for the projectId that you specify.
   // See: https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-setup.html
   var projectId = process.env.projectId;
   
   // You need a dedicated long code in order to use two-way SMS. 
   // See: https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-voice-manage.html#channels-voice-manage-request-phone-numbers
   var originationNumber = process.env.originationNumber;
   
   // This message is spread across multiple lines for improved readability.
   var message = "ExampleCorp: Reply YES to confirm your subscription. 2 msgs per "
               + "month. No purchase req'd. Msg&data rates may apply. Terms: "
               + "example.com/terms-sms";
               
   var messageType = "TRANSACTIONAL";
   
   export const handler = async (event, context) => {
     console.log('Received event:', event);
     await validateNumber(event);
   };
   
   async function validateNumber (event) {
     var destinationNumber = event.destinationNumber;
     if (destinationNumber.length == 10) {
       destinationNumber = "+1" + destinationNumber;
     }
     var params = {
       NumberValidateRequest: {
         IsoCountryCode: 'US',
         PhoneNumber: destinationNumber
       }
     };
     try{
       const PhoneNumberValidateresponse = await pinClient.send( new  PhoneNumberValidateCommand(params));
       console.log(PhoneNumberValidateresponse);
        if (PhoneNumberValidateresponse['NumberValidateResponse']['PhoneTypeCode'] == 0) {
           await createEndpoint(PhoneNumberValidateresponse, event.firstName, event.lastName, event.source);
           
         } else {
           console.log("Received a phone number that isn't capable of receiving "
                      +"SMS messages. No endpoint created.");
         }
     }catch(err){
       console.log(err);
     }
   }
   
   async function createEndpoint(data, firstName, lastName, source) {
     var destinationNumber = data['NumberValidateResponse']['CleansedPhoneNumberE164'];
     var endpointId = data['NumberValidateResponse']['CleansedPhoneNumberE164'].substring(1);
     
     var params = {
       ApplicationId: projectId,
       // The Endpoint ID is equal to the cleansed phone number minus the leading
       // plus sign. This makes it easier to easily update the endpoint later.
       EndpointId: endpointId,
       EndpointRequest: {
         ChannelType: 'SMS',
         Address: destinationNumber,
         // OptOut is set to ALL (that is, endpoint is opted out of all messages)
         // because the recipient hasn't confirmed their subscription at this
         // point. When they confirm, a different Lambda function changes this 
         // value to NONE (not opted out).
         OptOut: 'ALL',
         Location: {
           PostalCode:data['NumberValidateResponse']['ZipCode'],
           City:data['NumberValidateResponse']['City'],
           Country:data['NumberValidateResponse']['CountryCodeIso2'],
         },
         Demographic: {
           Timezone:data['NumberValidateResponse']['Timezone']
         },
         Attributes: {
           Source: [
             source
           ]
         },
         User: {
           UserAttributes: {
             FirstName: [
               firstName
             ],
             LastName: [
               lastName
             ]
           }
         }
       }
     };
     try{
       const UpdateEndpointresponse = await pinClient.send(new UpdateEndpointCommand(params));
       console.log(UpdateEndpointresponse);
       await sendConfirmation(destinationNumber);
     }catch(err){
       console.log(err);
     }  
   }
   
   async function sendConfirmation(destinationNumber) {
     var params = {
       ApplicationId: projectId,
       MessageRequest: {
         Addresses: {
           [destinationNumber]: {
             ChannelType: 'SMS'
           }
         },
         MessageConfiguration: {
           SMSMessage: {
             Body: message,
             MessageType: messageType,
             OriginationNumber: originationNumber
           }
         }
       }
     };
     try{
       const SendMessagesCommandresponse = await pinClient.send(new SendMessagesCommand(params));
       console.log("Message sent! " 
             + SendMessagesCommandresponse['MessageResponse']['Result'][destinationNumber]['StatusMessage']);
     }catch(err){
       console.log(err);
     }
   }
   ```

1. **[設定]** タブの **[環境変数]** で、**[編集]**、**[環境変数の追加]** の順に選択し、次の操作を行います。
   + 最初の行で、**originationNumber** のキーで変数を作成します。次に、「[ステップ 1.2](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-set-up-channel)」で受け取った専用ロングコードの電話番号に値を設定します。
**注記**  
電話番号には、必ずプラス記号 (\$1) および国コードを含めてください。ハイフン (-)、ピリオド (.)、または括弧など、その他の特殊文字を含めないでください。
   + 2 行目で、**projectId** のキーで変数を作成します。次に、「[ステップ 1.1](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-create-project)」で作成したプロジェクトの一意の ID に値を設定します。
   + 3 行目で、**region** のキーで変数を作成します。次に、**us-east-1** または **us-west-2** など、Amazon Pinpoint を使用するリージョンに値を設定します。

   終了したら、[**環境変数**] セクションは、次のイメージに示す例のようになります。  
![\[originationNumber、projectId、およびリージョンの環境変数。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_LAM_Step1.7.png)

1. ページの上部で、[**保存**] を選択します。

### 関数をテストする
<a name="tutorials-two-way-sms-part-3-create-register-function-test"></a>

関数を作成した後、テストして適切に設定されているかどうかを確認します。また、作成した IAM ロールに適切なアクセス許可があることを確認します。

**関数をテストするには**

1. **[テスト]** タブを選択します。

1. **[新しいイベントを作成]** を選択して、次の操作を行います。
   + [**Event name**] で、**MyPhoneNumber** など、テストイベントの名前を入力します。
   + コードエディタのサンプルコードを消去します。次のコードを貼り付けます。

     ```
     {
       "destinationNumber": "+12065550142",
       "firstName": "Carlos",
       "lastName": "Salazar",
       "source": "Registration form test"
     }
     ```
   + 上記のコード例で、`destinationNumber`、`firstName`、および `lastName` 属性の値を、個人の連絡先情報など、テストに使用する値に置き換えます。この関数をテストすると、`destinationNumber` 属性で指定した電話番号に SMS メッセージが送信されます。指定した電話番号が SMS メッセージを受信できることを確認します。
   + **[作成]** を選択します。

1. [**Test**] を選択します。

1. [**実行結果: 成功**] で、[**詳細**] を選択します。[**ログ出力**] セクションで、関数の出力を確認します。関数がエラーなしで実行されたことを確認します。

   指定した `destinationNumber` に関連付けられたデバイスを確認し、テストメッセージを受信したことを確認します。

1. Amazon Pinpoint コンソール ([https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/)) を開きます。

1. **[すべてのプロジェクト]** ページで、「[Amazon Pinpoint でプロジェクトを作成する](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-create-project)」で作成したプロジェクトを選択します。

1. ナビゲーションペインの [**Segments**] を選択します。[**セグメント**] ページで、[**セグメントの作成**] を選択します。

1. [**セグメントグループ 1**] の [**Add filters to refine your segment**] で、[**Filter by user**] を選択します。

1. [**Choose a user attribute**] で、[**FirstName**] を選択します。次に、[**Choose values**] に、テストイベントで指定した名を選択します。

   [**Segment estimate**] セクションに、次のイメージに示すように、適格なエンドポイントがゼロであり、合計エンドポイントが 1 つであることが表示されます。この結果は正常です。関数が新しいエンドポイントを作成すると、エンドポイントがオプトアウトされます。Amazon Pinpoint のセグメントは、オプトアウトされたエンドポイントを自動的に除外します。  
![\[エンドポイントがゼロのセグメントグループ。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_LAM_Step8.9.png)

## 通信にお客様をオプトインする関数を作成する
<a name="tutorials-two-way-sms-part-3-create-optin-function"></a>

2 番目の関数は、お客様が最初の関数により送信されるメッセージに返信した場合のみ実行されます。お客様の返信に「[双方向 SMS を有効にする](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-set-up-channel)」で指定したキーワードが含まれている場合、関数はエンドポイントレコードを更新して、お客様を今後の通信にオプトインします。Amazon Pinpoint は、「[双方向 SMS を有効にする](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-set-up-channel)」で指定したメッセージを使い自動的に応答します。

お客様が応答しない場合、または指定されたキーワード以外で応答する場合、何も起こりません。お客様のエンドポイントは Amazon Pinpoint に残っていますが、セグメントの対象となることはできません。

**Lambda 関数を作成するには**

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) で AWS Lambda コンソールを開きます。

1. [**関数の作成**] を選択してください。

1. [**関数の作成**] で、[**設計図**] を選択します。

1. 検索フィールドに **hello** と入力して Enter キーを押します。結果のリストで、次のイメージに示すように、`hello-world` Node.js 関数を選択します。**[Configure]** (設定) を選択します。

1. **[Basic information]** (基本的な情報) で、以下を実行します。
   + [**名前**] には、**RegistrationForm\$1OptIn** など、関数の名前を入力します。
   + [**Role**] で、[**既存のロールを選択**] を選択します。
   + **[既存のロール]** に、「[IAM ロールを作成する](tutorials-two-way-sms-part-2.md#tutorials-two-way-sms-part-2-create-role)」で作成した [SMSRegistrationForm] ロールを選択します。

   完了したら、[**関数の作成**] を選択します。

1. コードエディタでサンプル関数を削除し、次のコードを貼り付けます。

   ```
   import { PinpointClient, UpdateEndpointCommand } from "@aws-sdk/client-pinpoint"; // ES Modules import
   
   // Create a new Pinpoint client instance with the region specified in the environment variables
   const pinClient = new PinpointClient({ region: process.env.region });
   
   // Get the Pinpoint project ID and the confirm keyword from environment variables
   const projectId = process.env.projectId;
   const confirmKeyword = process.env.confirmKeyword.toLowerCase();
   
   // This is the main handler function that is invoked when the Lambda function is triggered
   export const handler = async (event, context) => {
       console.log('Received event:', event);
   
       try {
           // Extract the timestamp, message, and origination number from the SNS event
           const timestamp = event.Records[0].Sns.Timestamp;
           const message = JSON.parse(event.Records[0].Sns.Message);
           const originationNumber = message.originationNumber;
           const response = message.messageBody.toLowerCase();
   
           // Check if the response message contains the confirm keyword
           if (response.includes(confirmKeyword)) {
               // If the confirm keyword is found, update the endpoint's opt-in status
               await updateEndpointOptIn(originationNumber, timestamp);
           }
       }catch (error) {
           console.error('An error occurred:', error);
           throw error; // Rethrow the error to handle it upstream
       }
   };
   
   // This function updates the opt-in status of a Pinpoint endpoint
   async function updateEndpointOptIn(originationNumber, timestamp) {
       // Extract the endpoint ID from the origination number
       const endpointId = originationNumber.substring(1);
   
        // Prepare the parameters for the UpdateEndpointCommand
       const params = {
           ApplicationId: projectId,
           EndpointId: endpointId,
           EndpointRequest: {
               Address: originationNumber,
               ChannelType: 'SMS',
               OptOut: 'NONE',
               Attributes: {
                   OptInTimestamp: [timestamp]
               },
           }
       };
   
       try {
           // Send the UpdateEndpointCommand to update the endpoint's opt-in status
           const updateEndpointResponse = await pinClient.send(new UpdateEndpointCommand(params));
           console.log(updateEndpointResponse);
           console.log(`Successfully changed the opt status of endpoint ID ${endpointId}`);
       } catch (error) {
           console.error('An error occurred while updating endpoint:', error);
           throw error; // Rethrow the error to handle it upstream
       }
   }
   ```

1. [**Environment variables (環境変数)**] で、以下の操作を実行します。
   + 最初の行で、**projectId** のキーで変数を作成します。次に、「[Amazon Pinpoint でプロジェクトを作成する](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-create-project)」で作成したプロジェクトの一意の ID に値を設定します。
   + 2 行目で、**region** のキーで変数を作成します。次に、**us-east-1** または **us-west-2** など、Amazon Pinpoint を使用するリージョンに値を設定します。
   + 3 行目で、**confirmKeyword** のキーで変数を作成します。次に、値を「[双方向 SMS を有効にする](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-set-up-channel)」で作成した確認キーワードに設定します。
**注記**  
キーワードでは大文字と小文字は区別されません。この関数は、受信メッセージを小文字に変換します。

   終了したら、[**環境変数**] セクションは、次のイメージに示す例のようになります。  
![\[projectId、リージョン、および confirmKeyword の環境変数。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_LAM_Step2.7.png)

1. ページの上部で、[**保存**] を選択します。

### 関数をテストする
<a name="tutorials-two-way-sms-part-3-create-optin-function-test"></a>

関数を作成した後、テストして適切に設定されているかどうかを確認します。また、作成した IAM ロールに適切なアクセス許可があることを確認します。

**関数をテストするには**

1. **[テスト]** を選択します。

1. [**テストイベントを設定する**] ページで、以下の操作を行います。

   1. **Create new test event**を選択します。

   1. [**Event name**] で、**MyResponse** など、テストイベントの名前を入力します。

   1. コードエディタのサンプルコードを消去します。次のコードを貼り付けます。

      ```
      {
        "Records":[
          {
            "Sns":{
              "Message":"{\"originationNumber\":\"+12065550142\",\"messageBody\":\"Yes\"}",
              "Timestamp":"2019-02-20T17:47:44.147Z"
            }
          }
        ]
      }
      ```

      上記のコード例では、`originationNumber` 属性の値を、前の Lambda 関数をテストしたときに使用した電話番号と置き換えます。`messageBody` の値を「[双方向 SMS を有効にする](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-enable-two-way)」で指定した双方向 SMS キーワードと置き換えます。オプションで、`Timestamp` の値を現在の日付と時刻と置き換えることができます。

   1. **[作成]** を選択します。

1. [**テスト**] を再度選択します。

1. [**実行結果: 成功**] で、[**詳細**] を選択します。[**ログ出力**] セクションで、関数の出力を確認します。関数がエラーなしで実行されたことを確認します。

1. Amazon Pinpoint コンソール ([https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/)) を開きます。

1. **[すべてのプロジェクト]** ページで、「[Amazon Pinpoint でプロジェクトを作成する](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-create-project)」で作成したプロジェクトを選択します。

1. ナビゲーションペインの [**Segments**] を選択します。[**セグメント**] ページで、[**セグメントの作成**] を選択します。

1. [**セグメントグループ 1**] の [**Add filters to refine your segment**] で、[**Filter by user**] を選択します。

1. [**Choose a user attribute**] で、[**FirstName**] を選択します。次に、[**Choose values**] に、テストイベントで指定した名を選択します。

   [**Segment estimate (セグメントの見積もり)**] セクションに、1 つの適格なエンドポイントがあり、合計エンドポイントが 1 つであることが表示されます。

**Next**:[Amazon API Gateway を設定する](tutorials-two-way-sms-part-4.md)

# Amazon Pinpoint で SMS メッセージングの Amazon API Gateway を設定する
<a name="tutorials-two-way-sms-part-4"></a>

このセクションでは、Amazon Pinpoint の SMS 登録の一部として Amazon API Gateway を使用して新しい API を作成します。本ソリューションでデプロイする登録フォームは、この API を呼び出します。そして、API Gateway は登録フォームで取得した情報を、「[Lambda 関数を作成する](tutorials-two-way-sms-part-3.md)」で作成した Lambda 関数に渡します。

## API を作成する
<a name="tutorials-two-way-sms-part-4-create-api"></a>

まず、API Gateway に新しい API を作成する必要があります。次の手順では、新しい REST API を作成する方法を示します。

**新しい API を作成するには**

1. API Gateway コンソール (「[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway/)」) を開きます。

1. **[API の作成]** を選択します。以下の選択を行います。
   + [**Choose the protocol (プロトコルの選択)**] で、[**REST**] を選択します。
   + [**Create new API (新しい API の作成)**] で、[**New API (新しい API)**] を選択します。
   + [**設定**] の [**名前**] に、**RegistrationForm** などの名前を入力します。[**説明**] に、必要に応じて、API の目的を説明するテキストを入力します。[**エンドポイントタイプ**] で、[**リージョン**] を選択します。続いて、[**API の作成**] を選択します。

   これらの設定の一例を次のイメージに示します。  
![\[プロトコルを REST に設定し、新しい API セットを作成し、API 名を RegistrationForm に設定して、エンドポイントタイプをリージョン別に設定します。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_APIGW_Step2.png)

## リソースを作成する
<a name="tutorials-two-way-sms-part-4-create-resource"></a>

API を作成したので、リソースの追加を開始することができます。その後、リソースに POST メソッドを追加して、API Gateway にこのメソッドから受け取ったデータを Lambda 関数に渡すように指示します。

1. [**アクション**] メニューで、[**リソースの作成**] を選択します。次のイメージに示すように、[**New Child Resource**] ペインの [**リソース名**] に **register** を入力します。**[リソースの作成]** を選択します。  
![\[登録するリソース名が設定されている [新しい子リソース] ペイン。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_APIGW_Step3.png)

1. [**アクション**] メニューから、[**メソッドの作成**] を選択します。次のイメージに示すように、表示されたメニューから、[**POST**] を選択します。次に、**[チェックマークを付ける]** ボタンを選択します。  
![\[[チェックマークを付ける] が選択されている [メソッドの作成] ペイン。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_APIGW_Step4.png)

1. [**/register - POST - Setup (/register - POST - セットアップ)**] ペインで、以下を指定します。
   + [**Integration type (統合タイプ)**] で、[**Lambda Function (Lambda 関数)**] を選択します。
   + [**Use Lambda Proxy integration**] を選択します。
   + [**Lambda Region**]で、Lambda 関数を作成したリージョンを選択します。
   + **[Lambda 関数]** に「[Lambda 関数を作成する](tutorials-two-way-sms-part-3.md)」で作成した RegisterEndpoint 関数を選択します。

   これらの設定の一例を次のイメージに示します。  
![\[Lambda 関数が選択された [/register - POST - Setup] ペイン。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_APIGW_Step5.png)

   **[保存]** を選択します。表示されたウィンドウで、**[OK]** を選択して、API Gateway に Lambda 関数を実行するためのアクセス許可を付与します。

## API をデプロイする
<a name="tutorials-two-way-sms-part-4-deploy-api"></a>

これで、API を使用できるようになりました。この時点で、パブリックアクセス可能なエンドポイントを作成するために、これをデプロイする必要があります。

1. [**アクション**] メニューから、[**API のデプロイ**] を選択します。[**API のデプロイ**] ウィンドウで、以下の選択を行います。
   + [**デプロイされるステージ**] で、[**新しいステージ**] を選択します。
   + [**Stage name (ステージ名)**] に **v1** と入力します。
   + デプロイを選択します。

   これらの選択の一例を次のイメージに示します。  
![\[ステージ名が v1 に設定されているデプロイ API ウィンドウ\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_APIGW_Step6.png)

1. [**v1 Stage Editor**] ペインで、[**/register**] リソースを選択してから [**POST**] メソッドを選択します。次のイメージに示すように、[**呼び出し URL**] の横に表示されているアドレスをコピーします。  
![\[コピーする呼び出し URL を表示した [v1 Stage Editor] ペイン\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_APIGW_Step7.png)

1. ナビゲーションペインで、**[リソース]** を選択します。リソースのリストで、[**/register**] リソースを選択します。最後に、次のイメージに示すように、[**アクション**] メニューで、[**CORS を有効にする**] を選択します。  
![\[[CORS の有効化] が選択された [アクション] のドロップダウンメニュー\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_APIGW_Step8.png)

1. [**CORS を有効にする**] ペインで[**CORS を有効にして既存の CORS ヘッダーを置換**] を選択します。

**次の手順**: [ウェブフォームを作成してデプロイする](tutorials-two-way-sms-part-5.md)

# Amazon Pinpoint の SMS メッセージングを使用するウェブフォームを作成してデプロイする
<a name="tutorials-two-way-sms-part-5"></a>

Amazon Pinpoint を使用して SMS メッセージングの AWS サービスを使用するすべてのコンポーネントが導入されました。最後のステップは、お客様のデータをキャプチャするウェブフォームを作成してデプロイすることです。

## JavaScript フォームハンドラを作成する
<a name="tutorials-two-way-sms-part-5-create-form-handler"></a>

このセクションでは、次のセクションで作成するウェブフォームのコンテンツを解析する JavaScript 関数を作成します。コンテンツを解析した後、この関数は、「[Amazon API Gateway を設定する](tutorials-two-way-sms-part-4.md)」で作成した API にデータを送信します。

**フォームハンドラを作成するには**

1. テキストエディタで新規ファイルを作成します。

1. エディタで、次のコードを貼り付けます。

   ```
   $(document).ready(function() {
   
     // Handle form submission.
     $("#submit").click(function(e) {
   
       var firstName = $("#firstName").val(),
           lastName = $("#lastName").val(),
           source = window.location.pathname,
           optTimestamp = undefined,
           utcSeconds = Date.now() / 1000,
           timestamp = new Date(0),
           phone = $("#areaCode").val()
                 + $("#phone1").val()
                 + $("#phone2").val();
   
       e.preventDefault();
   
       if (firstName == "") {
         $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Please enter your first name.</div>');
       } else if (lastName == "") {
         $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Please enter your last name.</div>');
       } else if (phone.match(/[^0-9]/gi)) {
         $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Your phone number contains invalid characters. Please check the phone number that you supplied.</div>');
       } else if (phone.length < 10) {
         $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Please enter your phone number.</div>');
       } else if (phone.length > 10) {
         $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Your phone number contains too many digits. Please check the phone number that you supplied.</div>');
       } else {
         $('#submit').prop('disabled', true);
         $('#submit').html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>  Saving your preferences</button>');
   
         timestamp.setUTCSeconds(utcSeconds);
   
         var data = JSON.stringify({
           'destinationNumber': phone,
           'firstName': firstName,
           'lastName': lastName,
           'source': source,
           'optTimestamp': timestamp.toString()
         });
   
         $.ajax({
           type: 'POST',
           url: 'https://example.execute-api.us-east-1.amazonaws.com/v1/register',
           contentType: 'application/json',
           data: data,
           success: function(res) {
             $('#form-response').html('<div class="mt-3 alert alert-success" role="alert"><p>Congratulations! You&apos;ve successfully registered for SMS Alerts from ExampleCorp.</p><p>We just sent you a message. Follow the instructions in the message to confirm your subscription. We won&apos;t send any additional messages until we receive your confirmation.</p><p>If you decide you don&apos;t want to receive any additional messages from us, just reply to one of our messages with the keyword STOP.</p></div>');
             $('#submit').prop('hidden', true);
             $('#unsubAll').prop('hidden', true);
             $('#submit').text('Preferences saved!');
           },
           error: function(jqxhr, status, exception) {
             $('#form-response').html('<div class="mt-3 alert alert-danger" role="alert">An error occurred. Please try again later.</div>');
             $('#submit').text('Save preferences');
             $('#submit').prop('disabled', false);
           }
         });
       }
     });
   });
   ```

1. 前述の例では、*https://example.execute-api.us-east-1.amazonaws.com/v1/register* を「[API をデプロイする](tutorials-two-way-sms-part-4.md#tutorials-two-way-sms-part-4-deploy-api)」で取得した呼び出し URL で置き換えます。

1. ファイルを保存します。

## フォームファイルを作成する
<a name="tutorials-two-way-sms-part-5-create-form"></a>

このセクションでは、お客様が SMS プログラムを登録するために使用するフォームを格納する HTML ファイルを作成します。このファイルは、前のセクションで作成した JavaScript フォームハンドラを使用して、フォームデータを Lambda 関数に送信します。

**重要**  
ユーザーがこのフォームを送信すると、複数の Amazon Pinpoint API オペレーションを呼び出す Lambda 関数をトリガーします。悪意のあるユーザーが、多数のリクエストが発生する原因になる攻撃をフォームで起動する可能性があります。このソリューションを本番環境でのユースケースで使用する予定がある場合は、[Google reCAPTCHA](https://www.google.com/recaptcha/about/) などのシステムを使用してセキュリティで保護する必要があります。

**フォームを作成するには**

1. テキストエディタで新規ファイルを作成します。

1. エディタで、次のコードを貼り付けます。

   ```
   <!doctype html>
   <html lang="en">
   
   <head>
     <!-- Meta tags required by Bootstrap -->
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   
     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
     <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
   
     <script type="text/javascript" src="SMSFormHandler.js"></script>
     <title>SMS Registration Form</title>
   </head>
   
   <body>
     <div class="container">
       <div class="row justify-content-center mt-3">
         <div class="col-md-6">
           <h1>Register for SMS Alerts</h1>
           <p>Enter your phone number below to sign up for PromotionName messages from ExampleCorp.</p>
           <p>We don't share your contact information with anyone else. For more information, see our <a href="http://example.com/privacy">Privacy Policy</a>.</p>
           <p>ExampleCorp alerts are only available to recipients in the United States.</p>
         </div>
       </div>
       <div class="row justify-content-center">
         <div class="col-md-6">
           <form>
             <div class="form-group">
               <label for="firstName" class="font-weight-bold">First name</label>
               <input type="text" class="form-control" id="firstName" placeholder="Your first name" required>
             </div>
             <div class="form-group">
               <label for="lastName" class="font-weight-bold">Last name</label>
               <input type="text" class="form-control" id="lastName" placeholder="Your last name" required>
             </div>
             <label for="areaCode" class="font-weight-bold">Phone number</label>
             <div class="input-group">
               <span class="h3">(&nbsp;</span>
               <input type="tel" class="form-control" id="areaCode" placeholder="Area code" required>
               <span class="h3">&nbsp;)&nbsp;</span>
               <input type="tel" class="form-control" id="phone1" placeholder="555" required>
               <span class="h3">&nbsp;-&nbsp;</span>
               <input type="tel" class="form-control" id="phone2" placeholder="0199" required>
             </div>
             <div id="form-response"></div>
             <button id="submit" type="submit" class="btn btn-primary btn-block mt-3">Submit</button>
           </form>
         </div>
       </div>
       <div class="row mt-3">
         <div class="col-md-12 text-center">
           <small class="text-muted">Copyright © 2019, ExampleCorp or its affiliates.</small>
         </div>
       </div>
     </div>
   </body>
   
   </html>
   ```

1. 前の例では、*SMSFormHandler.js* を前のセクションで作成した、フォームハンドラ JavaScript ファイルへの完全パスと置き換えます。

1. ファイルを保存します。

## フォームファイルをアップロードする
<a name="tutorials-two-way-sms-part-5-upload-form"></a>

これで、HTML フォームと JavaScript フォームハンドラを作成したので、最後のステップは､これらのファイルをインターネットにパブリッシュすることです。このセクションでは、既存のウェブホスティングプロバイダーがあることを前提としています。既存のホスティングプロバイダーがない場合、Amazon Route 53、Amazon Simple Storage Service (Amazon S3)、Amazon CloudFront を利用すれば、ウェブサイトを立ち上げることができます。詳細については、「[静的ウェブサイトをホスティングする](https://aws.amazon.com/getting-started/hands-on/host-static-website/)」を参照してください。

別のウェブホスティングプロバイダーを使用する場合は、ウェブページの発行の詳細について、プロバイダーのドキュメントを参照してください。

## フォームをテストする
<a name="tutorials-two-way-sms-part-5-test-form"></a>

フォームを発行した後は、想定どおりに動作するかどうかを確認するためにいくつかのテストイベントを送信する必要があります。

**登録フォームをテストするには**

1. ウェブブラウザで、登録フォームのアップロード先に移動します。「[JavaScript フォームハンドラを作成する](#tutorials-two-way-sms-part-5-create-form)」のコード例を使用する場合、次のイメージの例に似たフォームが表示されます。  
![\[ステップ 5.1 で作成された顧客リクエストフォーム。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_Form_Step5.3.1.png)

1. 連絡先情報を、[**名**]、[**姓**]、[**電話番号**] の各フィールドに入力します。
**注記**  
フォームを送信すると、Amazon Pinpoint により指定した電話番号へのメッセージの送信が試行されます。この機能のため、ソリューションをテストするには、最初から最後まで実際の電話番号を使用する必要があります。  
「[Lambda 関数を作成する](tutorials-two-way-sms-part-3.md)」で Lambda 関数をテストした場合、Amazon Pinpoint プロジェクトには少なくとも 1 つのエンドポイントが含まれます。このフォームをテストするとき、フォームにある別の電話番号を送信するか、[DeleteEndpoint](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#DeleteEndpoint) API オペレーションを使用して既存のエンドポイントを削除します。

1. 指定した電話番号に関連付けられたデバイスを確認し、そのデバイスがテストメッセージを受信したことを確認します。

1. Amazon Pinpoint コンソール ([https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/)) を開きます。

1. **[すべてのプロジェクト]** ページで、「[Amazon Pinpoint でプロジェクトを作成する](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-create-project)」で作成したプロジェクトを選択します。

1. ナビゲーションペインの [**Segments**] を選択します。[**セグメント**] ページで、[**セグメントの作成**] を選択します。

1. [**セグメントグループ 1**] の [**Add filters to refine your segment**] で、[**Filter by user**] を選択します。

1. [**Choose a user attribute**] で、[**FirstName**] を選択します。次に、[**Choose values**] に、フォームを送信したときに指定した名前を選択します。

   [**Segment estimate**] セクションに、次の例に示すように、適格なエンドポイントがゼロであり、エンドポイントが 1 つあることが表示されます。この結果は正常です。Lambda 関数が新しいエンドポイントを作成すると、デフォルトでエンドポイントがオプトアウトされます。  
![\[オプトインエンドポイントがゼロのセグメント。\]](http://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/images/SMS_Reg_Tutorial_LAM_Step8.9.png)

1. メッセージを受信したデバイスで、「[双方向 SMS を有効にする](tutorials-two-way-sms-part-1.md#tutorials-two-way-sms-part-1-enable-two-way)」で指定した双方向 SMS キーワードでメッセージに返信します。Amazon Pinpoint はすぐに応答メッセージを送信します。

1. Amazon Pinpoint コンソールで、ステップ 4～8 を繰り返します。今回は、セグメントを作成するときに、1 つの適格なエンドポイントと、合計 1 つのエンドポイントが表示されます。エンドポイントがオプトインされたため、これは想定される動作です。

# 次の手順
<a name="tutorials-two-way-sms-next-steps"></a>

このチュートリアルを完了すると、以下のことが完了していることを示します。
+ Amazon Pinpoint プロジェクトを作成し、SMS チャネルを設定して、専用のロングコードを取得する。
+ 最小特権を使用する IAM ポリシーを作成して、アクセス権を付与し、そのポリシーとロールを関連付けます。
+ PhoneNumberValidate、UpdateEndpoint、および SendMessages オペレーションを使用する 2 つの Lambda 関数を Amazon Pinpoint API に作成します。
+ API Gateway を使用して REST API を作成します。
+ お客様の連絡先情報を収集するウェブベースのフォームを作成およびデプロイする。
+ ソリューションでテストを実行し、動作することを確認する。

このセクションでは、このソリューションを使用して収集するお客様の情報を使用できる方法をいくつか説明します。また、このソリューションをカスタマイズして、独自のユースケースに適合させる方法の推奨事項をいくつかご紹介します。

## カスタマーセグメントの作成
<a name="tutorials-two-way-sms-next-steps-create-segments"></a>

このフォームを介して収集するすべてのカスタマーの詳細は、エンドポイントとして保存されます。このソリューションでは、セグメンテーションのために使用できる複数の属性を含むエンドポイントを作成します。

たとえば、このソリューションでは、`Source` と呼ばれるエンドポイント属性をキャプチャします。この属性には、フォームがホストされた場所への完全パスが含まれています。セグメントを作成するとき、エンドポイントでセグメントをフィルタリングすることができ、`Source` 属性を選択して、フィルターをさらに詳細なものにすることができます。

`Source` 属性に基づいてセグメントを作成すると、複数の方法で役立ちます。まず、SMS メッセージ受信にサインアップしたお客様のセグメントを迅速に作成できます。また、Amazon Pinpoint のセグメンテーションツールでは、メッセージの受信を選択していないエンドポイントが自動的に除外されます。

`Source` 属性は、複数の異なる場所から登録フォームをホスティングする場合にも役立ちます。たとえば、ユーザーのマーケティングマテリアルが、1 つの場所でホストされているフォームを参照し、ユーザーのウェブサイトを閲覧中にこのフォームを見つけたお客様が、別の場所でホストされているバージョンを見る可能性があります。この場合、マーケティングマテリアルを見た後に、フォームに記入したお客様のソース属性が、ウェブサイトでフォームを見つけた後で記入したお客様のソース属性と異なることになります。この違いを利用して、異なるセグメントを作成し、それぞれの受信者にカスタマイズしたコミュニケーションを送信できます。

## パーソナライズされたキャンペーンメッセージの送信
<a name="tutorials-two-way-sms-next-steps-send-campaigns"></a>

セグメントを作成した後、これらのセグメントにキャンペーンの送信を開始することができます。キャンペーンメッセージを作成するとき、メッセージに含めるエンドポイント属性を指定することで、パーソナライズできます。たとえば、このソリューションで使用されるウェブフォームでは、カスタマーが氏名を入力する必要があります。これらの値は、エンドポイントに関連付けられているユーザーレコードに保存されます。

たとえば、`GetEndpoint` API オペレーションを使用して、このソリューションを使用して作成されたエンドポイントに関する情報を取得する場合、次の例に似たセクションが表示されます。

```
  ...
  "User": {
    "UserAttributes": {
      "FirstName": [
        "Carlos"
      ],
      "LastName": [
        "Salazar"
      ]
    }
  }
  ...
```

これらの属性の値をキャンペーンメッセージに含める場合は、ドット表記を使用して属性を参照することができます。次に、参照全体を二重の中括弧で囲みます。例えば、キャンペーンメッセージにそれぞれの受信者の名を含めるには、メッセージに文字列 `{{User.UserAttributes.FirstName}}` を含めます。Amazon Pinpoint によりメッセージが送信されるとき、文字列が `FirstName` 属性の値に置き換えられます。

## フォームを使用して追加情報を収集する
<a name="tutorials-two-way-sms-next-steps-collect-additional"></a>

このソリューションを変更して、登録フォームの追加情報を収集できます。たとえば、`Endpoint` リソースに `Location.City`、`Location.Country`、`Location.Region`、`Location.PostalCode` フィールドを生成して、お客様に住所を入力するよう依頼して、住所データを使用することができます。登録フォームでアドレスを収集すると、エンドポイントに含まれる情報がより正確になる可能性があります。この変更を行うには、ウェブフォームに適切なフィールドを追加する必要があります。また、新しい値を渡すためにフォームの JavaScript コードを変更する必要があります。最後に、新しい着信情報を処理するためのエンドポイントを作成する Lambda 関数を変更する必要があります。

他のチャネルで連絡先情報を収集するように、フォームを変更することもできます。たとえば、フォームを使用して、お客様の電話番号に加えて E メールアドレスを収集することができます。この変更を行うには、ウェブフォームの HTML と JavaScript を変更する必要があります。また、2 つの個別のエンドポイント (1 つは E メールのエンドポイント、もう 1 つは SMS のエンドポイント用) を作成するように、エンドポイントを作成する Lambda 関数も変更する必要があります。また、Lambda 関数を変更して、`User.UserId` 属性に一意の値を生成し、その値を両方のエンドポイントのに関連付ける必要もあります。

## 監査のために追加の属性を記録する
<a name="tutorials-two-way-sms-next-steps-auditing"></a>

このソリューションは、エンドポイントを作成および更新するときに 2 つの重要な属性を記録します。まず、1 つ目の Lambda 関数が最初にエンドポイントを作成し、`Attributes.Source` 属性にフォーム自体の URL を記録します。お客様がメッセージに応答した場合、2 番目の Lambda 関数により `Attributes.OptInTimestamp` 属性が作成されます。この属性には、お客様がメッセージの受信に同意した正確な日時が含まれています。

これら両方のフィールドは、モバイルキャリアまたは規制機関からお客様の同意を得ている証拠の提出を依頼された場合に、役立ちます。この情報は、[GetEndpoint](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#GetEndpoint) API オペレーションを使用して、いつでも取得することができます。

また、Lambda 関数を変更して、登録リクエストの送信元の IP アドレスなど、監査に役立つ可能性がある追加のデータを記録することもできます。