

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Scopri gli eventi di telefonia che richiamano AWS Lambda funzioni per il servizio audio PSTN di Amazon Chime SDK
<a name="invoking-Lambda"></a>

Il servizio audio richiama AWS Lambda funzioni in risposta a diversi eventi. Ogni chiamata specifica un tipo di evento di chiamata e fornisce i dettagli della chiamata, inclusi i partecipanti, se applicabile. Gli argomenti seguenti descrivono gli eventi del servizio audio che richiamano le funzioni. AWS Lambda 

# Effettuare una chiamata in uscita per utilizzare il servizio audio Amazon Chime SDK PSTN
<a name="use-create-call-api"></a>

Per creare una chiamata in uscita, utilizzi l'API. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html) L'API richiama l'endpoint di uno specificato. `SIP media application ID` I clienti possono controllare il flusso della chiamata fornendo [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html)segnalazioni e azioni diverse dall'endpoint. 

In caso di risposta corretta, l'API restituisce un codice di stato http 202 insieme a un TransactionID, che puoi utilizzare con l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API per aggiornare una chiamata in corso.

Il diagramma seguente mostra le chiamate effettuate all'endpoint della funzione per una chiamata in uscita. AWS Lambda 

![\[Diagramma che mostra il flusso di programmazione per le chiamate effettuate all'endpoint AWS Lambda.\]](http://docs.aws.amazon.com/it_it/chime-sdk/latest/dg/images/sip-api-1.png)


L'endpoint configurato per l'applicazione multimediale SIP viene richiamato per diversi stati della chiamata in uscita. Quando un cliente avvia una chiamata, l'SDK Amazon Chime richiama l'endpoint con un tipo di evento di chiamata. `NEW_OUTBOUND_CALL` 

Questo esempio mostra un tipico evento di invocazione per un. `NEW_OUTBOUND_CALL`

```
{
    "SchemaVersion": "1.0",
        "Sequence": 1,
        "InvocationEventType": "NEW_OUTBOUND_CALL",
        "CallDetails": {
            "TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234"
                }
            ]
    }
}
```

Qualsiasi risposta a una AWS Lambda chiamata correlata a un evento viene ignorata.

Quando riceviamo una `RINGING` notifica dal destinatario, l'SDK Amazon Chime richiama nuovamente l'endpoint configurato. 

Questo esempio mostra un tipico evento di invocazione per. `RINGING`

```
{
    "SchemaVersion": "1.0",
        "Sequence": 1,
        "InvocationEventType": "RINGING",
        "CallDetails": {
            "TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234"
                }
           ]
    }
}
```

Qualsiasi risposta a una AWS Lambda chiamata correlata a un evento viene ignorata.

Se il destinatario non risponde alla chiamata o la chiamata fallisce a causa di un errore, Chime disconnette la chiamata e richiama l'endpoint con il tipo di evento. `Hangup` Per ulteriori informazioni sul tipo di `Hangup` evento, fare riferimento a. [Terminare una chiamata utilizzando il servizio audio PSTN di Amazon Chime SDK](case-5.md) 

Se si risponde alla chiamata, Chime richiama l'endpoint con l'azione. `CALL_ANSWERED` Questo esempio mostra un tipico evento di invocazione.

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

A questo punto, è possibile restituire azioni rispondendo alla chiamata con un elenco di azioni. Se non vuoi eseguire alcuna azione, rispondi con un elenco vuoto. Puoi rispondere con un massimo di 10 azioni per ogni AWS Lambda chiamata e puoi richiamare una funzione Lambda 1.000 volte per chiamata. Per ulteriori informazioni sulla risposta con serie di azioni, fare riferimento a. [Risposta alle chiamate con elenchi di azioni utilizzando il servizio audio PSTN di Amazon Chime SDK](invoke-on-call-leg.md)

# Ricezione di una chiamata in entrata utilizzando il servizio audio PSTN di Amazon Chime SDK
<a name="case-1"></a>

Quando si verifica un `NEW_INCOMING_CALL` evento, il servizio audio ne crea uno unico `TransactionID` e unico `CallID` che persiste fino al verificarsi dell'evento. `HANGUP`

È possibile rispondere in diversi modi a un `NEW_INCOMING_CALL` evento. Esempio:
+ Invia `PlayAudio` le `RecordAudio` nostre azioni e rispondi automaticamente alla chiamata. 
+ Invia un'`Pause`azione.
+ Invia un'`Hangup`azione, nel qual caso non viene data risposta alla chiamata e al cliente non viene addebitato alcun costo.
+ Invia un'`CallAndBridge`azione e aggiungi un altro utente alla chiamata.
+ Non fate nulla, il tentativo di chiamata scade dopo 30 secondi.

Quando viene ricevuta una nuova chiamata in entrata, l'applicazione multimediale SIP richiama una AWS Lambda funzione con questo payload.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "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": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

# Specificazione delle azioni in risposta agli eventi di telefonia per il servizio audio PSTN di Amazon Chime SDK
<a name="use-case-2"></a>

Nel servizio audio, le applicazioni multimediali SIP AWS Lambda richiamano funzioni. *A sua volta, una funzione Lambda può restituire un elenco di istruzioni note come azioni.* Un'azione è un elemento che si desidera eseguire durante una chiamata telefonica, ad esempio inviare o ricevere cifre, partecipare a una riunione e così via. Per ulteriori informazioni sulle azioni richiamate dal servizio audio PSTN, vedere. [Comprensione degli eventi di telefonia per il servizio audio PSTN Amazon Chime SDK](pstn-invocations.md)

Quando un'applicazione multimediale SIP esegue correttamente un elenco di azioni, chiama la AWS Lambda funzione con un tipo di evento di invocazione di. `ACTION_SUCCESSFUL` Se una delle azioni non viene completata, l'applicazione multimediale SIP richiama la AWS Lambda funzione con l'evento. `ACTION_FAILED`

L'applicazione multimediale SIP viene restituita solo `ACTION_SUCCESSFUL` se tutte le azioni dell'elenco hanno esito positivo. Se una delle azioni nell'elenco fallisce, l'applicazione multimediale SIP richiama la AWS Lambda funzione con l'`ACTION_FAILED`evento e cancella le azioni rimanenti nell'elenco dopo quella fallita. L'applicazione multimediale SIP esegue quindi l'azione successiva restituita dalla funzione. AWS Lambda Si utilizza la `ActionData` chiave per identificare quale chiamata ha richiamato la funzione.

L'evento seguente mostra un payload di esempio per il tipo di evento di `ACTION_SUCCESSFUL` invocazione dopo un'azione. `PlayAudioAndGetDigits`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "failure-audio-file.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "failure-audio-file.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ReceivedDigits": "123"
    }
    "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": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
                }
            ]
        }
    }
}
```

Quando un'azione in un elenco non viene completata correttamente, l'applicazione multimediale SIP richiama la AWS Lambda funzione per avvisare l'utente dell'errore e per ottenere un nuovo set di azioni da eseguire su quella chiamata. L'evento seguente mostra il payload di esempio per il tipo di evento di `ACTION_FAILED` invocazione dopo un'azione. `PlayAudio`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file.wav"            
            }
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "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": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
}
```

# Ricezione dell'input del chiamante per il servizio audio PSTN di Amazon Chime SDK
<a name="case-4"></a>

Utilizzate l'`ReceiveDigits`azione per raccogliere le cifre DTMF in entrata e confrontarle con un'espressione regolare. Quando l'applicazione multimediale SIP riceve cifre che corrispondono all'espressione regolare, richiama una funzione con un evento. AWS Lambda `ACTION_SUCCESSFUL` Le cifre raccolte vengono visualizzate nel valore dell'`ReceivedDigits`oggetto. `ActionData`

Esempio:

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "ReceivedDigits": "",
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-1",
            "InputDigitsRegex": "^\d{2}#$",
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "FlushDigitsDurationInMilliseconds": 10000
        }
    },
    "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": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Una volta che il chiamante inserisce cifre che corrispondono al modello di espressione regolare, l'applicazione multimediale SIP richiama una AWS Lambda funzione che restituisce il seguente tipo di payload:

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "DIGITS_RECEIVED",
    "ActionData": {
        "ReceivedDigits": "11#",
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-1",
            "InputDigitsRegex": "^\d{2}#$",
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "FlushDigitsDurationInMilliseconds": 10000
        }
    },
    "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": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

[Guarda un esempio funzionante su: -demand-recording GitHub https://github.com/aws-samples/ amazon-chime-sma-on](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# Aggiornamento delle chiamate in corso per l'audio PTSN di Amazon Chime SDK
<a name="update-sip-call"></a>

Come parte del servizio audio PSTN, le applicazioni multimediali SIP consentono di impostare azioni da eseguire su una chiamata richiamando funzioni Lambda definite dall'utente in base agli eventi della chiamata, ad esempio una chiamata in arrivo o cifre DTMF. Il [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)L'API consente di attivare una funzione Lambda in qualsiasi momento mentre una chiamata è attiva, sostituendo le azioni correnti con nuove azioni restituite dalla chiamata.

**Flusso di lavoro**  
Si utilizza il [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API in diversi casi, ad esempio per aggiungere partecipanti a una riunione, disattivare e riattivare l'audio di un utente, disconnetterlo e così via. Il seguente caso d'uso descrive un tipico flusso di lavoro.

Un utente chiama e ascolta musica mentre l'SDK Amazon Chime configura la riunione. Una volta completata la configurazione, Amazon Chime SDK interrompe l'audio e ammette il chiamante alla riunione. Quindi, supponiamo l'utilizzo di un sistema separato, `MyMeetingService` che gestisca le riunioni. Ogni chiamata in arrivo deve essere messa in attesa. Chime MyMeetingService notifica le chiamate in arrivo, MyMeetingService quindi crea un partecipante per ogni chiamata e, quando MyMeetingService è pronto per iniziare la riunione, notifica l'applicazione multimediale SIP e fornisce un token per partecipare alla riunione.

Per gestire questo caso, la funzione Lambda deve implementare la seguente logica. 
+ Quando arriva una nuova chiamata in arrivo, la Lambda viene richiamata con un evento. `NEW_INBOUND_CALL` Lambda chiama `MyMeetingService` e passa il `transactionId` che identifica la chiamata corrente e restituisce l'azione. `PlayAudio`
+ Quando `MyMeetingService` è pronto per aggiungere il chiamante alla riunione, il servizio chiama [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API e passa il comando `transactionId` e `JoinToken` come parte degli argomenti della chiamata. Questa chiamata API attiva nuovamente la funzione Lambda, ora con `CALL_UPDATE_REQUESTED` l'evento. MyMeetingService Passa `JoinToken` alla funzione Lambda come parte dell'evento e il token viene utilizzato per restituire l'`JoinChimeMeeting`azione all'applicazione multimediale SIP, che interrompe l'`PlayAudio`azione e connette il chiamante alla riunione.

![\[Diagramma che mostra il flusso di dati nell'API. UpdateSipMediaApplicationCall\]](http://docs.aws.amazon.com/it_it/chime-sdk/latest/dg/images/update-sip-call-flow3.png)


**Nota**  
Il [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)L'API restituisce HTTP 202 (accettato). L'applicazione multimediale SIP conferma che la chiamata è in corso e può essere aggiornata, quindi tenta di richiamare la funzione Lambda. La chiamata viene eseguita in modo asincrono, quindi una risposta corretta dall'API non garantisce l'avvio o il completamento della funzione Lambda.

L'esempio seguente mostra la sintassi della richiesta.

```
{
    "SipMediaApplicationId": "string",
    "TransactionId": "string",
    "Arguments": {
        "string": "string"
    } 
}
```

**Parametri della richiesta**
+ `SipMediaApplicationId`— L'ID dell'applicazione multimediale SIP che gestisce la chiamata. 
+ `TransactionId`— L'ID della transazione di chiamata. Per le chiamate in entrata, `TransactionId` è possibile ottenere dall'`NEW_INCOMING_CALL`evento passato alla funzione Lambda alla prima chiamata. Per le chiamate in uscita, `TransactionId` viene restituito nella risposta di [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html). 
+ Argomenti: **argomenti** personalizzati resi disponibili alla funzione Lambda come parte dei dati di `CallUpdateRequest` azione. Può contenere da 0 a 20 coppie chiave-valore.

L'esempio seguente mostra una richiesta tipica.

```
aws chime update-sip-media-application-call --sip-media-application-id feb37a7e-2b66-49fb-b2dd-30f4780dc36d --transaction-id 1322a4e7-c106-4e70-aaaf-a8fa4c77c0cb --arguments '{"JoinToken": "abc123"}'
```

**Sintassi della risposta**

```
{
  "SipMediaApplicationCall": {
  "TransactionId": "string"
  }
}
```

**Elementi di risposta**
+ **TransactionId**— L'ID della transazione di chiamata, lo stesso ID della richiesta.

L'esempio seguente mostra un evento di `CALL_UPDATE_REQUESTED` invocazione.

```
{
  "SchemaVersion": "1.0",
  "Sequence": 2,
  "InvocationEventType": "CALL_UPDATE_REQUESTED",
  "ActionData": {
    "Type": "CallUpdateRequest",
    "Parameters": {
      "Arguments": {
        "string": "string"
      }
    }
  },
  "CallDetails": {
    ...
  }
}
```

**Elementi dell'evento**
+ **SchemaVersion**— La versione dello schema JSON (1.0)
+ **Sequenza**: il numero di sequenza dell'evento della chiamata
+ **InvocationEventType**— Il tipo di evento di invocazione Lambda, in questo caso, `CALL_UPDATE_REQUESTED`
+ **ActionData**— I dati associati all'azione. `CallUpdateRequest`
  + **Tipo**: il tipo di azione, in questo caso `CallUpdateRequest`
  + **Parametri**: i parametri dell'azione
    + **Argomenti**: gli argomenti passati come parte della richiesta `UpdateSipMediaApplicationCall` API
+ **CallDetails**— Le informazioni sullo stato corrente della chiamata

**Comprensione delle azioni interrompibili e non interrompibili**  
Quando una funzione Lambda restituisce un nuovo elenco di azioni durante l'esecuzione di azioni esistenti, tutte le azioni che seguono l'azione in corso vengono sostituite con le nuove azioni. In alcuni casi, la funzione Lambda interrompe le azioni in corso per eseguire immediatamente nuove azioni.

Il diagramma seguente mostra un esempio tipico. Il testo sotto il diagramma spiega la logica.

![\[Diagramma che mostra come è possibile sostituire le azioni durante una chiamata in corso a un'applicazione multimediale SIP.\]](http://docs.aws.amazon.com/it_it/chime-sdk/latest/dg/images/update-sip-actions.png)


Se l'Azione 2 è interrompibile, la interrompiamo ed eseguiamo invece una nuova Azione 1.

Se l'Azione 2 non è interrompibile, viene completata prima dell'inizio della nuova Azione 1.

In entrambi i casi, l'Azione 3 non viene eseguita.

Se qualcosa interrompe un'azione, la funzione Lambda viene richiamata con un evento. `ACTION_INTERRUPTED` Questo evento viene utilizzato solo a scopo informativo. L'applicazione multimediale SIP ignora tutte le azioni restituite da questa chiamata.

Tipi di azioni interrompibili:
+ `PlayAudio`
+ `RecordAudio`
+ `Pause`

**Funzione Lambda di esempio**  
Questo esempio mostra una tipica funzione Lambda che riproduce un file audio, passa un token di join e aggiorna la chiamata.

```
const MMS = require('my-meeting-service');
const myMeetingServiceClient = new MMS.Client();

exports.handler = async (event) => {
    console.log('Request: ' + JSON.stringify(event));
    
    const playAudio = () => {
      return {
        Type: 'PlayAudio',
        Parameters: {
          ParticipantTag: 'LEG-A',
          AudioSource: {
            Type: 'S3',
            BucketName: 'chime-meetings-audio-files-bucket-name',
            Key: 'welcome.wav'
          }
        }
      }
    }
    
    const joinChimeMeeting = (joinToken) => {
      return {
        Type: 'JoinChimeMeeting',
        Parameters: {
          JoinToken: joinToken
        }
      }
    }
    
    const response = (...actions) => {
      const r = {
        SchemaVersion: '1.0',
        Actions: actions
      };
      console.log('Response: ' + JSON.stringify(r));
      return r;
    };
    
    switch (event.InvocationEventType) {
      case 'NEW_INBOUND_CALL': 
        myMeetingServiceClient.addPendingCall(event.CallDetails.TransactionId);         
        return response(playAudio());      
      case 'CALL_UPDATE_REQUESTED':
        const joinToken = event.ActionData.Parameters.Arguments['JoinToken']
        return response(joinChimeMeeting(joinToken));
      default:
        return response();
    }
}
```

# Terminare una chiamata utilizzando il servizio audio PSTN di Amazon Chime SDK
<a name="case-5"></a>

Puoi utilizzare l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html)API per terminare una chiamata in uscita. L'API richiama l'endpoint di un ID di applicazione multimediale **SIP** specificato. I clienti possono controllare il flusso della chiamata restituendo le azioni all'applicazione multimediale SIP.

In caso di risposta corretta, l'API restituisce un codice di stato http 202 insieme a`transactionId`, che è possibile utilizzare con l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API per aggiornare una chiamata in corso.

Il diagramma seguente mostra le chiamate effettuate all'endpoint della AWS Lambda funzione per una chiamata in uscita.

![\[Il flusso di dati quando si richiama l'API. CreateSipMediaApplicationCall L'API richiama un endpoint diverso quando cambia lo stato di una chiamata in uscita.\]](http://docs.aws.amazon.com/it_it/chime-sdk/latest/dg/images/sip-api-1.png)


L'endpoint configurato per l'applicazione multimediale SIP viene richiamato per diversi stati della chiamata in uscita. Quando un cliente effettua una chiamata, l'SDK Amazon Chime richiama l'endpoint con un tipo di evento di chiamata. `HANGUP` 

Questo esempio mostra un tipico evento di invocazione per un. `HANGUP`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 6,
    "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",
                "Direction": "Inbound",
                 "To": "+12065551212",
                "From": "+15105550101",
                "StartTimeInMilliseconds": "1597009588",
                "Status": "Disconnected"
            }
        ]
    }
}

// if LEG-B receives a hangup in a bridged call, such as a meeting ending
{
    "SchemaVersion": "1.0",
    "Sequence": 6,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-2",
            "ParticipantTag": "LEG-B"
        }
    },
    "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": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "1597009588",
                "Status": "Connected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "Leg-B",
                "To": "+17035550122",
                "From": "SMA",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "15010595",
                "Status": "Disconnected"
            }
        ]
    }
}
```

# Comprendere end-to-end le chiamate per il servizio audio PSTN Amazon Chime SDK
<a name="use-cases"></a>

Questo caso d'uso fornisce un codice di esempio per ricevere una telefonata da un chiamante PSTN, salutarlo con un messaggio audio, ottenere il PIN della riunione dal chiamante, riprodurre l'audio e unirsi al chiamante alla riunione.

**Eventi e azioni di invocazione**  
Il servizio audio passa gli eventi di chiamata alle AWS Lambda funzioni come oggetti JSON. Gli oggetti includono il tipo di evento di invocazione e tutti i metadati pertinenti. La AWS Lambda funzione restituisce anche le azioni delle applicazioni multimediali SIP come oggetti JSON e tali oggetti includono un tipo di azione e tutti i metadati pertinenti.

La tabella seguente elenca gli eventi di invocazione e quelli possibili `ActionData.Type` quando si riceve un evento di invocazione.


|  Evento di invocazione  |  ActionData.Tipo  | 
| --- | --- | 
|  AZIONE\$1RIUSCITA  |  CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits  JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting  | 
|  AZIONE\$1FALLITA  |  CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting  | 
| RIAGGANCIARE |  HangUp  | 
|  CIFRE\$1RICEVUTE  | ReceiveDigits | 

**Nota**  
Per implementare il seguente caso d'uso, sono necessari almeno un numero di telefono nell'inventario Amazon Chime SDK, un oggetto gestito da un'applicazione multimediale SIP che utilizzi una funzione AWS Lambda con un Amazon Resource Name (ARN) e una regola SIP che utilizzi il numero di telefono come trigger.

Quando Amazon Chime SDK riceve una chiamata al numero di telefono specificato nella regola, il servizio audio PSTN richiama una AWS Lambda funzione con il tipo di evento di chiamata. `NEW_INBOUND_CALL`

```
{
    "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"
            }
        ]
    }
}
```

È possibile programmare la AWS Lambda funzione per convalidare i dettagli delle chiamate e memorizzarli per utilizzi futuri. Per un `NEW_INBOUND_CALL` evento, la AWS Lambda funzione risponde con una serie di azioni che riproducono un messaggio di benvenuto e richiedono il PIN della riunione.

I file audio hanno i seguenti requisiti:
+ È necessario riprodurre file audio da un bucket Amazon Simple Storage Service (S3). Il bucket S3 deve appartenere allo stesso AWS account dell'applicazione multimediale SIP. Inoltre, devi concedere l'`s3:GetObject`autorizzazione al responsabile del servizio Amazon Chime SDK Voice Connector—. `voiceconnector.chime.amazonaws.com` Puoi usare la console S3 o l'interfaccia a riga di comando (CLI) per farlo.
+ È necessario utilizzare file WAV PCM di dimensioni non superiori a 50 MB. L'SDK Amazon Chime consiglia 8 mono. KHz 
+ I metadati S3 per ogni file WAV devono contenere. `{'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
            }
        }
    ]
}
```

L'applicazione multimediale SIP esegue queste azioni sulla riga di chiamata A. Supponendo che l'`PlayAudioAndGetDigits`azione riceva le cifre, l'applicazione multimediale SIP richiama la funzione con il tipo di evento. AWS Lambda `ACTION_SUCCESSFUL`

```
{
    "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
    }
}
}
```

È possibile programmare una AWS Lambda funzione per identificare il chiamante in base ai dati. `CallDetails` Puoi anche convalidare il PIN della riunione ricevuto in precedenza. Supponendo che il PIN sia corretto, puoi quindi utilizzare [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html)e [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html) APIs per creare la riunione Amazon Chime SDK e generare il token di partecipazione utilizzato dal partecipante alla riunione. La AWS Lambda funzione risponde con l'azione di partecipare alla riunione Amazon Chime SDK.

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

Supponendo che `JoinToken` sia valido, l'applicazione multimediale SIP partecipa alla riunione Amazon Chime SDK e richiama una AWS Lambda funzione con l'`ACTION_SUCCESSFUL`evento, dove `CallDetails` contiene i dati dell'applicazione multimediale SIP e del servizio 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"
            }
        ]
    }
}
```

Se a questo punto desideri interrompere l'esecuzione di azioni sulla chiamata o sull'intervallo della chiamata, puoi rispondere con una serie di azioni vuota.

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

Dopo la chiusura del chiamante, l'applicazione multimediale SIP richiama la funzione con l' AWS Lambda evento. `HANGUP` 

```
{
    "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"
            }
        ]
    }
}
```

Se si risponde a un `Hangup` evento con un'azione, l'applicazione multimediale SIP ignora l'azione se nessun'altra ne mostra una. `Participants` `Status` `Connected`