Comment empêcher les agents de mon centre de contact Amazon Connect d'effectuer des appels sortants vers certains numéros de téléphone ?

Date de la dernière mise à jour : 25/03/2020

Je ne souhaite pas que les agents de mon centre de contact Amazon Connect appellent certains pays ou numéros de téléphone au tarif premium. Comment puis-je empêcher ces appels ?

Brève description

Dans un flux de contacts de flux discret sortant, appelez une fonction AWS Lambda pour vérifier si un numéro de téléphone composé est autorisé. Si le numéro de téléphone n'est pas autorisé, arrêtez le contact à l'aide de l'API StopContact d'Amazon Connect.

Remarque : cette solution présente quelques limitations :

  • Elle ne peut pas bloquer les rappels mis en file d'attente. Lorsqu'une demande de rappel est initiée à partir de l'agent, l'ID de contact qui est transmis via le flux de message discret sortant n'est pas le véritable ID de contact.
  • Elle ne peut pas bloquer les appels si la fonction Lambda ne parvient pas à effectuer des appels pour une raison quelconque. Si la fonction échoue, le contact suit la branche d'erreur du flux de contacts et l'appel n'est pas arrêté.
  • Il s'agit d'un simple exemple. Pour votre environnement de production, personnalisez votre configuration en fonction de votre cas d'utilisation et des autorisations de numérotation des agents.

Solution

Créer une fonction Lambda

À l'aide de l'environnement d'exécution de votre choix, créez une fonction Lambda. Intégrez la logique de fonction qui vérifie une demande JSON entrante depuis Amazon Connect pour les éléments suivants :

  • Nom d'utilisateur de l'agent (sous « Attributs »)
  • ID de contact actuel (« ContactId »)
  • Numéro de téléphone composé (sous « CustomerEndpoint »)
  • ID de contact initial (« InitialContactId »)
  • Amazon Resource Name (ARN) de l'instance du centre de contacts (« InstanceARN »)

Pour plus d'informations, consultez la section Attributs de contact disponibles dans Amazon Connect et l'exemple suivant d'une demande JSON à une fonction Lambda :

{
    "Details": {
        "ContactData": {
            "Attributes": {},
            "Channel": "VOICE",
            "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "CustomerEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            },
            "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
            "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
            "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXX",
            "Queue": "QueueName",
            "SystemEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            }
        },
        "Parameters": {
            "sentAttributeKey": "sentAttributeValue"
        }
    },
    "Name": "ContactFlowEvent"
}

Conseil : ajoutez une logique spécifique au code de votre fonction selon votre cas d'utilisation. Par exemple, vous pouvez vérifier les attributs de contact par rapport à une base de données interne d'autorisations de numérotation d'agent. Pour plus d'informations, consultez la section Utilisation d'attributs avec une fonction Lambda.

Votre fonction doit également inclure un appel à l'API StopContact d'Amazon Connect. Dans l'appel d'API, spécifiez les éléments « ContactId » et « InstanceId » des contacts que vous souhaitez arrêter.

En outre, vous devez attacher une stratégie AWS Identity and Access Management (IAM) avec des autorisations suffisantes pour appeler l'API StopContact au rôle d'exécution de la fonction. L'exemple de document de stratégie JSON suivant inclut les autorisations de base pour appeler l'API :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "StopContactPermission",
            "Effect": "Allow",
            "Action": "connect:StopContact",
            "Resource": "*"
        }
    ]
}

Utilisez le code de fonction Python suivant à titre d'exemple. Veillez à le personnaliser en fonction de votre cas d'utilisation.

Remarque : cet exemple de code inclut la condition permettant d'identifier le numéro à bloquer. Si ce numéro est un numéro de rappel demandé, la fonction gère l'erreur et la transmission de l'API.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0

import boto3
from botocore.exceptions import ClientError
connect = boto3.client('connect')

def lambda_handler(event, context):
    response = {
            'phoneNumberBlockerMessage': 'Passing through AmazonConnectPhoneNumberBlocker. No contact is blocked.'
    }

    try:
            if event['Details']['ContactData']['CustomerEndpoint']['Address'] == '<telephone-number-condition>':
                # Stop contact here

                connect.stop_contact(
                    ContactId = event['Details']['ContactData']['InitialContactId'],
                    InstanceId = event['Details']['ContactData']['InstanceARN'].split('/')[1]
                )
                response = {
                    'phoneNumberBlockerMessage': 'Call is blocked.'
                }
    except ClientError as e:
            if e.response['Error']['Code'] == 'ContactNotFoundException':
                response = {
                    'phoneNumberBlockerMessage': 'This is either a callback contact or contact ID does not exist, contact pass through.'
                }
            else:
                # Handle other error
                pass
    return response

Ajouter la fonction Lambda à votre instance

Dans la console Amazon Connect, ajoutez votre fonction Lambda à votre instance de centre de contact.

Créer un flux de message discret sortant

Si vous ne l'avez pas déjà fait, créez un flux de contacts de message discret sortant.

Important : pour créer un flux de contacts, vous devez vous connecter à votre instance Amazon Connect en tant qu'utilisateur disposant des autorisations suffisantes dans son profil de sécurité.

  1. Connectez-vous à votre instance Amazon Connect avec votre URL d'accès (https://alias.awsapps.com/connect/login).
    Remarque : remplacez alias par l'alias de votre instance.
  2. Dans la barre de navigation de gauche, maintenez le curseur sur Routage, puis sélectionnez Flux de contacts.
  3. Sur la page Flux de contacts en regard du bouton Créer un flux de contacts, choisissez la flèche vers le bas, puis Créer un flux de file d'attente client.
  4. Dans le concepteur de flux de contacts, pour Saisir un nom, saisissez le nom du flux de contacts. Par exemple, Outbound whisper (Stop).
  5. Sélectionnez Enregistrer.

Pour en savoir plus, consultez la section Création d'un flux de contact.

Ajouter un bloc Set contact attributes

Configurez ce bloc pour obtenir le nom d'utilisateur de l'agent, que vous envoyez à Lambda pour l'analyser.

  1. Dans le concepteur de flux de contacts, développez Définir.
  2. Faites glisser un bloc Définir des attributs de contact sur le canevas.
  3. Sélectionnez le titre du bloc (Définir des attributs de contact). Le menu de configuration du bloc s'ouvre.
  4. Sous Attribut à enregistrer, choisissez Utiliser l'attribut, puis effectuez les opérations suivantes :
    Pour Clé de destination, saisissez un nom de clé. Par exemple, agent_username.
    Pour Type, choisissez HTTPS.
    Pour Attribut, choisissez Nom d'utilisateur.
  5. Sélectionnez Enregistrer.

Ajouter un bloc Appeler la fonction AWS Lambda

  1. Dans le concepteur de flux de contacts, développez Intégrer.
  2. Faites glisser un bloc Appeler la fonction AWS Lambda sur le canevas.
  3. Choisissez le titre du bloc (Appeler une fonction AWS Lambda). Le menu de configuration du bloc s'ouvre.
  4. Sous ARN de la fonction, sélectionnez l'option Sélectionner une fonction, puis la fonction Lambda que vous avez ajoutée à votre instance.
  5. (Facultatif) Pour Délai d'expiration (8 secondes maximum), saisissez le délai d'attente maximale en secondes de la réponse de Lambda par Amazon Connect.
  6. Sélectionnez Enregistrer.

Pour plus d'informations, consultez la section Appeler une fonction AWS Lambda.

Arrêter le flux de contacts

  1. Ajoutez et connectez d'autres blocs de contact si nécessaire pour votre cas d'utilisation. Pour obtenir des conseils, reportez-vous à l'exemple de flux de contacts.
  2. Connectez tous les connecteurs de votre flux de contacts à un bloc. Veillez à connecter le nœud Succès du bloc Définir les attributs de contact au bloc Appeler la fonction AWS Lambda. Vous devez utiliser au moins ces blocs :
    Point d'entrée > Définir les attributs de contact > Appeler la fonction AWS Lambda > Mettre fin au flux / Reprendre
  3. Enregistrez et publiez le flux de contacts.

Pour en savoir plus, consultez la section Création d'un flux de contact.

Configurer une file d'attente avec le flux de message discret sortant

Dans le profil de routage auquel vos agents sont affectés, identifiez la file d'attente sortante par défaut. Pour plus d'informations, consultez Créer un profil de routage et un objet de profil de routage.

Modifiez la file d'attente en procédant comme suit :

  1. Dans votre instance Amazon Connect, dans le volet de navigation de gauche, arrêtez-vous sur Routage, puis choisissez Files d'attente.
  2. Sur la page Files d'attente, choisissez le nom de la file d'attente que vous avez identifiée comme file d'attente sortante par défaut.
  3. Sur la page Modifier la file d'attente pour Flux de message discret sortant (facultatif), recherchez et choisissez le nom du flux de message discret sortant que vous avez créé.
  4. Sélectionnez Enregistrer.