CTI API

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 9 minutes de lecture
  • L’API CTI fournit des points de terminaison qui permettent aux fournisseurs de couplage téléphonie-informatique (CTI) d’interagir avec le cadre de travail du centre d’appel cloud.

    À l’aide de cette API, les intégrateurs sont en mesure de :
    • Appelez les opérations CTI à l’aide de gestionnaires d’opérations personnalisés dans le cadre de travail Centre d’appel cloud.
    • Transmettez des événements d’un fournisseur CCP à une ServiceNow instance.
    • Affichez les transcriptions et les enregistrements d’un appel d’agent spécifié.

    Cette API s’exécute dans l’espace de sn_cti_core noms. Avant de pouvoir accéder à cette API, vous devez installer l’application Cloud Call Center Core (sn_cti_core). Pour plus d’informations sur cette installation, consultez Installer les applications Centre d’appel cloud.

    Pour plus d’informations sur Centre d’appel cloud, consultez Centre d’appel cloud.

    CTI_API : GET /sn_cti_core/cti_api/call_analysis/{interaction_sys_id}

    Affiche les transcriptions et les enregistrements d’un appel d’agent spécifié.

    Les composants utilisent ce point de terminaison dans les espaces de travail Agent et Manager pour restituer les transcriptions et les enregistrements des appels d’agent associés. Pour accéder à ce point de terminaison, les informations d’identification de l’utilisateur que vous transmettez dans l’appel doivent avoir le rôle workspace_user, interaction_agent ou admin.

    Ce point de terminaison a un point d’extension correspondant, sn_cti_core. CTICallAnalysisExtractor, qui est responsable du rendu des données d’appel. Le système de base fournit une implémentation pour Amazon Connect. Si votre implémentation est différente, vous devez personnaliser ce point d’extension avant d’utiliser ce point de terminaison. En outre, les paramètres de réponse renvoyés par ce point de terminaison correspondent à l’implémentation de ce point d’extension. Pour plus d’informations sur l’implémentation de points d’extension, consultez Utilisation de points d’extension pour étendre les fonctionnalités d’application et lespoints d’extension dans Centre d’appel cloud.

    Format d'URL

    URL par défaut : /api/sn_cti_core/cti_api/call_analysis/{interaction_sys_id}

    Paramètres de demande pris en charge

    Tableau 1. Paramètres de chemin d'accès
    Nom Description
    interaction_sys_id Sys_id de l’appel d’agent pour lequel rendre la transcription et l’enregistrement. Situé dans la table Interaction [interaction].

    Type de données : chaîne

    Tableau 2. Paramètres de requête
    Nom Description
    Néant
    Tableau 3. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    Néant

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir une liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 4. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Tableau 5. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir une liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 6. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.
    Divers Dépend de l’implémentation dans le sn_cti_core. Point d’extension CTICallAnalysisExtractor.

    Paramètres de corps de réponse (JSON ou XML)

    Nom Description
    Dépend de l’implémentation dans le sn_cti_core. Point d’extension CTICallAnalysisExtractor.

    Demande cURL

    L’exemple suivant demande le rendu d’un appel d’agent spécifique.

    curl -X POST \
      https://instance.servicenow.com/api/sn_cti_core/cti_api/call_analysis/88f2d9b7dbd7101058f05214dc96192a \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -u 'username':'password'

    Rendu des données d’appel en fonction du traitement spécifié dans le sn_cti_core. Point d’extension CTICallAnalysisExtractor.

    {
      "result":{
        "status":"success",
        "recordingData":{
          "recordingUrls":[
            "https://instance.awsapps.com/connect/get-recording?format=wav&callLegId=7626da7f-e083-4085-b77a-85bfea18fe24",
            "https://s3.console.aws.amazon.com/s3/object/connect-60f8665899b6/connect/instance/CallRecordings/2020/09/23/7626da7f-e083-4085-b77a-85bfea18fe24_20200923T18%3A24_UTC.wav"
          ],
          "status":"success"
        },
        "transcriptData":{
          "transcript":[
            {
              "content":"Okay. Hello? Mhm. Okay, okay.",
              "beginOffsetMillis":3940,
              "participantId":"CUSTOMER",
              "additionalInfo":[
                {
                  "value":"Neutral",
                  "highlightColor":"info"
                }
              ]
            },
            {
              "content":"bye.",
              "beginOffsetMillis":26040,
              "participantId":"AGENT",
              "additionalInfo":[
                {
                  "value":"Neutral",
                  "highlightColor":"info"
                }
              ]
            }
          ],
          "sentimentTrend":[
            {
              "x":0,
              "y":0
            },
            {
              "x":3939,
              "y":0
            },
            {
              "x":3940,
              "y":0
            },
            {
              "x":26450,
              "y":0
            }
          ],
          "sentimentPercents":{
            "positive":0,
            "neutral":100,
            "negative":0
          },
          "talkTimePercents":{
            "agent_talk_time":2.515491747959998,
            "customer_talk_time":28.82998956991226,
            "non_talk_time":68.65451868212774
          },
          "metadata":{
            "ctiVendor":"amazon_connect",
            "customerId":"Alice Smith",
            "agentId":"Piper Epps"
          },
          "status":"success"
        },
        "metadata":{
          "callMonitorURL":"https://instance.awsapps.com/connect/real-time-metrics?tableType=user",
          "recordingState":"success",
          "transcriptState":"success",
          "emptyStateImages":{
            "in_progress":"call_in_progress.png",
            "processing":"processing_post_call.png",
            "unavailable":"transcript_failed.png"
          }
        }
      }
    }

    CTI_API - POST /sn_cti_core/cti_api/providers/{provider}/components/{component}/versions/{version}

    Invoque les opérations CTI (Computer Telephony Integration) à l’aide des gestionnaires d’opération spécifiés dans le cadre de travail Centre d’appel cloud.

    Avant d’appeler ce point de terminaison, vous devez créer un enregistrement de configuration du fournisseur et les transformateurs de message associés. Cela se fait généralement lorsque le cadre de travail Centre d’appel cloud est initialement implémenté dans votre instance. Pour plus d’informations, consultez Configuration du fournisseur dans Centre d’appel cloud.

    Un transformateur de message est responsable de l’analyse de la charge utile spécifiée dans le corps de la demande de ce point de terminaison et de la définition des données de charge utile sur un objet CTIOperationRequest associé. Un gestionnaire d’opération est ensuite chargé d’obtenir les informations à partir de l’objet CTIOperationRequest et d’utiliser les données pour traiter l’opération demandée.

    Une fois que le transformateur de message a terminé l’analyse de la charge utile transmise, le cadre de travail Centre d’appel cloud instancie le gestionnaire d’opération spécifié. Le gestionnaire d’exploitation utilise les méthodes GET de l’API CTIOperationResponse CTIOperationResponse : champ d’application, global pour obtenir les informations dont il a besoin à partir de l’objet CTIOperationRequest associé afin de traiter l’opération demandée.

    Vous définissez le gestionnaire d’opération à appeler, ainsi que ses paramètres associés, dans le corps de la demande de cet appel de point de terminaison. Le gestionnaire d’opération spécifié doit être défini dans votre instance dans la table Gestionnaire d’opération [sn_cti_operation_handler]. Pour plus d’informations sur la création de gestionnaires d’opération, consultez Configurer un flux de contact pour une interaction d’appelant automatisée.

    Le ServiceNow système de base fournit des gestionnaires d’opérations et des transformateurs de messages fonctionnels qui permettent la connexion à Amazon Connect. Lors de la création de flux de contact dans Amazon Connect, il existe deux points d’intégration entre les services Amazon et une ServiceNow instance :
    • Proxy Lambda Amazon Web Services (AWS) (appeler la fonction AWS Lambda)
    • Bot Lex AWS (obtenir l’entrée client)
    Vous pouvez trouver les gestionnaires d’opérations et les transformateurs de messages disponibles pour ces points d’intégration dans les tables Gestionnaires d’opérations [sn_cti_operation_handler] et Transformateur de message du fournisseur [sn_cti_provider_msg_transormer].

    En outre, les informations d’identification de l’utilisateur que vous transmettez dans l’appel doivent avoir le rôle sn_cti_core.service ou admin pour accéder à ce point de terminaison.

    Pour plus d’informations sur Centre d’appel cloud, consultez Centre d’appel cloud.

    Format d'URL

    URL par défaut : /api/sn_cti_core/cti_api/providers/{provider}/components/{component}/versions/{version}

    Paramètres de demande pris en charge

    Tableau 7. Paramètres de chemin d'accès
    Nom Description
    composant Étiquette du composant de votre fournisseur, par exemple sn_aws_connect_lambda_proxy_component ou sn_aws_connect_lex_intent_processor_component. Situé dans le champ Composant de la table Composant du fournisseur [sn_cti_provider_component].

    Type de données : chaîne

    fournisseur Sys_id de l’enregistrement de votre fournisseur CTI. Situé dans la table Composant du fournisseur [sn_cti_provider_component].

    Type de données : chaîne

    version Version de l’enregistrement du fournisseur spécifié. Situé dans le champ Version de la table Composant du fournisseur [sn_cti_provider_component].

    Type de données : chaîne

    Tableau 8. Paramètres de requête
    Nom Description
    Néant
    Tableau 9. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    Dépend du gestionnaire d’opération appelé et de son implémentation spécifique.

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir une liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 10. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Tableau 11. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir une liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 12. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.
    Divers Dépend de l’opération appelée et de son implémentation spécifique.

    Paramètres de corps de réponse (JSON ou XML)

    Nom Description
    Dépend de l’opération appelée et de son implémentation spécifique.

    Demande cURL

    L’exemple suivant appelle le gestionnaire d’opération interactionEvent via le composant sn_aws_connect_lambda_proxy_component.

    curl -X POST \
      https://instance.servicenow.com/api/sn_cti_core/cti_api/providers/c4b12aa6e700001034b36584c2f6a9bc/components/sn_aws_connect_lambda_proxy_component/versions/v1.0 \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -u 'username':'password'
      -d '{
      "context": {
        "callbackWaitsForEmptyEventLoop": true,
        "functionVersion": "$LATEST",
        "functionName": "snRALJNLambda",
        "memoryLimitInMB": "128",
        "logGroupName": "/aws/lambda/snRALJNLambda",
        "logStreamName": "2020/09/24/[$LATEST]b604a9579ef548a1b3f6b6739d19e1d9",
        "invokedFunctionArn": "arn:aws:lambda:us-west-2:028738656045:function:snRALJNLambda",
        "awsRequestId": "b528a5a8-bb0b-4ec8-8e76-aa568f68fdc8"
      },
      "event": {
        "Details": {
          "ContactData": {
            "Attributes": {
              "$accepted_terms": "true"
            },
            "Channel": "VOICE",
            "ContactId": "8fe7c107-78df-4eec-85b3-91c6dcb8e912",
            "CustomerEndpoint": {
              "Address": "+16693504374",
              "Type": "TELEPHONE_NUMBER"
            },
            "Description": null,
            "InitialContactId": "8fe7c107-78df-4eec-85b3-91c6dcb8e912",
            "InitiationMethod": "INBOUND",
            "InstanceARN": "arn:aws:connect:us-west-2:028738656045:instance/d276bd83-6305-4f63-abee-e66fd5bdf503",
            "LanguageCode": "en-US",
            "MediaStreams": {
              "Customer": {
                "Audio": null
               }
             },
             "Name": null,
             "PreviousContactId": "8fe7c107-78df-4eec-85b3-91c6dcb8e912",
             "Queue": {
               "ARN": "arn:aws:connect:us-west-2:028738656045:instance/d276bd83-6305-4f63-abee-e66fd5bdf503/queue/0f17b62d-d493-439a-88c6-42db0d0e652f",
               "Name": "BasicQueue",
               "OutboundCallerId": {
                 "Address": "+18335441399",
                 "Type": "TELEPHONE_NUMBER"
               }
             },
             "References": {},
             "SystemEndpoint": {
               "Address": "+18335441399",
               "Type": "TELEPHONE_NUMBER"
             }
           },
           "Parameters": {
             "sn_component": "sn_aws_connect_lambda_proxy_component",
             "sn_operation": "interactionEvent"
           }
         },
         "Name": "ContactFlowEvent"
       }
     }'

    Exemple de réponse à l’appel du gestionnaire d’opération interactionEvent.

    {
      "result": {
        "snc_user_first_name": "Jane",
        "snc_user_last_name": "Doe",
        "snc_user_sys_id": "bbe591bfdb5710100231dbdb5e9619e3",
        "snc_user_vip": "false",
        "interactionTable": "interaction",
        "interactionId": "973b07c8dbe710100231dbdb5e961908",
        "statusCode": 200,
        "message": "success"
      }
    }

    CTI_API - POST /sn_cti_core/cti_api/softphone/sources/{source}/actor/{actor}/events/{event}

    Transmet les événements d’un fournisseur du panneau de contrôle de contact (CCP) à une ServiceNow instance.

    En règle générale, vous appelez ce point de terminaison à partir de votre page d’interface utilisateur CCP pour effectuer diverses tâches (événements), telles que la modification de l’état de présence d’un agent ou la modification de l’état d’un enregistrement à la fin de l’appel. Pour accéder à ce point de terminaison, les informations d’identification de l’utilisateur que vous transmettez dans l’appel doivent avoir le rôle sn_openframe_user ou admin.

    Ce point de terminaison a un point d’extension correspondant, sn_cti_core. SoftPhoneEventSink, qui est chargé de déterminer l’action réellement effectuée par cet appel de point de terminaison pour chaque événement. Le système de base fournit une implémentation pour les événements Amazon Connect. Si votre implémentation est différente, vous devez personnaliser ce point d’extension avant d’utiliser ce point de terminaison. Les formats de corps de la demande et de réponse de ce point de terminaison correspondent à l’implémentation de ce point d’extension. Pour plus d’informations sur l’implémentation de points d’extension, consultez Utilisation de points d’extension pour étendre les fonctionnalités d’application et lespoints d’extension dans Centre d’appel cloud.

    Format d'URL

    URL par défaut : /api/sn_cti_core/cti_api/softphone/sources/{source}/actor/{actor}/events/{event}

    Paramètres de demande pris en charge

    Tableau 13. Paramètres de chemin d'accès
    Nom Description
    Acteur Émetteur de l’événement, tel que l’agent ou le external_system. Les valeurs spécifiques sont déterminées par l’implémenteur.

    Type de données : chaîne

    event Nom de l’événement dans le système du fournisseur du couplage téléphonie-informatique (CTI), disponible ou hors ligne. Les valeurs spécifiques sont déterminées par l’implémenteur, mais doivent être un seul mot/phrase sans espaces ni caractères spéciaux.

    Type de données : chaîne

    sources Identificateur de la page d’interface utilisateur de téléphonie logicielle du fournisseur, tel que aws_ccp.

    Type de données : chaîne

    Tableau 14. Paramètres de requête
    Nom Description
    Néant
    Tableau 15. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    Spécifique à l’implémentation. Déterminé par l’implémentation de la sn_cti_core. Point d’extension SoftPhoneEventSink.

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir une liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 16. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Tableau 17. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir une liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 18. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.

    Paramètres de corps de réponse (JSON ou XML)

    Nom Description
    Néant

    Demande cURL

    L’exemple suivant transmet les informations d’événement AgentStatusOne à l’instance ServiceNow . Les paramètres de corps de demande sont déterminés par l’implémentation du sn_cti_core. Point d’extension SoftPhoneEventSink.

    curl -X POST \
      https://instance.servicenow.com/api/sn_cti_core/cti_api/softphone/sources/aws_ccp/actor/agent/events/AgentStatusOne \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -u 'username':'password'
      -d '{
       "agent":{
          "sys_id":"doe.john@snc",
          "status":{
             "agentStateARN":null,
             "type":"not_routable",
             "name":"AgentStatusOne",
             "startTimestamp":"2020-09-24T21:43:20.957Z"
          }
       },
       "window":{
          "location":{
             "href":"https://instance.servicenow.com/sn_cti_amzn_cct_aws_ccp.do?id=44106eabdb5710100231dbdb5e96191d",
             "search":"?id=44106eabdb5710100231dbdb5e96191d"
          }
       },
       "aws":{
          "connect":{
             "config":{
                "ccpHost":"instance.awsapps.com",
                "ccpUrl":"https://instance.awsapps.com/connect/ccp-v2/",
                "loginPopup":true,
                "audioRecordingUrlPrefix":"https://instance.awsapps.com/connect/get-recording?format=wav&callLegId=",
                "softphone":{
                   "allowFramedSoftphone":true
                },
                "region":"us-west-2"
             }
          }
       }
    }'

    Aucun paramètre de réponse n’est renvoyé.

    {
      "result": {}
    }