# Scripts serveurs

Allez dans Contenus > Connaissances > Avancé > Scripts serveurs

Ici, vous pouvez ajouter des fonctions javascript qui peuvent être utilisées lors de la configuration d'une connaissance, comme par exemple.

<figure><img src="/files/8xA1fjxV1mSg5FKNC242" alt=""><figcaption></figcaption></figure>

Dans les scripts serveurs, vous pouvez notamment ajouter des éléments permettant de récupérer des informations sur le serveur : getHostType, getHostName, getServerType.

## console

L'objet **console** permet d'alimenter les logs présents dans la page console du BMS et cela pour les différents niveaux de logs

```
function logs() {
    console.debug("un message debug");
    console.info("un message info");
    console.warn("un message warn");
    console.error("un message error");            
}
```

## callApi

Pour déclencher l'appel à une API depuis un script serveur, il faut utiliser la syntaxe suivante. Il faut pour le moment encadrer cela dans un **JSON.parse()**, mais cela ne sera plus nécessaire par la suite.

```
var result = JSON.parse(callApi.process(apiName, params));
```

avec **apiName** contenant le nom du web service défini

et **params** contenant un object JSON contenant un mapping entre les clefs utilisées par le web service et les valeurs à utiliser. Exemple de **params** ci-dessous

```
{
    'capture.latitude': latitude,
    'capture.longitude': longitude,
    'capture.zoom': '2'
}
```

## capture

Le script serveur peut lire des variables de la conversation en cours via l'objet **capture**. Par exemple pour connaître le numéro de l'appelant pour le callbot cela peut être fait via

```
function logNumero() {
    console.info('Appel reçu du numéro ' + capture.callbot_client_phone);
}
```

## dialog

L'objet **dialog** permet de récupérer de nombreuses d'informations , parmi lesquels on retrouve:&#x20;

* Le nom de l'espace de consultation en cours d'utilisation dans la conversation:

```
function logSpace() {
    var space = dialog.currentConsultationSpace();
    console.info('espace en cours ' + space);
}
```

* La langue utilisée :  **dialog.language()**

```
function getDialoglanguage() {
    var language = dialog.language();
    console.info('Language en cours ' + language);
}
```

* L'URL en cours : **dialog.userURL()**

```
function getDialogUrl() {
    var url = dialog.userURL();
    console.info('Url en cours ' + url);
}
```

* L'ID de l'utilisateur (adresse IP, ..) : **dialog.userIdentification()**

```
function getDialogId() {
    var id = dialog.userIdentification();
    console.info('ID en cours ' + id);
}
```

* Le système d'exploitation (Os) utilisé : **dialog.userOs()**

```
function getDialogOs() {
    var Os = dialog.userOs();
    console.info('Os en cours ' + Os);
}
```

* Le navigateur utilisé : **dialog.userBrowser()**

```
function getDialogBrowser() {
    var Browser = dialog.userBrowser();
    console.info('Browser en cours ' + Browser);
}
```

* Les différentes requêtes de l'utilisateur : **dialog.currentUserSentence()**

```
function userSentenceFromScript() {
   return dialog.currentUserSentence()
}
```

* La réponse du bot pour l'intéraction en cours : **dialog.currentAnswer()**

```
function getCurrentAnswer() {
    return dialog.currentAnswer();
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dydu.ai/contenus/avance/scripts-serveurs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
