Boîte de dialogue API

Interrogation du moteur de dialogues

Le moteur de dialogues peut être interrogé par des services web. Selon l'usage, il faut utiliser soit un service web en mode synchrone, soit un service web en mode asynchrone :

  • Une conversation en mode synchrone implique que le moteur de dialogues ne donnera une réponse que lorsqu'il est sollicité par une question d'un utilisateur. Dans le diagramme de séquence ci-dessous, les requêtes de dialogue talk sont synchrones et le résultat contient la réponse du bot ;

  • Une conversation en mode asynchrone implique que le moteur de dialogues peut envoyer des messages sans avoir été sollicité. Dans le diagramme de séquence ci-dessous, les requêtes de dialogue feedback sont asynchrones et aucun retour n'est attendu.

Service web conversation asynchrone

Vous pouvez exploiter l'interface swagger disponible depuis la page des Préférences > Api > Accès aux APIs. Cliquez sur le lien disponible puis cliquez sur Chat.

Ce service web est en mode REST, accessible via HTTP GET ou HTTP POST.

Paramètres

Les paramètres des requêtes de ce service web sont les suivants :

Requêtes Chat

Récupérer un ID de contexte de dialogue

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/context/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**space**=Defaut&**language**=French&alreadyCame=true&clientId=jmanier&os=Linux&browser=Chrome&disableLanguageDetection=true&contextType=Web&qualificationMode=true&solutionUsed=ASSISTANT&pureLiveChat=false"

Réponse body :

console.log('46064f7a-d026-4bf3-ab5d-69a9303a81e7');

Récupérer la liste des boîtes de dialogue précédentes associées à un utilisateur

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/dialog/previous/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**solutionUsed**=ASSISTANT&**clientId**=jmanier"

Réponse body :

{"values":{"previousDialogs":[]},"type":"getPreviousDialogsResponse"}

Envoyer une erreur

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/error/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "contextUuid=**e6a5ae08-703c-4ddd-9d57-fa07a8908f0d**&**solutionUsed**=ASSISTANT&**error**=js%20error&**message**=test%20error&browser=Chrome&os=Linux&stackTrace=stacktrace_value&jsCreation=jscreation_value&userUrl=doyoudreamup.com"

Réponse body :

{}

Envoyer un avis de satisfaction

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/feedback/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUUID**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**feedBack**=positive"

Envoyer satisfaction sans commentaire

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/feedback/comment/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUUID**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**comment**=feedback_comment"

Envoyer un avis d'insatisfaction avec la raison sélectionnée

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/feedback/insatisfaction/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUUID**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**choiceKey**=choiceKey_value

Enregistrer la demande RGPD

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/gdpr/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**clientId**=jmanier&**object**=Get&**mail**=jmanier%40dydu.ai&language=French"

Réponse body :

{}

Récupérer un historique de conversation

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/history/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUuid**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**dialog**=ddce9eb2-4015-4c68-bf4c-e59f97096f81"

Réponse body :

dydu_showDialogHistory();

Vérifier s'il y a une nouvelle réponse de l'utilisateur (Mode Livechat)

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/poll/last/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUuid**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**language**=French&**space**=Defaut&**lastPoll**=12"

Réponse body :

dydu_notification('{"code":"RGlhbG9nRmluaXNoZWQ=","context":null,"serverTime":1542034663648,"text":"TGEgY29udmVyc2F0aW9uIGVzdCB0ZXJtaW7DqWU="}');
DYDUServlet.closeDialog(true, false);

Effectuer une recherche dans les connaissances d'un bot :

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/search/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "language=French&search=search_value&searchInPersonalities=true"

Réponse body :

[]

Envoyer une réponse à un questionnaire

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/survey/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUuid**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**fields**=test_field&interactionSurveyAnswer=true"

Réponse body :

Récupérer la configuration d'un questionnaire

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/survey/configuration/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUuid**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**language**=French&**surveyId**=20f4ab33-eb28-47d7-850c-60e5c6a352b3"

Réponse body :

{"values":{"surveyId":"MjBmNGFiMzMtZWIyOC00N2Q3LTg1MGMtNjBlNWM2YTM1MmIz","name":"TmV3IHN1cnZleQ==","contextId":"ZTZhNWFlMDgtNzAzYy00ZGRkLTlkNTctZmEwN2E4OTA4ZjBk"},"type":"surveyConfigurationResponse"}

Envoyer une interaction sans spécification de contexte (initialiser un nouveau contexte)

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/talk/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**userInput**=test&**space**=Defaut&**language**=French&userUrl=doyoudreamup.com&alreadyCame=true&clientId=jmanier&os=Linux&browser=Chrome&enableLanguageDectection=true&contextType=Web&qualificationMode=true&solutionUsed=ASSISTANT&pureLiveChat=false&extraParameters=extra_value&doNotRegisterInteraction=true&competency=marketing&timestamp=24&templateFormats=expert"

Réponse body :

{"values":{"knowledgeId":168168,"typeResponse":"RE1VbmRlcnN0b29kUXVlc3Rpb24=","contextId":"NzlkNTBlOWYtNmU1ZC00MzBiLWE1ODUtZmIyYWFlZDNiMWJh","serverTime":1542038040852,"language":"ZnI=","botId":"ZWYwN2EzN2EtMmYzOC00NGYxLWEyYzQtZDJlNzFlN2M2ZDIw","text":"UXVlIHNvdWhhaXRlei12b3VzIHNhdm9pcsKgPzxici8+PGJyLz48YSBocmVmPSIjIiBjbGFzcz0icmV3b3JkIiBvbmNsaWNrPSJ0cnkge3Jld29yZCgnQ29tbWVudCB0ZXN0ZXIgbFwnYXNzaXN0YW50ID8nLHsmcXVvdDtsYXN0Y29uZGl0aW9uJnF1b3Q7OjE2ODg4MCwmcXVvdDt0eXBlJnF1b3Q7OiZxdW90O3JlZGlyZWN0aW9uX2tub3dsZWRnZSZxdW90O30pOyByZXR1cm4gZmFsc2U7fWNhdGNoKGUpe30iPkNvbW1lbnQgdGVzdGVyIGwnYXNzaXN0YW50wqA\/PC9hPjxici8+PGEgaHJlZj0iIyIgY2xhc3M9InJld29yZCIgb25jbGljaz0idHJ5IHtyZXdvcmQoJ0NvbW1lbnQgdXRpbGlzZXIgbGVzIGNvbnZlcnNhdGlvbnMgdGVzdHMgPycseyZxdW90O2xhc3Rjb25kaXRpb24mcXVvdDs6MTY4ODgwLCZxdW90O3R5cGUmcXVvdDs6JnF1b3Q7cmVkaXJlY3Rpb25fa25vd2xlZGdlJnF1b3Q7fSk7IHJldHVybiBmYWxzZTt9Y2F0Y2goZSl7fSI+Q29tbWVudCB1dGlsaXNlciBsZXMgY29udmVyc2F0aW9ucyB0ZXN0c8KgPzwvYT48YnIvPjxhIGhyZWY9IiMiIGNsYXNzPSJyZXdvcmQiIG9uY2xpY2s9InRyeSB7cmV3b3JkKCdDb21tZW50IHRlc3RlciBsZXMgdmFyaWFibGVzIGRlIGNvbnRleHRlID8nLHsmcXVvdDtsYXN0Y29uZGl0aW9uJnF1b3Q7OjE2ODg4MCwmcXVvdDt0eXBlJnF1b3Q7OiZxdW90O3JlZGlyZWN0aW9uX2tub3dsZWRnZSZxdW90O30pOyByZXR1cm4gZmFsc2U7fWNhdGNoKGUpe30iPkNvbW1lbnQgdGVzdGVyIGxlcyB2YXJpYWJsZXMgZGUgY29udGV4dGXCoD88L2E+","hasProfilePicture":false,"startLivechat":false,"keepPopinMinimized":false,"human":false,"askFeedback":true},"type":"talkResponse"}

Envoyer une interaction avec un contexte spécifique

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/talk/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**/**e6a5ae08-703c-4ddd-9d57-fa07a8908f0d**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**userInput**=test&**space**=Defaut&**language**=French&userUrl=doyoudreamup.com&alreadyCame=true&clientId=jmanier&os=Linux&browser=Chrome&enableLanguageDectection=true&contextType=Web&qualificationMode=true&solutionUsed=ASSISTANT&pureLiveChat=false&extraParameters=extra_value&doNotRegisterInteraction=true&competency=marketing&timestamp=24&templateFormats=expert"

Réponse body :

{"values":{"knowledgeId":168168,"typeResponse":"RE1VbmRlcnN0b29kUXVlc3Rpb24=","contextId":"MzBiYTMyMjQtYzM0Mi00OTQ0LTg2NDAtMjRmODEwZGIyM2Iw","serverTime":1542039200149,"language":"ZnI=","botId":"ZWYwN2EzN2EtMmYzOC00NGYxLWEyYzQtZDJlNzFlN2M2ZDIw","text":"UXVlIHNvdWhhaXRlei12b3VzIHNhdm9pcsKgPzxici8+PGJyLz48YSBocmVmPSIjIiBjbGFzcz0icmV3b3JkIiBvbmNsaWNrPSJ0cnkge3Jld29yZCgnQ29tbWVudCB0ZXN0ZXIgbFwnYXNzaXN0YW50ID8nLHsmcXVvdDtsYXN0Y29uZGl0aW9uJnF1b3Q7OjE2ODg4MCwmcXVvdDt0eXBlJnF1b3Q7OiZxdW90O3JlZGlyZWN0aW9uX2tub3dsZWRnZSZxdW90O30pOyByZXR1cm4gZmFsc2U7fWNhdGNoKGUpe30iPkNvbW1lbnQgdGVzdGVyIGwnYXNzaXN0YW50wqA\/PC9hPjxici8+PGEgaHJlZj0iIyIgY2xhc3M9InJld29yZCIgb25jbGljaz0idHJ5IHtyZXdvcmQoJ0NvbW1lbnQgdXRpbGlzZXIgbGVzIGNvbnZlcnNhdGlvbnMgdGVzdHMgPycseyZxdW90O2xhc3Rjb25kaXRpb24mcXVvdDs6MTY4ODgwLCZxdW90O3R5cGUmcXVvdDs6JnF1b3Q7cmVkaXJlY3Rpb25fa25vd2xlZGdlJnF1b3Q7fSk7IHJldHVybiBmYWxzZTt9Y2F0Y2goZSl7fSI+Q29tbWVudCB1dGlsaXNlciBsZXMgY29udmVyc2F0aW9ucyB0ZXN0c8KgPzwvYT48YnIvPjxhIGhyZWY9IiMiIGNsYXNzPSJyZXdvcmQiIG9uY2xpY2s9InRyeSB7cmV3b3JkKCdDb21tZW50IHRlc3RlciBsZXMgdmFyaWFibGVzIGRlIGNvbnRleHRlID8nLHsmcXVvdDtsYXN0Y29uZGl0aW9uJnF1b3Q7OjE2ODg4MCwmcXVvdDt0eXBlJnF1b3Q7OiZxdW90O3JlZGlyZWN0aW9uX2tub3dsZWRnZSZxdW90O30pOyByZXR1cm4gZmFsc2U7fWNhdGNoKGUpe30iPkNvbW1lbnQgdGVzdGVyIGxlcyB2YXJpYWJsZXMgZGUgY29udGV4dGXCoD88L2E+","hasProfilePicture":false,"startLivechat":false,"keepPopinMinimized":false,"human":false,"askFeedback":true},"type":"talkResponse"}

Récupérer les top connaissances utilisées

Remarque : vous pouvez également insérer le tagID à la place du nom de la balise (voir les détails dans le tableau des paramètres).

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/topknowledge/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**solutionUsed**=ASSISTANT&**language**=French&**space**=Defaut&**period**=period_value&**tag**=Tag_value&includeTagChildren=true&qualificationMode=true&maxKnowledge=5"

Réponse body :

{"values":{"knowledgeArticles":"W3sicmV3b3JkIjoiQ29tbWVudCBjcsOpZXIgdW5lIGNvbm5haXNzYW5jZSA\/IiwicGF0aFRhZyI6IkNvbm5haXNzYW5jZXNcLzAxLiBDcsOpYXRpb24gZGUgY29ubmFpc3NhbmNlcyIsInVzYWdlIjotMS4wLCJpbnB1dENvbmRpdGlvbklkIjoyOTIxMX0seyJyZXdvcmQiOiJDb21tZW50IGNyw6llciB1biB0YWJsZWF1ID8iLCJwYXRoVGFnIjoiQ29ubmFpc3NhbmNlc1wvMDQuIFLDqXBvbnNlIMOgIHVuZSBxdWVzdGlvbiIsInVzYWdlIjotMS4wLCJpbnB1dENvbmRpdGlvbklkIjozMzg3Nn0seyJyZXdvcmQiOiJDb21tZW50IGNyw6llciB1bmUgbm91dmVsbGUgY29uZmlndXJhdGlvbiBwb3VyIG1vbiBjaGF0Ym90ID8iLCJwYXRoVGFnIjoiUHLDqWbDqXJlbmNlc1wvQ29uZmlndXJhdGlvbiBjaGF0Ym94IiwidXNhZ2UiOi0xLjAsImlucHV0Q29uZGl0aW9uSWQiOjM0NjA2fSx7InJld29yZCI6Ikd1aWRlcyBpbnRlcmFjdGlmcyIsInBhdGhUYWciOiJBcHBjdWVzIiwidXNhZ2UiOjIxLjAsImlucHV0Q29uZGl0aW9uSWQiOjMxODA4OX0seyJyZXdvcmQiOiJDcsOpYXRpb24gZCd1bmUgY29ubmFpc3NhbmNlIiwicGF0aFRhZyI6IkFwcGN1ZXMiLCJ1c2FnZSI6MTQuMCwiaW5wdXRDb25kaXRpb25JZCI6MzE4MDg3fV0=","serverTime":1542040024994,"tagName":"VGFnX3ZhbHVl"},"type":"topKnowledgeResponse"}

Envoyer des informations à propos du contenu que l'utilisateur tape

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/typing/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUuid**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**content**=content_value&typing=true"

Réponse body :

{}

Insérer ou supprimer une variable de contexte

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/variable/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUuid**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**name**=test&**value**=1"

Stocker une visite d'utilisateur

Requête curl :

curl -X POST "https://app1.earth.doyoudreamup.com/servlet/api/chat/welcomecall/**ef07a37a-2f38-44f1-a2c4-d2e71e7c6d20**" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" -d "**contextUuid**=e6a5ae08-703c-4ddd-9d57-fa07a8908f0d&**solutionUsed**=ASSISTANT&**language**=French&**space**=Defaut&**qualificationMode**=true"

Réponse body :

/*logged*/

Service web conversation mode synchrone

Le service web asynchrone fonctionne sur le principe des websockets.

Le protocole à utiliser dans les websockets est nommé dyduchat.

Ce mécanisme est surtout utile dans un cas où l'utilisateur discute avec un opérateur humain, car dans ce cas l'opérateur n'a pas besoin d'attendre une question de l'utilisateur pour donner une réponse. Il peut parler de manière proactive, ou envoyer plusieurs messages de suite à l'utilisateur.

Requêtes client

Le client doit envoyer ses requêtes au format JSON telles que décrites ci-dessous :

Requête talk

Le format de la requête talk est le suivant :

Toutes les valeurs des champs doivent être encodées en base64.

Les paramètres du champ paramètres sont les mêmes que ceux définis pour le web service REST à partir du mode synchrone.

Requêtes feedBack

Tout comme pour le mode synchrone, aucun retour n'est attendu pour les requêtes de feedBack.

Toutes les valeurs des champs doivent être encodées en base64.

Les valeurs des champs sont les mêmes que celles définies pour le service web REST en mode synchrone.

Requêtes du serveur

Réponse à afficher

Les requêtes envoyées par le serveur indiquent au client qu'un message a été émis par un bot automatisé ou par un opérateur humain.

Ils peuvent être envoyés sans que l'utilisateur en ait fait la demande.

Tous les paramètres à l'exception de human sont exactement les mêmes que pour le service Web REST en mode synchrone.

Le nouveau champ human indique que le message provient d'un opérateur humain s'il est true.

Notification

Les notifications permettent d'informer l'utilisateur de certains éléments sans remplacer la dernière réponse.

Ils peuvent par exemple informer l'utilisateur que l'opérateur humain n'est plus connecté.

Dernière mise à jour

Tous droits réservés @ 2023 dydu.