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:
@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
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
DefaultTools como arriba.