VoiceTranscriptObject : inclus dans le champ d’application
L’API de script VoiceTranscriptObject fournit des méthodes pour enregistrer les données de transcription de conversation vocale tierce dans une table au sein d’une ServiceNow instance.
Lorsque vous appelez la classe VoiceTranscriptObject , utilisez l’identificateur d’espace de noms sn_cs.
Graphique des disponibilités
Cette API est disponible dans le système de base ServiceNow . L’accès est restreint par les ACL imposées aux tables Interaction [interaction] et Conversation [sys_cs_conversation].
VoiceTranscriptObject : addVoiceInteractionMessage(String interactionId, String JSON)
Ajoute les messages spécifiés à l’enregistrement de transaction vocale spécifié.
Vous pouvez appeler ce point de terminaison plusieurs fois pendant la transcription en temps réel de l’appel ou transmettre tous les messages en un seul appel si vous transcrivez l’appel à des fins d’historique. Si vous traitez une conversation en temps réel, vous devez appeler ce point de terminaison fréquemment, afin que les messages apparaissent Espace de travail d'agent en temps opportun. Les messages sont triés en fonction de leurs heures de début et de fin par rapport au début de l’appel.
| Nom | Type | Description |
|---|---|---|
| interactionId | Chaîne | Sys_id de l’enregistrement d’interaction auquel ajouter les messages spécifiés. Cette valeur est renvoyée par la VoiceTranscriptObject : startVoiceInteraction(String JSON) méthode et stockée dans la table Interaction [interaction]. |
| <json_string> | Chaîne (tableau d’objets) | Liste des messages à joindre à l’interaction vocale spécifiée.
|
| <json_string>.attributs | Tableau d'objets | Paires clé-valeur à associer à l’interaction vocale.
Il peut s’agir de n’importe quel type d’objet de données, des objets simples aux objets composés complexes. Ils sont utilisés comme identificateurs uniques lors de l’appel des API Amazon Web Services. Par défaut : Aucun |
| <json_string>.beginOffsetMillis | Long | Obligatoire. Décalage temporel entre le début de l’interaction vocale et le début du message associé. Par exemple : « beginOffsetMillis » : 2650. Unité : Millisecondes |
| <json_string>.contenu | Chaîne | Obligatoire. Texte du message à ajouter à l’interaction vocale. |
| <json_string>.endOffsetMillis | Long | Obligatoire. Décalage temporel entre le début de l’interaction vocale et la fin du message. Par exemple : « endOffsetMillis » : 9380. Unité : Millisecondes |
| <json_string>.id | Chaîne | UUID de message de la source de cette conversation vocale, par exemple pour AmazonConnect. Définit la valeur de colonne de l’ID du message source. Par défaut : Aucun |
| <json_string>.isEvent | Booléen | Défini par Amazon Connect, mais non utilisé actuellement par la méthode. Marqueur indiquant si le message associé est un événement.
Valeurs valides :
Valeur par défaut : false |
| <json_string>.isInternalMessage | Booléen | Marqueur indiquant s’il s’agit d’un message interne et ne doit pas être affiché à l’appelant.
Les transcriptions sont généralement considérées comme des messages internes et n’apparaissent que pour l’agent et non pour l’appelant. En outre, Chuchotage est utilisé lorsqu’un tiers silencieux discute avec un agent ou est amené à participer à une conversation téléphonique à l’insu de l’appelant et offre des conseils à un agent. L’appelant n’entend ni ne voit ces messages, contrairement à l’agent. Valeurs valides :
Valeur par défaut : false |
| <json_string>.loudnessScore | Numéro | Mesure du niveau sonore auquel un client ou un agent parle pendant un appel.
Contact Lens affiche une analyse de la conversation qui montre où ils peuvent parler fort et avoir un sentiment négatif. Par défaut : null |
| <json_string>.participantId | Chaîne | Requis. Participant associé au message. Valeurs valides :
|
| <json_string>.sentiment | Chaîne | Sentiment du message.
Cette valeur est générée par un fournisseur tiers. En fonction des paramètres de configuration de l’instance ServiceNow , cette valeur est ensuite traduite comme positive, négative ou neutre et est stockée dans l’enregistrement de conversation et d’interaction. Valeurs valides :
Par défaut : null |
| Type | Description |
|---|---|
| Chaîne | Message décrivant les résultats de l’appel. |
| Chaîne | En cas de réussite, sys_id de l’enregistrement du message d’interaction vocale qui a été créé. Situé dans la table Message de conversation de la transcription vocale [sys_cs_message_voice_transcript]. Si une erreur s’est produite, un message d’erreur décrivant la raison de l’échec. |
L’exemple suivant montre comment ajouter des messages à un enregistrement d’interaction vocale existant.
var request = [
{
"isEvent":"False",
"isInternalMessage":"False",
"beginOffsetMillis":100000,
"content":"This is John. How can I help you?",
"endOffsetMillis":150000,
"id":"954c4edc-31a8-48b0-8f6e-7fa0c4ca00a8",
"participantId":"AGENT",
"sentiment":"NEUTRAL"
},
{
"isEvent":"False",
"isInternalMessage":"False",
"beginOffsetMillis":200000,
"content":"Uh, yes, John. Um, I'm a little very frustrated right now.",
"endOffsetMillis":25000,
"id":"18bcf19c-4a9b-4af1-9bd7-7bfb5ba53b9f",
"participantId":"CUSTOMER",
"sentiment":"NEGATIVE"
}
];
gs.log(sn_cs.VoiceTranscriptObject.addVoiceInteractionMessage("1f4ed6fdb7471110b6e8bc15ae11a971", JSON.stringify(request)));
Sortie :
// Success
Voice conversation transcript has been successfully saved. Conversation id: ea01113cb7f71110b6e8bc15ae11a94d
// Error
Exception occurred while adding the message: <error message>
VoiceTranscriptObject : createConversation (chaîne, interactionId, chaîne Json)
Crée un enregistrement de conversation dans la table Conversation [sys_cs_conversation] pour l’interaction spécifiée.
| Nom | Type | Description |
|---|---|---|
| interactionId | Chaîne | Sys_id de l’enregistrement d’interaction pour lequel créer un enregistrement de conversation. Cette valeur est renvoyée par la VoiceTranscriptObject : startVoiceInteraction(String JSON) méthode et stockée dans la table Interaction [interaction]. |
| <json_string> | Chaîne | Chaîne JSON des paramètres d’entrée. |
| <json_string>.agentId | Chaîne | Identificateur unique de l’agent auquel affecter l’interaction vocale. Situé dans le champ ID d’utilisateur de la table Utilisateur [sys_user]. Par défaut : aucune. Affectée au prochain agent disponible. |
| <json_string>.callerPhoneNumber | Chaîne | Numéro de téléphone de rappel de l’appelant. Il s’agit du numéro que l’agent utilise pour joindre l’appelant en cas d’interruption de l’appel. Format : conforme à la norme E.164 Par défaut : Aucun |
| <json_string>.clientSessionId | Chaîne | Identificateur unique d’un enregistrement dans un système externe utilisé pour suivre cet appel téléphonique. Ces informations relient les enregistrements entre les deux systèmes. Par défaut : Aucun |
| <json_string>.inboundId | Chaîne | Identificateur unique du fournisseur d’application pour le service vocal. Situé dans le champ ID entrant de la table Application du canal du fournisseur [sys_cs_provider_application]. Par défaut : Extraire de la messagerie instantanée |
| <json_string>.userId | Chaîne | Obligatoire. Numéro de téléphone de l’appelant qui a passé l’appel associé à la transaction vocale. Format : défini par le logiciel qui a créé le script de conversation vocale. Généralement conforme à la norme E.164. |
| Type | Description |
|---|---|
| Chaîne | En cas de réussite, renvoie la sys_id de l’enregistrement de conversation nouvellement créé. Situé dans la table Conversation [sys_cs_conversation]. En cas d’erreur, renvoie un message d’erreur détaillé. |
L’exemple de code suivant montre comment créer un nouvel enregistrement de conversation à l’aide de cette méthode.
var request = {
"userId": "+14089178877"
};
var response = sn_cs.VoiceTranscriptObject.createConversation("e0fc03d7b7a21110b6e8bc15ae11a96c", JSON.stringify(request));
gs.log("Conversation id: " + JSON.stringify(response));
Sortie :
// Success
{"conversationId":"28435dbcb7f71110b6e8bc15ae11a972","status":"SUCCESS"}
// Error
{"error":"Exception occurred while creating a conversation: <error message>","status":"FAILED"}
VoiceTranscriptObject : endVoiceInteraction(String interactionId, chaîne JSON)
Met fin à l’interaction vocale spécifiée. Une fois appelé, aucun message vocal supplémentaire n’est traduit et stocké pour la conversation téléphonique.
| Nom | Type | Description |
|---|---|---|
| interactionId | Chaîne | Sys_id de l’enregistrement d’interaction dont l’interaction vocale doit être interrompue. Situé dans la table Interaction [interaction]. |
| <json_string> | Chaîne JSON | Facultatif. Paramètres qui contiennent des informations supplémentaires sur les interactions vocales. |
| <json_string>.URL d’enregistrement | Chaîne | Facultatif. URL où se trouve l’enregistrement vocal d’origine. Si cette configuration lui est destinée, cette URL s’affiche dans Espace de travail d'agent. Par défaut : Aucun |
| Type | Description |
|---|---|
| Chaîne | En cas de réussite, renvoie la valeur Réussite. En cas d’erreur, renvoie un message d’erreur détaillé. |
L’exemple de code suivant montre comment mettre fin à une interaction vocale active et transmettre l’URL d’enregistrement vocal d’origine.
var request = {
"recordingURL": "https://servicenow.zoom.us/rec/QbF7XmPFHPlX1LG"
};
gs.log(sn_cs.VoiceTranscriptObject.endVoiceInteraction("1f4ed6fdb7471110b6e8bc15ae11a971", JSON.stringify(request)));
Sortie :
// Success
Success
// Error
Exception occurred while ending the interaction: <error message>
VoiceTranscriptObject : saveVoiceConversationTranscript(String voiceConversationJson)
Enregistre les données de transcription de conversation vocale de tiers dans des tables au sein d’une ServiceNow instance qui est ensuite accessible via Gestion du service client (CSM).
Ces conversations vocales sont généralement générées à l’aide d’un logiciel de fournisseur tiers. Cette méthode analyse le JSON transmis et enregistre les données dans les tables Conversation [sys_cs_conversation], Message de conversation [sys_cs_message] et Message de conversation de la transcription vocale [sys_cs_message_voice_transcript] au sein de l’instance ServiceNow . CSM accède aux informations de ces tables pour afficher les transcriptions des conversations vocales.
| Nom | Type | Description |
|---|---|---|
| voiceConversationJson | Chaîne | JSON qui représente la conversation vocale à stocker. Ce JSON est envoyé par un autre module d’extension ServiceNow , tel qu’OpenFrame. Des fournisseurs tiers, tels qu’Amazon, envoient le JSON au module d’extension. Le module d’extension associé analyse la conversation vocale et envoie le JSON au format requis à Agent virtuel. Par exemple, voici un exemple de conversation Amazon Connect : |
| Type | Description |
|---|---|
| Chaîne | Résultats de l’appel de méthode. Résultats de retour possibles :
|
Cet exemple montre comment appeler la méthode saveVoiceConversationTranscript() pour enregistrer une transcription Amazon Connect .
var voiceConversationJson = "{\n" +
" \"interactionId\":\"e67a6c30c7233010967a34c91dc26068\",\n" +
" \"source\":\"AmazonConnect\",\n" +
" \"conversationStarted\":\"2021-08-06 15:07:51\",\n" +
" \"transcript\":[\n" +
" {\n" +
" \"isEvent\":\"False\",\n" +
" \"isInternalMessage\":\"False\",\n" +
" \"beginOffsetMillis\":2650,\n" +
" \"content\":\"This is John. How can I help you? Yeah,\",\n" +
" \"endOffsetMillis\":9380,\n" +
" \"id\":\"954c4edc-31a8-48b0-8f6e-7fa0c4ca00a8\",\n" +
" \"participantId\":\"AGENT\",\n" +
" \"sentiment\":\"NEUTRAL\",\n" +
" \"loudnessScore\":\"null,null\",\n" +
" \"attributes\": [{\n" +
" \"key\":\"key1\",\n" +
" \"value\":\"value1\"\n" +
" },{\n" +
" \"key\":\"key2\",\n" +
" \"value\":\"value2\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"isEvent\":\"False\",\n" +
" \"isInternalMessage\":\"False\",\n" +
" \"beginOffsetMillis\":9120,\n" +
" \"content\":\"Uh, yes, John. I'm a little frustrated right now.\",\n" +
" \"endOffsetMillis\":22900,\n" +
" \"id\":\"18bcf19c-4a9b-4af1-9bd7-7bfb5ba53b9f\",\n" +
" \"participantId\":\"CUSTOMER\",\n" +
" \"sentiment\":\"NEGATIVE\",\n" +
" \"loudnessScore\":\"null,null\",\n" +
" \"attributes\": [{\n" +
" \"key\":\"key1\",\n" +
" \"value\":\"value1\"\n" +
" },{\n" +
" \"key\":\"key2\",\n" +
" \"value\":\"value2\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"isEvent\":\"False\",\n" +
" \"isInternalMessage\":\"False\",\n" +
" \"beginOffsetMillis\":9120,\n" +
" \"content\":\"I am sorry to hear that\",\n" +
" \"endOffsetMillis\":22900,\n" +
" \"id\":\"18bcf19c-4a9b-4af1-9bd7-7bfb5ba53b9f\",\n" +
" \"participantId\":\"AGENT\",\n" +
" \"sentiment\":\"NEGATIVE\",\n" +
" \"loudnessScore\":\"null,null\",\n" +
" \"attributes\": [{\n" +
" \"key\":\"key1\",\n" +
" \"value\":\"value1\"\n" +
" },{\n" +
" \"key\":\"key2\",\n" +
" \"value\":\"value2\"\n" +
" }\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"isEvent\":\"false\",\n" +
" \"isInternalMessage\":\"false\",\n" +
" \"beginOffsetMillis\":23590,\n" +
" \"content\":\"I am having problems with my computer\",\n" +
" \"endOffsetMillis\":30610,\n" +
" \"id\":\"ab09b3b6-23fd-4e41-be05-6b2b53c19059\",\n" +
" \"participantId\":\"CUSTOMER\",\n" +
" \"sentiment\":\"NEUTRAL\",\n" +
" \"loudnessScore\":\"null,null,null,null\",\n" +
" \"attributes\": [\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"isEvent\":\"True\",\n" +
" \"isInternalMessage\":\"True\",\n" +
" \"beginOffsetMillis\":23590,\n" +
" \"content\":\"Agent asked for help in chat\",\n" +
" \"endOffsetMillis\":30610,\n" +
" \"id\":\"ab09b3b6-23fd-4e41-be05-6b2b53c19059\",\n" +
" \"participantId\":\"CUSTOMER\",\n" +
" \"sentiment\":\"NEUTRAL\",\n" +
" \"loudnessScore\":\"null,null,null,null\",\n" +
" \"attributes\": [\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}\n";
var result = sn_cs.VoiceTranscriptObject.saveVoiceConversationTranscript(voiceConversationJson);
gs.log(result);
Sortie :
Voice conversation transcript has been successfully saved. Conversation id: 9c573169c611228700193229fff72400
VoiceTranscriptObject : startVoiceInteraction(String JSON)
Crée un enregistrement d’interaction vocale dans la table Interaction [interaction].
Vous devez créer cet enregistrement avant d’essayer d’enregistrer des messages vocaux transcrits. Vous pouvez également utiliser cette méthode pour affecter un appel à un agent spécifique en transmettant l’ID d’utilisateur spécifique à l’infrarouge.
| Nom | Type | Description |
|---|---|---|
| <json_string> | Chaîne | Chaîne JSON des paramètres d’entrée. |
| <json_string>.agentId | Chaîne | Identificateur unique de l’agent auquel affecter l’interaction vocale. Situé dans le champ ID d’utilisateur de la table Utilisateur [sys_user]. Par défaut : aucune. Affectée au prochain agent disponible. |
| <json_string>.callerPhoneNumber | Chaîne | Numéro de téléphone de rappel de l’appelant. Il s’agit du numéro que l’agent utilise pour joindre l’appelant en cas d’interruption de l’appel. Format : conforme à la norme E.164 Par défaut : Aucun |
| <json_string>.clientSessionId | Chaîne | Identificateur unique d’un enregistrement dans un système externe utilisé pour suivre cet appel téléphonique. Ces informations relient les enregistrements entre les deux systèmes. Par défaut : Aucun |
| <json_string>.inboundId | Chaîne | Identificateur unique du fournisseur d’application pour le service vocal. Situé dans le champ ID entrant de la table Application du canal du fournisseur [sys_cs_provider_application]. Par défaut : Extraire de la messagerie instantanée |
| <json_string>.userId | Chaîne | Obligatoire. Numéro de téléphone de l’appelant qui a passé l’appel associé à la transaction vocale. Format : défini par le logiciel qui a créé le script de conversation vocale. Généralement conforme à la norme E.164. |
| Type | Description |
|---|---|
| Chaîne | Résultats de l’appel de méthode. Résultats de retour possibles :
|
L’exemple de code suivant montre comment créer un enregistrement d’interaction vocale.
var request = {
"userId": "+14089178877",
"callerPhoneNumber": "+14089178878",
"clientSessionId": "f8453abb-a33d-45b7-bf01-52b7a821e99z"
};
var response = sn_cs.VoiceTranscriptObject.startVoiceInteraction(JSON.stringify(request));
gs.log(JSON.stringify(response));
Sortie :
// Success
{"interactionId":"ea01113cb7f71110b6e8bc15ae11a950","status":"SUCCESS"}
// Error
{"error":"Exception occurred while starting the interaction: <error message>","status":"FAILED"}