翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
呼び出しについて end-to-end
このユースケースでは、PSTN発信者からの電話の受信、音声メッセージによる発信者への挨拶、発信者PINからの会議の取得、音声の再生、発信者の会議への参加に関するコード例を示します。
呼び出しイベントと アクション
Audio Service は呼び出しイベントを JSON オブジェクトとして AWS Lambda 関数に渡します。オブジェクトには、呼び出しイベントタイプと関連するメタデータが含まれます。この AWS Lambda 関数は、SIPメディアアプリケーションアクションをJSONオブジェクトとして返します。これらのオブジェクトには、アクションタイプと関連するメタデータが含まれます。
次の表に、呼び出しイベントと、呼び出しイベントを受け取ったときに発生する可能性のある ActionData.Type
の一覧を示します。
呼び出しイベント | ActionData.Type |
---|---|
ACTION_SUCCESSFUL |
CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting |
ACTION_FAILED |
CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting |
HANGUP |
HangUp |
DIGITS_RECEIVED |
ReceiveDigits |
注記
次のユースケースを実装するには、Amazon Chime SDKインベントリに少なくとも 1 つの電話番号、Amazon リソースネーム (ARN) を持つ AWS Lambda 関数を使用するSIPメディアアプリケーション管理オブジェクト、および電話番号をトリガーとして使用するSIPルールが必要です。
Amazon Chime がルールで指定された電話番号への呼び出しSDKを受信すると、PSTNAudio サービスは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 サービスプリンシパル — にアクセス
s3:GetObject
許可を付与する必要がありますvoiceconnector.chime.amazonaws.com
。これを行うには、S3 コンソールまたはコマンドラインインターフェイス (CLI) を使用できます。50 MB 以下のPCMWAVファイルを使用する必要があります。Amazon Chime は 8 KHzモノラルSDKを推奨します。
各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、次に を使用します。 CreateMeeting および CreateAttendee APIs 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 関数を呼び出します。 CallDetails
には、SIPメディアアプリケーションと Chime Media サービスからのデータが含まれます (LEG-B
)
{ "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
イベントに応答すると、他の に Status
の Participants
が表示されない場合、SIPメディアアプリケーションはそのアクションを無視しますConnected
。