VoiceTranscriptObject : inclus dans l’étendue
L’API scriptable VoiceTranscriptObject offre la possibilité d’enregistrer des données de transcription de conversation vocale tierce dans une table au sein d’une ServiceNow instance.
Lors de l’appel de 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 (chaîne interactionId, chaîne Json)
Ajoute les messages spécifiés à l’enregistrement de transaction vocale spécifié.
Vous pouvez appeler ce point de terminaison plusieurs fois lors de 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 classé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(chaîne 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>.content | 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 la colonne 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 ne s’affichent 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 sans que l’appelant le sache et offre des conseils à un agent. L’appelant n’entend ni ne voit ces messages, mais l’agent les entend. Valeurs valides :
Valeur par défaut : false |
| <json_string>.loudnessScore | Numéro | Mesure du niveau sonore d’un client ou d’un agent lors d’un appel.
Contact Lens affiche une analyse de la conversation qui montre où ils peuvent parler fort et avoir un sentiment négatif. Valeur par défaut : Null |
| <json_string>.ID participante | 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 :
Valeur par défaut : Null |
| Type | Description |
|---|---|
| Chaîne | Message qui décrit les résultats de l’appel. |
| Chaîne | En cas de réussite, sys_id de l’enregistrement de 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(String interactionId, String 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 à partir duquel créer un enregistrement de conversation. Cette valeur est renvoyée par la VoiceTranscriptObject : startVoiceInteraction(chaîne 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 : aucun. Affecté 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 effectué 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 l’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 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, String 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 fonction est configuré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 tierce dans des tables au sein d’une ServiceNow instance qui est ensuite accessible via Gestion du service clientèle (CSM).
Ces conversations vocales sont généralement générées à l’aide de logiciels de fournisseurs tiers. Cette méthode analyse le fichier 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 fichier JSON est envoyé par un autre module d’extension ServiceNow , tel qu’OpenFrame. Les 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(chaîne 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’IDd’utilisateur spécifique ir .
| 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 : aucun. Affecté 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 effectué 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"}