---
sourceDocument: Interfaces conversationnelles Yokohama
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/yokohama/conversational-interfaces

 Release :

    - yokohama

ft:locale :

    - fr-FR

ft:publication_title :

    - Interfaces conversationnelles Yokohama

ft:clusterId :

    - convint

bundleId :

    - convint

workflow :

    - Platform


---

# Agent virtuel Scripts d'action

# Agent virtuel Scripts d'action {#ariaid-title1}

* Rversion finale: Yokohama
* 
* Mis à jour 3 mars 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 10 minutes de lecture

Vous devez écrire un ensemble de scripts d'actions et de flux secondaires obligatoires Studio de workflow pour transmettre les données utilisateur à VACS, appliquer des transformations et renvoyer la réponse à votre point de terminaison d'interface de messagerie instantanée.

## Fournisseur et scripts entrants/sortants {#va-action-scripts__section_c5w_qcb_xlb}

Un fournisseur, tel que Twilio, fournit l'aptitude de messagerie instantanée. Les scripts d'action utilisateur effectuent des actions de fournisseur ainsi que la configuration d'intégration conversationnelle de la messagerie instantanée personnalisée pour les actions de transformateur entrantes et sortantes de votre chatbot ou de vos conversations personnalisées. Des exemples de chaque script sont fournis. Elles comprennent une description de l'action de chaque script, ainsi que l'entrée et la sortie d'action. Vous verrez également des exemples de script JSON.

Vous utilisez ces Studio de workflow scripts pour transformer les messages serveur et client. Les scripts du fournisseur, de l'expéditeur et du transformateur entrant/sortant sont requis. Vous pouvez utiliser les scripts supplémentaires pour ajouter plus de fonctionnalités à votre messagerie instantanée.  
{#va-action-scripts__table_qnf_xdb_xlb__entry__3}

| Nom de script | Objectif | Requis (O/N) |
|-|-|-|
| Attribut de fournisseur | Contient un jeton d'authentification du fournisseur, un identificateur utilisateur, une entrée utilisateur et des variables de contexte. | Y |
| Action de l'expéditeur | Regroupe la demande et envoie une réponse de façon asynchrone via Studio de workflow notre concentrateur d'intégration. | Y |
| Processeur de réponses | Effectue des actions sur la plateforme, telles qu'une mise à jour de l'état d'un message, qui se base sur une réponse reçue pour un message sortant. | N |
| Action contextuelle | Prend en charge les actions contextuelles. | N |
| Action du compte de lien | Fournit un rappel indiquant si la liaison de compte a réussi ou non. | N |
| Transformateur sortant | Transforme le contrôle pris en charge d'un serveur de messagerie instantanée en rendu spécifique à l'interface de messagerie instantanée. | Y |
| Transformateur entrant | Facultatif. Vous pouvez utiliser les contrôles enrichis par défaut s'ils s'appliquent à votre fournisseur de messagerie instantanée. Vous n'avez pas besoin de fournir une transformation entrante distincte pour chaque contrôle d'entrée. Si un comportement par défaut ne fonctionne pas, vous pouvez remplacer la valeur par défaut par votre propre transformation entrante pour un contrôle de serveur d'Agent virtuel spécifique. | Y |
[Tableau 1. Scripts]

{#va-action-scripts__table_qnf_xdb_xlb}

## Script d'action attributs du fournisseur {#va-action-scripts__section_jqc_y2b_xlb}

Le script d'action attributs du fournisseur extrait les données du message entrant. Le script connaît le protocole d'intégration conversationnelle de la messagerie instantanée personnalisée et génère le contenu du message entrant, l'ID utilisateur de l'expéditeur et un jeton d'authentification facultatif.  
Remarque :  
Si le script d'action d'attributs de votre fournisseur a une action contextuelle, votre script doit avoir les valeurs request_context.contextual_action et request_context.typed_value afin que l'entrée de l'utilisateur (qui correspond à une action contextuelle) soit incluse dans la transcription. Si vous ne définissez pas la valeur request_context.typed_value, le contenu de ce message n'apparaît pas dans la transcription.
{#va-action-scripts__table_dtk_5fb_xlb__entry__2}

| Entrée | Sortie |
|-|-|
| * En-têtes (JSON) : en-têtes de demande * Charge utile (JSON) : corps de la demande {#va-action-scripts__ul_gkf_dgb_xlb} | * Jeton (chaîne) : jeton d'authentification. * provider_user_id (chaîne) : nom de l'expéditeur, par exemple, un nom d'utilisateur dans un message Slack. * request_context (JSON) : contenu réel reçu. * typed_value contenu saisi, comme une réponse à une question. * attachment_value.url : URL de la pièce jointe. * attachment_value.content_type : type de contenu de la pièce jointe. * attachment_value.name : nom de fichier de la pièce jointe. * action contextuelle : action à effectuer, telle que END_CONVERSATION, START_CONVERSATION, AGENT. Ce script examine le message entrant. S'il existe un mot clé reconnu, l'une des actions peut être définie, par exemple outputs.request_context.contextual_action = \<\< END_CONVERSATION \>\> ;. Le cadre de travail reconnaît ce mot clé et appelle le script d'action contextuelle. * context_vars : variables contextuelles à transmettre dans une conversation, telles que 'outputs.request_context.context_vars = {language : \<\< en"} ;'. {#va-action-scripts__ul_sqy_pgb_xlb} {#va-action-scripts__ul_rgm_hgb_xlb} |
[Tableau 2. Entrée/sortie du script d'action des attributs du fournisseur]

{#va-action-scripts__table_dtk_5fb_xlb}  
Figure 1. Exemple : Studio de workflow entrée de script d'action attributs du fournisseur, y compris les en-têtes et la charge utile  
Figure 2. Exemple : Studio de workflow sortie de script d'action attributs de fournisseur, y compris jeton, request_context et provider_user_id

Exemple : script d'action attributs du fournisseur.

    (function execute(inputs, outputs) {
        var headers = (inputs.headers);
        var payload = (inputs.payload);

        // check if an authentication token was included. this is optional.
        var smsUtil = new VASMSTwilioUtil();
        outputs.token = JSON.stringify(smsUtil.getToken(headers, payload));

        var data = payload.data;
        var request_context = {}; 
        // inspect the actual message. it could be an MMS (attachment) or raw text
        if (data['MediaUrl0']) {
            var attachment_value = {};
            attachment_value.url = data['MediaUrl0'];
            attachment_value.content_type = data['MediaContentType0'];
            attachment_value.name = smsUtil.getFileName(attachment_value.url , attachment_value.content_type);
            request_context.attachment_value = attachment_value;
        } else {
           request_context.typed_value = data['Body'];
        }

        // set the mandatory outputs
        outputs.request_context = request_context;
        outputs.provider_user_id = data.From;
    })(inputs, outputs);

## Flux secondaire de l'expéditeur {#va-action-scripts__section_y2f_3m4_h4b}

Au lieu d'être un script, le flux secondaire de l'expéditeur gère le processus d'envoi d'un message à un fournisseur. Le message est contenu dans une payload chaîne dans le cadre du flux secondaire. L'expéditeur a un service_url et origin_service_url, tandis que l'URL sortante varie selon le fournisseur. Par exemple, un message envoyé via MS Teams utilise la valeur tenant_id. Lorsque l'Agent virtuel envoie le message contenant des options, le destinataire sélectionne une option. Le flux secondaire met à jour l'affichage du message en fonction de son choix et supprime les options. La conversation se poursuit en fonction de l'option sélectionnée par l'utilisateur. Le Agent virtuel est libéré pour continuer à traiter les messages plutôt que d'essayer d'envoyer des demandes externes. Lors de la création d'un flux secondaire, n'avez pas d'action pour appeler une action dans le flux secondaire. Pour en savoir plus sur les flux secondaires, reportez-vous à la section .

## Script d'action contextuelle {#va-action-scripts__section_avl_hkb_xlb}

Le script d'action contextuelle effectue des actions de mot clé spéciales, telles que saisir un <kbd class="ph userinput">agent</kbd> à l'intérieur d'une Agent virtuel rubrique, pour les transmettre immédiatement à un agent actif.
{#va-action-scripts__table_bvl_hkb_xlb__entry__2}

| Entrée | Sortie |
|-|-|
| * conversation_id (chaîne) : l'ID de la conversation. * request_context (JSON) : demande transmise par le script d'attribut du fournisseur qui contient l'action à effectuer, par exemple (END_CONVERSATION, START_CONVERSATION, AGENT). {#va-action-scripts__ul_cvl_hkb_xlb} | Aucune |
[Tableau 3. Entrée de script d'action contextuelle]

{#va-action-scripts__table_bvl_hkb_xlb}

Exemple : script d'action contextuelle.

    (function execute(inputs, outputs) {
      var contextual_action = inputs.request_context.contextual_action;
      if (contextual_action === "END_CONVERSATION") {
        sn_cs.VASystemObject.endConversation(inputs.conversation_id);
      } else if (contextual_action === "AGENT") {
        sn_cs.VASystemObject.switchToLiveAgent(inputs.conversation_id);
      } else if (contextual_action === "START_CONVERSATION") {
        sn_cs.VASystemObject.startConversation(inputs.conversation_id);
      }
    })(inputs, outputs);

## Script d'action du compte de lien {#va-action-scripts__section_mvv_skb_xlb}

Le script d'action du compte de liaison contient des identificateurs pour l'utilisateur qui effectue la liaison. Le script contient également le compte auquel il est lié.
{#va-action-scripts__table_nvv_skb_xlb__entry__2}

| Entrée | Sortie |
|-|-|
| * provider_user_id (chaîne) : l'identificateur de l'utilisateur qui établit la liaison, tel qu'un numéro de téléphone dans un ticket SMS. * état (chaîne) : réussite/échec. * user_id (chaîne) : user_sys_id ServiceNow pour le compte qui a été lié. {#va-action-scripts__ul_ovv_skb_xlb} | Aucune |
[Tableau 4. Entrée du script d'action du compte de liaison]

{#va-action-scripts__table_nvv_skb_xlb}

Exemple : script d'action du compte de liaison.

    (function execute(inputs, outputs) {
      
      var richControl = (inputs.rich_control);
      var value = richControl.value;
      outputs.result = richControl.header + ': ' + value.action;
      
    })(inputs, outputs);

## Script d'action du processeur de réponses {#va-action-scripts__section_lwm_dlb_xlb}

Le script d'action du processeur de réponses effectue des actions spécialisées qui sont basées sur la réponse à une demande d'envoi de message. Le framework effectue déjà le suivi de base de l'état des messages.
{#va-action-scripts__table_mwm_dlb_xlb__entry__2}

| Entrée | Sortie |
|-|-|
| * message_id (chaîne) : l'identificateur de sys_cs_message'enregistrement associé à cette réponse. * En-têtes (JSON) : en-têtes reçus. * corps (chaîne) : corps reçu. * code d'état (entier) : code d'état HTTP reçu. {#va-action-scripts__ul_nwm_dlb_xlb} | Aucune |
[Tableau 5. Entrée du script d'action du compte de processeur de réponse]

{#va-action-scripts__table_mwm_dlb_xlb}

Exemple : script d'action de processeur de réponses.

    (function execute(inputs, outputs) {
        gs.debug("Response from provider: message_id = " + inputs.message_id + ", status_code = " +
          inputs.status_code + ", headers = " + JSON.stringify(inputs.headers) + ", body = " + inputs.body);
    })(inputs, outputs);

## Scripts de transformateur sortants {#va-action-scripts__section_sjb_qlb_xlb}

Les scripts de transformateur sortants convertissent les messages sortants Agent virtuel en protocole lié à l'intégration conversationnelle de la messagerie instantanée personnalisée.

Entrée.  
* rich_control (JSON) : Agent virtuel composant de contrôle enrichi du serveur qui doit être transformé.
* charge utile (JSON) : dernière réponse reçue d'un demandeur.
{#va-action-scripts__ul_n1m_y24_xlb}

Sortie.

résultat (chaîne) : message du composant approprié au fournisseur à envoyer.
{#va-action-scripts__table_tjb_qlb_xlb__entry__2}

| Nom du transformateur sortant | Exemple de script |
|-|-|
| Agent virtuel : transformateur sortant du texte par défaut de l'adaptateur SMS Twilio | (function execute(inputs, outputs) { var rich_control = inputs.rich_control; outputs.result = rich_control['label']; })(inputs, outputs); |
| Agent virtuel : transformateur sortant de liaison par défaut de l'adaptateur SMS Twilio | (function execute(inputs, outputs) { var richControl = (inputs.rich_control); var value = richControl.value; outputs.result = richControl.header + ': ' + value.action; })(inputs, outputs); |
| Agent virtuel : transformateur sortant du sélecteur par défaut de l'adaptateur SMS Twilio | (function execute(inputs, outputs) { var rich_control = inputs.rich_control; var options = rich_control['options']; if (options && options.length > 0) { var optionsLength = options.length; var picker = rich_control['label'] || ""; for (var x = 0; x < optionsLength; x++) { picker += "\n" + (x+1) +  ": " + options[x].label; } } outputs.text_message = picker; })(inputs, outputs); |
| Agent virtuel : transformateur sortant multi-lien par défaut de l'adaptateur SMS Twilio | (function execute(inputs, outputs) { var rich_control = inputs.rich_control; var linkResult = rich_control['header']; var totalValues = rich_control['values'].length; for (var i = 0; i < totalValues; i++) { linkResult = linkResult + '\n'; var linkValue = rich_control['values'][i]; linkResult = linkResult + '\n' + linkValue['description'] + ': ' + linkValue['action']; } outputs.result  = linkResult; })(inputs, outputs); |
| Agent virtuel : transformateur sortant de la carte par défaut de l'adaptateur SMS Twilio | (function execute(inputs, outputs) { var richControl = (inputs.rich_control); var data = JSON.parse(richControl.data); var tableTitle = data.title; var fields = data.fields; var subtitle = data.subtitle; var url = data.url; var message = subtitle ? getCardLine(tableTitle, subtitle) : tableTitle + "\n"; for (var i= 0; i<fields.length; i++) { message += getCardLine(fields[i].fieldLabel, fields[i].fieldValue); } message += url; outputs.result = message; function getCardLine(key, value) { if (value == '' || value == null || key == '' || key == null) return; return key + ": " + value + "\n"; } })(inputs, outputs); |
[Tableau 6. Exemples : scripts de transformateur sortants]

{#va-action-scripts__table_tjb_qlb_xlb}

## Scripts de transformateur entrant {#va-action-scripts__section_j2g_cmb_xlb}

Les scripts de transformateur entrants convertissent les messages entrants d'intégration conversationnelle personnalisée en un protocole que l'reconnaît Agent virtuel . Il détermine la valeur requise à injecter dans le contrôle enrichi présenté à l'utilisateur.

Entrée.  
* request_context (JSON) : demande transmise à partir du script d'attribut de fournisseur.
* rich_control (JSON) : dernier contrôle enrichi envoyé au demandeur qui contient la \<\< question \>\> d'origine.
{#va-action-scripts__ul_whj_yf4_xlb}

Sortie.  
résultat (JSON) : résultat attendu par le Agent virtuel serveur. Si le demandeur répond à un sélecteur de rubrique, il s'agit du sys_id de la rubrique. Si le demandeur répond à un texte d'entrée, il s'agit de la réponse textuelle.

* Valeur : valeur sys_id ou texte.
* search_text : texte utilisé si le demandeur a sélectionné quelque chose d'inattendu. Par exemple, un utilisateur a saisi quelque chose pour lequel le NLU pourrait aider, par exemple \<\< Aucune de ces options ne correspond à ce que je veux \>\> en réponse à un composant du sélecteur de rubrique.
{#va-action-scripts__ul_dz1_bg4_xlb}
{#va-action-scripts__table_k2g_cmb_xlb__entry__2}

| Nom du transformateur entrant | Exemple de script |
|-|-|
| Agent virtuel : transformateur entrant du texte par défaut de l'adaptateur SMS Twilio Objectif : trouver la réponse textuelle à la question InputText posée | (function execute(inputs, outputs) { var requestContext = inputs.request_context; var richControl = inputs.rich_control; var typedValue = requestContext['typed_value']; var attachmentValue = requestContext['attachment_value']; var smsUtil = new VASMSTwilioUtil(); var result = {}; if(richControl['itemType'] == 'image' || richControl['itemType'] == 'file')	{ if (attachmentValue && attachmentValue.content_type.includes('image')) { result.url = attachmentValue.url; result.content_type = attachmentValue.content_type; result.name = attachmentValue.name; result.headers = attachmentValue.headers; } else if (typedValue) { result.url = typedValue; var contentType = smsUtil.getContentType(typedValue); if (typeof contentType === 'undefined') gs.error('Please enter a valid image link. Inbound image link: {0}', typedValue); else result.content_type = contentType; } else { gs.error('Please upload an image or enter a valid image link.'); } } result['value'] = typedValue; result['search_text'] = ''; outputs.result = result; })(inputs, outputs); |
| Agent virtuel : transformateur entrant du sélecteur par défaut de l'adaptateur SMS Twilio Objectif : trouver le sys_id de l'option sélectionnée par l'utilisateur pour cette question de sélecteur. Ce script utilise le même algorithme que le transformateur sortant. Si aucune option n'est sélectionnée et que l'utilisateur a saisi quelque chose à la place, la \<\< search_text \>\> est définie et introduite dans le NLU si elle est activée sur cette instance. | (function execute(inputs, outputs) { var request_context = inputs.request_context; var rich_control = inputs.rich_control; var selectedValue = request_context["typed_value"]; var result = {}; result["value"] = ""; result["search_text"] = ""; if (rich_control['options']) { var options = rich_control['options']; var optionsLength = options.length; selectedValue === Number(selectedValue) if (selectedValue > 0 && selectedValue <= optionsLength) { var selectedOption = options[selectedValue - 1]; result["value"] = selectedOption.value; } else { result["search_text"] = request_context["typed_value"]; } } outputs.result = result; })(inputs, outputs); |
[Tableau 7. Exemples : Scripts de transformateur entrants]

{#va-action-scripts__table_k2g_cmb_xlb}

