

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

# Amazon Chime SDK PSTN オーディオサービスのエンドツーエンドの通話について
<a name="use-cases"></a>

このユースケースでは、PSTN 発信者からの通話の受信、音声メッセージによる発信者への挨拶、発信者からの会議 PIN の取得、音声の再生、および会議への発信者の参加の例を示します。

**呼び出しイベントと アクション**  
Audio Service は、呼び出しイベントを JSON オブジェクトとして AWS Lambda 関数に渡します。オブジェクトには、呼び出しイベントタイプと関連するメタデータが含まれます。また、 AWS Lambda 関数は、SIP メディアアプリケーションのアクションを JSON オブジェクトとして返し、それらのオブジェクトにはアクションタイプと関連するメタデータが含まれます。

次の表に、呼び出しイベントと、呼び出しイベントを受け取ったときに発生する可能性のある `ActionData.Type` の一覧を示します。


|  呼び出しイベント  |  ActionData.Type  | 
| --- | --- | 
|  ACTION\$1SUCCESSFUL  |  CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits  JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting  | 
|  ACTION\$1FAILED  |  CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting  | 
| HANGUP |  HangUp  | 
|  DIGITS\$1RECEIVED  | ReceiveDigits | 

**注記**  
次のユースケースを実装するには、Amazon Chime SDK インベントリ、Amazon リソースネーム (ARN) と共に AWS Lambda 関数を使用する SIP メディアアプリケーションのマネージドオブジェクト、および電話番号をトリガーとして使用する SIP ルールに、1 つ以上の電話番号が必要です。

Amazon Chime SDK がルールで指定された電話番号への呼び出しを受信すると、PSTN オーディオサービスは`NEW_INBOUND_CALL`呼び出しイベントタイプで AWS Lambda 関数を呼び出します。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 1,
    "InvocationEventType": "NEW_INBOUND_CALL",
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

 AWS Lambda 関数をプログラムして、通話の詳細を検証し、後で使用するために保存できます。`NEW_INBOUND_CALL` イベントの場合、 AWS Lambda 関数はウェルカムプロンプトを再生し、会議 PIN を要求する一連のアクションで応答します。

オーディオファイルには、次の要件があります。
+ Amazon Simple Storage Service (S3) バケットから音声ファイルを再生する必要があります。S3 バケットは、SIP メディアアプリケーションと同じ AWS アカウントに属している必要があります。さらに、Amazon Chime SDK Voice Connector サービスプリンシパル (`voiceconnector.chime.amazonaws.com`) に `s3:GetObject` 許可を付与する必要があります。このためには、S3 コンソールまたはコマンドラインインターフェイス (CLI) を使用できます。
+ 50 MB 以下のサイズの PCM WAV ファイルを使用する必要があります。Amazon Chime SDK では、モノラル 8 kHz が推奨されます。
+ 各 WAV ファイルの S3 メタデータには、`{'ContentType': 'audio/wav'}` が含まれている必要があります。

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type" : "PlayAudio",    
            "Parameters" : {
                "CallId": "call-id-1",
                
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "welcome-to-meetings.wav"
                }
            }
        },
        {
            "Type": "PlayAudioAndGetDigits",
            "Parameters" : {
                "ParticipantTag": "LEG-A",
                
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "enter-meeting-pin.wav"
                },
                "FailureAudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "invalid-meeting-pin.wav"
                },
                "MinNumberOfDigits": 3,
                "MaxNumberOfDigits": 5,
                "TerminatorDigits": ["#"],
                "InBetweenDigitsDurationInMilliseconds": 5000,
                "Repeat": 3,
                "RepeatDurationInMilliseconds": 10000
            }
        }
    ]
}
```

SIP メディアアプリケーションは、通話レッグ A でこれらのアクションを実行します。`PlayAudioAndGetDigits`アクションが数字を受信すると、SIP メディアアプリケーションは`ACTION_SUCCESSFUL`イベントタイプで AWS Lambda 関数を呼び出します。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "ParticipantTag": "LEG-A",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "chime-meetings-audio-files-bucket-name",
                "Key": "enter-meeting-pin.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "chime-meetings-audio-files-bucket-name",
                "Key": "invalid-meeting-pin.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ReceivedDigits": "12345" // meeting PIN
    },
    "CallDetails": {
        ... // same as in previous event
    }
}
}
```

データに基づいて発信者を識別するように AWS Lambda 関数をプログラムできます`CallDetails`。以前に受信した会議 PIN を検証することもできます。PIN が正しいと想定し、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html) および [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html) API を使用して Amazon Chime SDK ミーティングを作成し、会議出席者が使用する参加トークンを生成します。 AWS Lambda 関数は、Amazon Chime SDK 会議に参加するアクションで応答します。

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "JoinChimeMeeting",
            "Parameters": {
                "JoinToken": "meeting-attendee-join-token"
            }
        }
    ]
}
```

が有効であるとすると、SIP メディアアプリケーション`JoinToken`は Amazon Chime SDK 会議に参加し、 `ACTION_SUCCESSFUL` イベントで AWS Lambda 関数を呼び出します。 には、SIP メディアアプリケーションと Chime Media サービス (`LEG-B`) からのデータ`CallDetails`が含まれます。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "JoinChimeMeeting",
        "Parameters" : {
            "JoinToken": "meeting-attendee-join-token"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id", 
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "LEG-B",
                "To": "SMA",
                "From": "+17035550122",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

この時点で発信または通話レッグでのアクションの実行を停止する場合は、空のアクションセットで応答できます。

```
{
    "SchemaVersion": "1.0"
    "Actions": []
}
```

発信者がハングアップすると、SIP メディアアプリケーションは `HANGUP` イベントで AWS Lambda 関数を呼び出します。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "Hangup",
        "Parameters": {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id", 
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Disconnected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "LEG-B",
                "To": "SMA",
                "From": "+17035550122",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Disconnected"
            }
        ]
    }
}
```

アクションで `Hangup` イベントに応答すると、SIP メディアアプリケーションは、他の `Participants` が `Status` として `Connected` を示した場合、そのアクションを無視します。