WsgiChatBot

, par Bertrand Degoy

Cette application est un serveur HTTP au standard WSGI. Il est statique (restfull) : pour réaliser une conversation, ceci impose de gérer l’historique des échanges au niveau de l’application appelante. Loin d’être une contrainte, c’est au contraire une facilité permettant de gérer finement le contexte dans lequel sera analysée la question.

Tester WsgiChatBot (retour JSON)
Tester WsgiChatBot (réponse textuelle)

Routes

WsgiChatBot est un web service au standard WSGI (Web Server Gateway Interface) répondant en JSON à chaque question qui lui est posée par HTTP.

Les routes comprennent principalement :

GET /api/ Message d’accueil
GET /api/version/ Version du service
GET /api/ping Test fonctionnel. Retourne le temps d’exécution (ms) ou 0 en cas d’erreur
GET /api/themes/ Liste les thèmes (ensemble de données d’une entité) disponibles.
GET /api/details/ Liste les différents niveaux d’élaboration de la réponse.
GET /api/history/ Retourne l’historique de la conversation comprimé.
POST /api/post/ Exécute la requête passée par POST. paramètres du post : voir ci-dessous.

POST, action = ’query’

Tous les paramètres du post sont du type String.

Paramètre Description
action obligatoire ’query’ : La seule action dans l’état actuel du développement.
theme obligatoire Espace de données (un répertoire sur le serveur).
prompt obligatoire La requête de l’utilisateur
detail option Niveau de détail de la réponse (voir la route ’details’).
history option Contexte (ou historique) dans lequel la question est analysée.
language option Langage imposé pour la réponse.

La réponse au format JSON est un tableau de trois éléments :
 response : une chaîne au format MarkDown,
 history : une chaîne au format JSON,
 ws_error : une simple chaîne décrivant une éventuelle erreur.

Exemple d’appel (PHP)

  1. $data = array(
  2.         'action' => 'query',
  3.         'theme' => $theme,           // Theme du chat
  4.         'prompt' => $prompt,   // Qu'est-ce que OAuthSD ?
  5.         'detail' => 'Normal',
  6.         'history' => $history,
  7.         'language' => "Français"
  8.     );
  9.  
  10.     $h = curl_init("localhost:5002/api/post");  # local
  11.    curl_setopt($h, CURLOPT_POST, 1);
  12.     curl_setopt($h, CURLOPT_POSTFIELDS, http_build_query($data));
  13.     curl_setopt($h, CURLOPT_RETURNTRANSFER, 1);
  14.     curl_setopt($h, CURLOPT_TIMEOUT, 100);    // 100 secondes
  15.  
  16.     $result = curl_exec($h);

Télécharger

Accès réservé : connectez vous pour en savoir plus.