

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Más información sobre los eventos de telefonía que invocan AWS Lambda funciones para el servicio de audio PSTN del SDK de Amazon Chime
<a name="invoking-Lambda"></a>

El servicio de audio invoca AWS Lambda funciones en respuesta a diferentes eventos. Cada invocación especifica un tipo de evento de invocación y proporciona los detalles de la llamada, incluidos sus participantes, si corresponde. En los temas siguientes se describen los eventos del servicio de audio que invocan funciones AWS Lambda . 

# Realización de una llamada saliente para utilizar el servicio de audio PSTN de Amazon Chime SDK
<a name="use-create-call-api"></a>

Puede usar la 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) para finalizar una llamada saliente. La API invoca el punto de conexión de un objeto de `SIP media application ID` especificado. Los clientes pueden controlar el flujo de la llamada realizando diferentes acciones de señalización y [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html) desde el punto de conexión. 

Si la respuesta es correcta, la API devuelve un código de estado http 202 junto con un ID de transacción, que puede usar con la API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html) para actualizar una llamada en curso.

El siguiente diagrama muestra las invocaciones realizadas al punto final de la AWS Lambda función para una llamada saliente.

![\[Diagrama que muestra el flujo de programación de las invocaciones realizadas al punto de conexión de AWS Lambda.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/sip-api-1.png)


El punto de conexión configurado para la aplicación multimedia SIP se invoca para los diferentes estados de la llamada saliente. Cuando un cliente inicia una llamada, Amazon Chime SDK invoca el punto de conexión con un tipo de evento `NEW_OUTBOUND_CALL` de invocación. 

En este ejemplo se muestra un evento de invocación típico para una `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"
                }
            ]
    }
}
```

Se omite cualquier respuesta a una AWS Lambda invocación relacionada con un evento.

Cuando recibimos una notificación `RINGING` del receptor, Amazon Chime SDK vuelve a invocar el punto de conexión configurado. 

En este ejemplo se muestra un evento de invocación típico para `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"
                }
           ]
    }
}
```

Se omite cualquier respuesta a una AWS Lambda invocación relacionada con un evento.

Si el receptor no responde a la llamada o la llamada falla debido a un error, Chime desconecta la llamada e invoca el punto de conexión con el tipo de evento `Hangup`. Para obtener más información sobre el tipo de evento `Hangup`, consulte [Uso del servicio de audio PSTN de Amazon Chime SDK para terminar una llamada](case-5.md). 

Si se responde a la llamada, Chime invoca el punto de conexión con la acción `CALL_ANSWERED`. En este ejemplo se muestra un evento de invocación típico.

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

En este punto, puede devolver las acciones respondiendo a la invocación con una lista de acciones. Si no desea ejecutar ninguna acción, responda con una lista vacía. Puede responder con un máximo de 10 acciones por cada AWS Lambda invocación y puede invocar una función Lambda 1000 veces por llamada. Para obtener más información sobre cómo responder con conjuntos de acciones, consulte [Respuesta a las invocaciones con listas de acciones mediante el servicio de audio PSTN de Amazon Chime SDK](invoke-on-call-leg.md).

# Recepción de una llamada entrante mediante el servicio de audio PSTN de Amazon Chime SDK
<a name="case-1"></a>

Cuando se produce un evento de `NEW_INCOMING_CALL`, el servicio de audio crea un `TransactionID` único y un `CallID` único que persiste hasta que se produce el evento `HANGUP`.

Puede responder de varias maneras a un evento `NEW_INCOMING_CALL`. Por ejemplo:
+ Envíe las acciones `PlayAudio` o `RecordAudio` y responda automáticamente a la llamada. 
+ Envíe una acción `Pause`.
+ Envíe una acción `Hangup`, en cuyo caso no se responde a la llamada y no se le cobra al cliente.
+ Envíe una acción `CallAndBridge` y añada otro usuario a la llamada.
+ No haga nada, el intento de llamada se agota después de 30 segundos.

Cuando se recibe una nueva llamada entrante, la aplicación multimedia SIP invoca una función de AWS Lambda con esta carga útil.

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

# Especificación de acciones en respuesta a eventos de telefonía para el servicio de audio de Amazon Chime SDK PSTN
<a name="use-case-2"></a>

En el servicio de audio, las aplicaciones multimedia SIP invocan AWS Lambda funciones. A su vez, una función de Lambda puede devolver una lista de instrucciones conocidas como *acciones*. Una acción es un elemento que se desea ejecutar en un tramo de una llamada telefónica, como enviar o recibir dígitos, unirse a una reunión, etc. Para obtener más información sobre las acciones que invoca el servicio de audio PSTN, consulte [Descripción de los eventos de telefonía para el servicio de audio PSTN de Amazon Chime SDK](pstn-invocations.md).

Cuando una aplicación multimedia SIP ejecuta correctamente una lista de acciones, la aplicación llama a la AWS Lambda función con un tipo de evento de invocación de. `ACTION_SUCCESSFUL` Si alguna de las acciones no se completa, la aplicación multimedia SIP llama a la AWS Lambda función con el `ACTION_FAILED` evento.

La aplicación multimedia SIP solo devuelve `ACTION_SUCCESSFUL` si todas las acciones de la lista se han realizado correctamente. Si alguna de las acciones de la lista falla, la aplicación multimedia SIP invoca la AWS Lambda función con el `ACTION_FAILED` evento y borra las acciones restantes de la lista después de la fallida. A continuación, la aplicación multimedia SIP ejecuta la siguiente acción devuelta por la AWS Lambda función. La clave `ActionData` se utiliza para identificar qué llamada ha invocado la función.

El siguiente evento muestra un ejemplo de carga útil para el tipo de evento de invocación `ACTION_SUCCESSFUL` después de una acción `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"
                }
            ]
        }
    }
}
```

Cuando alguna acción de una lista no se completa correctamente, la aplicación multimedia SIP invoca la AWS Lambda función para notificarle el error y ejecutar un nuevo conjunto de acciones en esa llamada. El siguiente evento muestra un ejemplo de carga útil para el tipo de evento de invocación `ACTION_FAILED` después de una acción `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"
            }
        ]
    }
}
}
```

# Recepción de una llamada entrante mediante el servicio de audio PSTN de Amazon Chime SDK
<a name="case-4"></a>

Esta acción `ReceiveDigits` se utiliza para recopilar los dígitos DTMF entrantes y compararlos con una expresión regular. Cuando la aplicación multimedia SIP recibe dígitos que coinciden con la expresión regular, invoca una AWS Lambda función con un `ACTION_SUCCESSFUL` evento. Los dígitos recopilados aparecen en el valor `ReceivedDigits` del objeto `ActionData`.

Por ejemplo:

```
{
    "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 vez que la persona que llama introduce dígitos que coinciden con su patrón de expresión regular, la aplicación multimedia SIP invoca una AWS Lambda función que devuelve el siguiente tipo de carga útil:

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

[Consulte un ejemplo práctico en: -demand-recording GitHub https://github.com/aws-samples/ amazon-chime-sma-on](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# Actualización de las llamadas en curso para el audio PTSN de Amazon Chime SDK
<a name="update-sip-call"></a>

Como parte del servicio de audio PSTN, las aplicaciones multimedia SIP permiten configurar las acciones que se ejecutan en una llamada invocando funciones de Lambda definidas por el usuario en función de los eventos de la llamada, como una llamada entrante o dígitos DTMF. la [,UpdateSipMediaApplicationCall](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)La API le permite activar una función Lambda en cualquier momento mientras una llamada esté activa, sustituyendo las acciones actuales por las nuevas acciones devueltas por la invocación.

**Flujo de trabajo**  
Usas la [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)La API en diversos casos, como añadir participantes a una reunión, silenciar o reactivar el sonido de un usuario, desconectarlo, etc. El siguiente caso de uso describe un flujo de trabajo típico.

Un usuario llama y escucha música mientras Amazon Chime SDK configura la reunión. Una vez completada la configuración, Amazon Chime SDK detiene el audio y admite a la persona que llama a la reunión. A continuación, suponga el uso de un sistema independiente, `MyMeetingService`, que gestione las reuniones. Todas las llamadas entrantes deben ponerse en espera. Chime notifica las MyMeetingService llamadas entrantes y, a MyMeetingService continuación, crea un asistente para cada llamada y, cuando MyMeetingService está listo para iniciar la reunión, lo notifica a la aplicación multimedia SIP y proporciona un token para unirse a la reunión.

Para gestionar este caso, la función de Lambda debe implementar la siguiente lógica. 
+ Cuando llega una nueva llamada entrante, se invoca la Lambda con un evento `NEW_INBOUND_CALL`. La Lambda llama a `MyMeetingService` y pasa el `transactionId` que identifica la llamada actual y devuelve la acción `PlayAudio`.
+ Cuando `MyMeetingService` esté listo para añadir a la persona que ha convocado a la reunión, el servicio llama al [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 y pasa la llamada `transactionId` y `JoinToken` como parte de sus argumentos. Esta llamada a la API vuelve a activar la función de Lambda, ahora con el evento `CALL_UPDATE_REQUESTED`. La MyMeetingService pasa `JoinToken` a la función Lambda como parte del evento y el token se utiliza para devolver la `JoinChimeMeeting` acción a la aplicación multimedia SIP, que la interrumpe y conecta a la `PlayAudio` persona que llama a la reunión.

![\[Diagrama que muestra el flujo de datos en la API UpdateSipMediaApplicationCall.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/update-sip-call-flow3.png)


**nota**  
la [,UpdateSipMediaApplicationCall](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)La API devuelve el HTTP 202 (aceptado). La aplicación multimedia SIP confirma que la llamada está en curso y que se puede actualizar, por lo que intenta invocar la función de Lambda. La invocación se realiza de forma asíncrona, por lo que una respuesta correcta de la API no garantiza que la función de Lambda se haya iniciado o completado.

En el siguiente ejemplo se muestra la sintaxis de solicitud.

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

**Parámetros de solicitud**
+ `SipMediaApplicationId`: el ID de la aplicación multimedia SIP que gestiona la llamada. 
+ `TransactionId`: ID de transacción de la llamada. En el caso de las llamadas entrantes, el `TransactionId` se puede obtener del evento `NEW_INCOMING_CALL` pasado a la función de Lambda en su primera invocación. En el caso de las llamadas salientes, `TransactionId` se devuelve en la respuesta de [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html). 
+ **Argumentos**: argumentos personalizados que se ponen a disposición de la función de Lambda como parte de los datos de la acción `CallUpdateRequest`. Puede contener de 0 a 20 pares de clave-valor.

A continuación se muestra un ejemplo de solicitud:

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

**Sintaxis de la respuesta**

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

**Elementos de respuesta**
+ **TransactionId**— El identificador de la transacción de llamada, el mismo identificador que el de la solicitud.

En el siguiente ejemplo, se muestra un evento de invocación `CALL_UPDATE_REQUESTED`.

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

**Elementos de evento**
+ **SchemaVersion**— La versión del esquema JSON (1.0)
+ **Secuencia**: el número de secuencia del evento de la llamada
+ **InvocationEventType**— El tipo de evento de invocación de Lambda, en este caso, `CALL_UPDATE_REQUESTED`
+ **ActionData**— Los datos asociados a la `CallUpdateRequest` acción.
  + **Tipo**: el tipo de acción, en este caso, `CallUpdateRequest`
  + **Parámetros**: los parámetros de la acción
    + **Argumentos**: los argumentos que se pasan como parte de la solicitud de API `UpdateSipMediaApplicationCall`
+ **CallDetails**— La información sobre el estado actual de la llamada

**Comprensión de las acciones interrumpibles y no interrumpibles**  
Cuando una función de Lambda devuelve una nueva lista de acciones mientras se ejecutan las acciones existentes, todas las acciones que siguen a la acción en curso se sustituyen por las nuevas acciones. En algunos casos, la función de Lambda interrumpe las acciones en curso para ejecutar nuevas acciones de forma inmediata.

El siguiente diagrama muestra un ejemplo típico. El texto que aparece debajo del diagrama explica la lógica.

![\[Diagrama que muestra cómo se pueden reemplazar las acciones durante una llamada en curso a una aplicación multimedia SIP.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/update-sip-actions.png)


Si la acción 2 es interrumpible, la detenemos y ejecutamos la nueva acción 1 en su lugar.

Si la acción 2 no es interrumpible, se completa antes de que comience la nueva acción 1.

En ambos casos, la acción 3 no se ejecuta.

Si algo interrumpe una acción, la función de Lambda se invoca con un evento `ACTION_INTERRUPTED`. Este evento se utiliza únicamente con fines informativos. La aplicación multimedia SIP ignora todas las acciones devueltas por esta invocación.

Tipos de acciones interrumpibles:
+ `PlayAudio`
+ `RecordAudio`
+ `Pause`

**Función de Lambda de ejemplo**  
En este ejemplo, se muestra una función de Lambda típica que reproduce un archivo de audio, pasa un token de unión y actualiza la llamada.

```
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();
    }
}
```

# Uso del servicio de audio PSTN de Amazon Chime SDK para terminar una llamada
<a name="case-5"></a>

Puede usar la 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) para finalizar una llamada saliente. La API invoca el punto de conexión de un **ID de aplicación multimedia SIP específico.** Los clientes pueden controlar el flujo de la llamada devolviendo las acciones a la aplicación multimedia SIP.

Si la respuesta es correcta, la API devuelve un código de estado http 202 junto con el `transactionId`, que puede usar con la API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html) para actualizar una llamada en curso.

El siguiente diagrama muestra las invocaciones realizadas al punto final de la AWS Lambda función para una llamada saliente.

![\[El flujo de datos al invocar la API CreateSipMediaApplicationCall. La API invoca un punto de conexión diferente cuando cambia el estado de una llamada saliente.\]](http://docs.aws.amazon.com/es_es/chime-sdk/latest/dg/images/sip-api-1.png)


El punto de conexión configurado para la aplicación multimedia SIP se invoca para los diferentes estados de la llamada saliente. Cuando un cliente finaliza una llamada, Amazon Chime SDK invoca el punto de conexión con un tipo de evento de invocación `HANGUP`. 

En este ejemplo se muestra un evento de invocación típico para una `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"
            }
        ]
    }
}
```

# Descripción de end-to-end las llamadas del servicio de audio PSTN del SDK de Amazon Chime
<a name="use-cases"></a>

Este caso de uso proporciona un código de ejemplo para recibir una llamada telefónica de una persona que llama a través de la PSTN, saludar a la persona que llama con un mensaje de audio, obtener el PIN de la reunión de la persona que llama, reproducir audio y unir a la persona que llama a la reunión.

**Acciones y eventos de invocación de**  
El servicio de audio transfiere los eventos de invocación a AWS Lambda las funciones como objetos JSON. Los objetos incluyen el tipo de evento de invocación y cualquier metadato relevante. La función de AWS Lambda también devuelve las acciones de las aplicaciones multimedia SIP como objetos JSON, y esos objetos incluyen un tipo de acción y cualquier metadato relevante.

En la siguiente tabla se enumeran los eventos de invocación y los posibles `ActionData.Type` cuando recibe un evento de invocación.


|  Evento de invocación  |  ActionData.Tipo  | 
| --- | --- | 
|  ACTION\$1SUCCESSFUL  |  CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits  JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting  | 
|  ACTION\$1FAILED  |  CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting  | 
| HANGUP |  HangUp  | 
|  DIGITS\$1RECEIVED  | ReceiveDigits | 

**nota**  
Para implementar el siguiente caso de uso, necesita al menos un número de teléfono en su inventario de Amazon Chime SDK, un objeto gestionado por aplicaciones multimedia SIP que utilice una función de AWS Lambda con un nombre de recurso de Amazon (ARN) y una regla SIP que utilice el número de teléfono como activador.

Cuando el SDK de Amazon Chime recibe una llamada al número de teléfono especificado en la regla, el servicio de audio PSTN invoca una AWS Lambda función con el tipo de evento de invocación. `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"
            }
        ]
    }
}
```

Puede programar la AWS Lambda función para validar los detalles de las llamadas y guardarlos para utilizarlos en el futuro. Para un `NEW_INBOUND_CALL` evento, la AWS Lambda función responde con un conjunto de acciones que reproducen un mensaje de bienvenida y solicitan el PIN de la reunión.

Los archivos de audio tienen los siguientes requisitos:
+ Debe reproducir los archivos de audio de un bucket de Amazon Simple Storage Service (S3). El bucket S3 debe pertenecer a la misma AWS cuenta que la aplicación multimedia SIP. Además, debe conceder el permiso de `s3:GetObject` a la entidad principal del servicio Amazon Chime SDK Voice Connector: `voiceconnector.chime.amazonaws.com`. Para ello puede utilizar la consola S3 o la interfaz de la línea de comandos (CLI).
+ Debe utilizar archivos WAV PCM de un tamaño no superior a 50 MB. El SDK de Amazon Chime recomienda 8 en mono KHz .
+ Los metadatos de S3 de cada archivo WAV deben contener `{'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
            }
        }
    ]
}
```

La aplicación multimedia SIP ejecuta estas acciones en el tramo A de la llamada. Suponiendo que la `PlayAudioAndGetDigits` acción reciba los dígitos, la aplicación multimedia SIP invoca la AWS Lambda función con el tipo de `ACTION_SUCCESSFUL` evento.

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

Puede programar una AWS Lambda función para identificar a la persona que llama en función de los `CallDetails` datos. También puede validar el PIN de la reunión recibido anteriormente. Si utiliza un PIN correcto, utilice [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html)y [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 para crear la reunión del SDK de Amazon Chime y generar el token de unión que utilizará el asistente a la reunión. La AWS Lambda función responde con la acción de unirse a la reunión del SDK de Amazon Chime.

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

Suponiendo que `JoinToken` sea válido, la aplicación multimedia SIP se une a la reunión del SDK de Amazon Chime e invoca una AWS Lambda función con el `ACTION_SUCCESSFUL` evento, donde `CallDetails` contiene los datos de la aplicación multimedia SIP y el servicio 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"
            }
        ]
    }
}
```

Si desea dejar de ejecutar acciones en la llamada o el tramo de llamada en este momento, puede responder con un conjunto de acciones vacío.

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

Cuando la persona que llama cuelga, la aplicación multimedia SIP invoca la función junto con el evento. AWS Lambda `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"
            }
        ]
    }
}
```

Si responde a un evento `Hangup` con una acción, la aplicación multimedia SIP ignora la acción si ningún otro `Participants` muestra ningún `Status` como `Connected`.