Saltar al contenido principal

El problema que resuelve

Cómo funciona

1. Registrar una herramienta

bot.provide(name, value) devuelve this, así que las llamadas se pueden encadenar:

2. Tiparla

ctx.tools se tipa con la interfaz DefaultTools, que está vacía hasta que la amplías (declaration merging). Declara cada herramienta una vez, junto al código que la registra, y todos los handlers la ven tipada:
Los plugins hacen lo mismo con las herramientas que registran: importar @botmesh/ai tipa ctx.tools.ai, e importar @botmesh/nlu tipa ctx.tools.nlu. En JavaScript no hay nada que declarar.

3. Usarla en cualquier handler

4. También disponible en hooks y plugins

El install(ctx) de un plugin también recibe ctx.tools, así que los plugins pueden consumir herramientas registradas en otro lugar (o registrar las suyas con ctx.bot.provide). Fuera de los handlers (una tarea programada, un webhook), léelas de bot.injectTools.

Quitar una herramienta

bot.unprovide(name) quita una herramienta y devuelve true si existía. Desenchufar un plugin no deshace sus provide(), así que hazlo en ctx.onDispose():

Múltiples herramientas

Con TypeScript, declara las tres en DefaultTools como arriba.

Siguientes pasos

  • Plugins — accede a herramientas desde un plugin
  • Scheduler — tareas programadas