# Intégration avec des API tierces

Vous pouvez créer des bots qui interagissent avec d’autres ressources via une API. Par exemple, les bots peuvent répondre à des requêtes en vérifiant s’il est possible de créer un rendez-vous à une certaine date, ou trouver un produit dans une boutique en ligne.

## Comment gérer une API tierce à l’exemple de DaData

Prenons les conseils d’API de [https://dadata.ru/api/suggest/address ](https://dadata.ru/api/suggest/address)comme exemple

{% hint style="info" %}
Lisez attentivement la documentation des API tierces
{% endhint %}

Ouvrez votre projet dans Salebot et ouvrez les paramètres avancés dans les réglages d’un bloc ; là, vous devez changer le type de requête en POST-json.

Dans le champ « **URL de la requête** » saisissez l’URL suivante : h<ttps://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address>

Dans le champ « **En-tête de la requête** » saisissez l’en-tête au format JSON :

{ "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + token }

Dans le champ «**Paramètres JSON** » insérez dans la requête elle-même - { "query": "#{CurrencyType}" }

Pour obtenir les résultats, vous devrez également remplir l’onglet « **Valeurs stockées** ».

Un exemple de la requête est ci-dessous :

![](https://lh3.googleusercontent.com/QV4ldVY9n1AFFCr2jn1NQU_hZe7Iug-Xh5d4KLWtAZNQEyQ9WPLu1mV7mPcFjfjAKaPGO2Wi148J4AAF3kmU0wmhLYwBy6LgDXbFRgteh0Nrtu29LhqSgTg6d14Ts8pvanwWUJQAVTUThYp6Lg)

### Comment enregistrer des valeurs à partir de variables

Tout le monde ne comprend pas cela immédiatement, jusqu’à ce qu’on essaie de le faire soi-même.

Pour commencer, saisissez #{custom\_answer} dans le champ de réponse. (La variable #{custom\_answer} contient la réponse reçue du serveur mentionnée dans le champ « URL pour une réponse du serveur »)

Lancez le bloc avec la requête pour envoyer la requête et obtenir une réponse. Vous devez analyser la réponse et configurer l’accès aux variables qu’elle contient. Pour cela, vous devez travailler avec l’onglet « Valeurs stockées ».

Regardons un exemple pour mieux comprendre le processus.

À la suite de notre requête #{custom\_answer}, une réponse du format suivant est arrivée :

`{"suggestions": [{"value": "Livre sterling", "unrestricted_value": "Livre sterling", "data": {"code": "826", "strcode": "GBP", "name": "Livre sterling", "country": "Le Royaume-Uni"}}]}`

Maintenant, écrivons dans le champ « Valeurs stockées » notre VALEUR->VARIABLE

`suggestions|0|value->CurrencyType;` \
`suggestions|0|data|code->CurrencyDigCode;` \
`suggestions|0|data|strcode->CurrencyStrCode;` \
`suggestions|0|data|country->CurrencyCountry`

**suggestions** - la clé du tableau \[{"value": "Livre sterling", "unrestricted\_value": "Livre sterling", "data": {"code": "826", "strcode": "GBP", "name": "Livre sterling", "country": "Le Royaume-Uni"}}]

**suggestions|0** - la clé du premier élément du tableau {"value": "Livre sterling", "unrestricted\_value": "Livre sterling", "data": {"code": "826", "strcode": "GBP", "name": "Livre sterling", "country": "Le Royaume-Uni"}}

**suggestions|0|value** - la clé de la valeur « Livre sterling »

La clé la plus longue dans ce JSON :

**suggestions|0|data|strcode** - la clé de la valeur « GBP »

{% hint style="success" %}
Les clés sont séparées par une barre verticale (|). S’il y a un tableau dans le JSON, alors l’accès à son élément est numéroté, en commençant par le numéro 0, et il est également écrit avec la barre verticale.
{% endhint %}

{% hint style="info" %}
Il est nécessaire de répéter tout l’imbrication. Pour plus de confort, vous pouvez visualiser le JSON dans une application JSON-viewer.
{% endhint %}

Les niveaux d’imbrication sont séparés par des barres verticales. Vous devez donc lister toutes les clés séparées par la barre pour accéder à la valeur.

{% hint style="info" %}
S’il y a un tableau dans le JSON, alors au lieu de la clé, vous devez indiquer le numéro de l’élément en commençant par 0.
{% endhint %}

Séparez les phrases d’obtention des variables par le symbole point-virgule (;). Les phrases se composent du lien vers les données dans la réponse et du nom de la variable dans laquelle les enregistrer, séparés par les symboles -> (tiret + chevron).

La requête de recherche est, en quelque sorte, un chemin dans le JSON vers la valeur recherchée.

### Développer une API pour les bots

Pour développer une API, vous aurez besoin d’un hébergement sur lequel elle sera basée. Si vous n’en avez pas ou si vous n’êtes pas un as de la programmation, vous pouvez nous contacter et nous développerons l’API pour votre bot et la baserons sur la nôtre. L’hébergement lui-même est gratuit, vous ne paierez que le développement.

#### Mais pour l’instant, un peu de théorie.

Le bot prend en charge les **GET** et **POST** requêtes, ce sont les principaux types utilisés dans la plupart des API publiques.

**GET** est une requête qui se produit lors d’un clic sur le lien ou à l’ouverture du lien dans le navigateur. Les paramètres d’une telle requête sont transmis aux URL-requests.

La syntaxe des paramètres transmis : après l’URL, il y a un point d’interrogation (?) puis chaque paramètre est séparé par une esperluette (&). Un paramètre se compose du nom et de sa valeur après le signe égal (=). Un exemple d’URL avec un paramètre :

![](https://lh6.googleusercontent.com/c4xJMMuFKVsFJW_3nDTzUmhvejIUtIKsg-kEA8_PT05vlmmAfDgritAtxwh_5sq3-YwOuy8dw4LVYbesWa4Yy-QjUx3gIbF-54_omadX1SFFaa8K6HirvD-qycd4D6tjSBpkRLAB)

Ici, vous pouvez voir qu’un paramètre nommé « search\_query » est partagé et que sa valeur est « queen live aid ». Le « + » ici correspond à l’espace entre les mots ; lorsque vous travaillez avec le logiciel d’édition, vous pouvez simplement laisser les espaces — le bot les remplacera lui-même.

**POST** est un type de requête qui est généralement envoyé lors du remplissage d’un formulaire sur un site web. La requête transmet les paramètres dans le corps ; bien sûr, ils peuvent être partagés de la même manière que GET, mais cela est rarement fait ainsi. Les paramètres dans le corps peuvent être au format JSON ou sous forme clé-valeur. En tant que clé-valeur, les paramètres partagent des formulaires ; le format JSON est celui qui est le plus souvent utilisé pour les API.

**En-tête de la requête.** Chaque requête peut avoir un en-tête/titre ajouté. Le format des données partagées et les clés d’accès y sont le plus souvent écrits. En général, nous laissons cet onglet vide, mais il est parfois nécessaire d’y mettre le jeton API ou le type de requête « Content-type » : « application/json » dans de rares cas.

**JSON** - (JavaScript Object Notation) est un format de fichier standard ouvert et un format d’échange de données qui utilise un texte lisible par l’homme pour stocker et transmettre des objets de données composés de paires attribut-valeur et de tableaux. Pour travailler avec l’API dans les bots, vous devez connaître ce format, tout est basé dessus.

Avant de continuer, lisez les articles suivants :

[https://www.json.org/json-en.html ](<https://www.json.org/json-en.html >)\
<https://developer.mozilla.org/en-US/docs/learn/javascript/objects/json>

Et essayez également de créer votre propre fichier JSON sur ce site :

<https://jsoneditoronline.org>

#### Pratique

Les blocs et les conditions peuvent répondre à des requêtes. Les requêtes de condition sont créées pour comprendre sur le site si le dialogue peut suivre un certain chemin ou non. La requête dans ce cas se produit à chaque fois que la condition du chemin est vérifiée. Les requêtes des blocs, au contraire, ne s’exécutent que lorsque l’entrée dans le bloc a lieu.

Avant de créer une requête, vous devez choisir son type :

![](https://lh5.googleusercontent.com/jDLVxBLwNSrmSb9t6LTuwuuifA3X-U9PNhLi7YvCrLj36uyDjiP-FymTpUXg1fhSewb63UslJbHhndLsefusieLdYSe4oNWMBGWuceHWWNg5VrRddIHXbGVwqhDMFFUR5Xk4YZLYXfM2hcNP9w)

POST-data et POST-json se distinguent par la méthode de transfert des paramètres, comme mentionné ci-dessus (format JSON ou clé-valeur). Si vous choisissez JSON, alors les paramètres peuvent être transmis uniquement dans la requête. Un champ supplémentaire s’ouvre pour le post : paramètres POST JSON. **Important !** Les paramètres doivent être écrits uniquement au format JSON, le bot ne fonctionne que de cette manière.

La réponse du serveur peut être analysée et enregistrée dans les variables.

{% hint style="info" %}
Vous pouvez analyser la réponse seulement si elle est au format JSON.
{% endhint %}

Les variables enregistrées sont inscrites dans la dernière soumission non remplie ; si la soumission est transmise via un bloc rouge, les variables sont annulées. Donc, si vous devez enregistrer les données, vous devez transmettre les variables via le bloc jaune.

Au fait, vous pouvez voir ce que le bot a inscrit dans les variables dans la section Leads :

![](https://lh3.googleusercontent.com/e6mzwKUgxl22YqWNmN3HI0afQKM8gcU2OR_E_7Q3NSEzx0n45QLGXI4_UsaWaK52z7-QnULWmfSqCeZhfStALhung9LpFoK2i9EGhNccUcgo-E-7ONrkb7Aj2GEzd0DMDTxLsviV)

### Transfert de données non sous forme de ligne

Par défaut, la valeur de la variable arrive au format #{} mais ensuite elle arrive sous forme de ligne. Pour que la variable soit transmise sous forme de nombre, vous devez désactiver la vérification du format des paramètres post-json.

![](https://lh4.googleusercontent.com/KDDSAYd7NeXu0c7jL45ktnPPeWy7G_YJS-xrf1jvAXf1aKYKGh781E1oGmnS8fw0PbpynqG0lXyqZwK_RfuCC3ezal4-Iu0lo7y5zsNQUT6i21J4C2hb9xw6DF30wReKLorcLliS)

Ensuite, vous pouvez simplement mentionner le nom de la variable, comme {"key": #{variable\_name}}, variable\_name est la variable, donc sans utiliser de crochets.

{% hint style="warning" %}
Après avoir configuré les paramètres, il est recommandé de réactiver la vérification.
{% endhint %}


---

# 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.mavibot.ai/doc/fr/integrations/api/request.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.
