# Entendiendo el concepto detrás de AIML

> AIML o Artificial Intelligence Markup Language es un lenguaje basado en XML que se usa para crear chatbots (IA), y siempre se guarda con la extensión (.aiml).

Por Shodipo Ayomide, publicado el 8 dic 2017. Versión web: https://blog.shodipoayomide.com/es/understanding-the-concept-behind-aiml

![](https://res.cloudinary.com/developerayo/image/upload/v1551555821/aiml.png)

## ¿Qué es AIML?

AIML o Artificial Intelligence Markup Language (lenguaje de marcado de inteligencia artificial) es un lenguaje basado en XML que se usa para crear chatbots (IA), y siempre se guarda con la extensión (.aiml).

La etiqueta que siempre se usa en AIML para especificar una nueva función es la etiqueta `category`, que tiene otras dos etiquetas dentro, la etiqueta `pattern` y la etiqueta `template`. Dentro de la etiqueta template también podemos tener otras etiquetas integradas “Depende del tipo de BOT que estés construyendo”, por ejemplo `set`, `br/`, `srai`…etc

Pero fíjate en algo, igual que en HTML o en cualquier otro lenguaje de programación o de scripting, incluso los lenguajes de marcado tienen una etiqueta de cierre, y aquí en AIML no hay mucha diferencia, las etiquetas de cierre son `/category`, `/template`, `/srai>`, `/set`…etc

## Ejemplo

```HTML
<category><pattern>WHO IS ABRAHAM LINCOLN</pattern>

<template>was a great President of the United States, during the American Civil War.<br/>

</template>

</category>
```

Entonces, cuando el usuario escribe esto o algo muy parecido, el bot responderá a la entrada

“WHO IS ABRAHAM LINCOLN” con la respuesta “was a great President of the United States, during the American Civil War.”.

Ahora vamos a crear un bot sencillo usando AIML

```html
<!doctype html>
<html>
  <body>
    <em>Emphasized text</em><br />
    <strong>Strong text</strong><br />
    <code>A piece of computer code</code><br />
    <samp>Sample output from a computer program</samp><br />
    <kbd>Keyboard input</kbd><br />
    <var>Variable</var>
  </body>
</html>
```

```AIML
<?xml version=”1.0" encoding=”UTF-8"?>

<aiml version=”1.0">

<category><pattern>Hi</pattern>

<template>Hi, I’m Oscar I was developed by Shodipo Ayomide 2017, <br/>How may I be of help</template>

</category>

<category><pattern>What are you </pattern>

<template>I said, My name is Oscar and I was developed by Shodipo Ayomide ok! </template>

</category>

<category><pattern>Why are you rude </pattern>

<template>Oh sorry, Please forgive my manners do not report me PLEASE!!! </template>

</category>

<category><pattern>ok </pattern>

<template>PLEASE!!! </template>

</category>

</aiml>
```

## Ahora expliquemos las plantillas

Una plantilla especifica la respuesta a un patrón que coincide.

**Me llamo Oscar**

Una plantilla puede usar variables como

Me dijiste que tienes `get name=”user-age”` años
lo que obtendrá la edad del usuario si está en la db.

---

¡Gracias por leer! 🔥🚀
