ctx.ai
Use ctx.ai en RunJS para activar tareas de empleados de IA. Es útil en JSBlock, JSAction y otras interacciones donde un botón, formulario o flujo de negocio necesita enviar trabajo a un empleado de IA específico.
ctx.ai carga archivos adjuntos para tareas de IA y activa tareas. Las cargas de archivos se pueden esperar, pero la activación de una tarea no devuelve su resultado de ejecución. Después de la llamada, la tarea entra en el flujo de conversación del empleado de IA.
ctx.ai lo proporciona el plugin de IA. Si el plugin no está habilitado, o el entorno RunJS actual no ha cargado la capacidad de cliente correspondiente, ctx.ai puede no existir. Puede comprobar ctx.ai?.uploadFile, ctx.ai?.triggerTask o ctx.ai?.triggerModelTask antes de llamarlo.
Métodos
ctx.ai.uploadFile()
Carga un archivo y devuelve un objeto adjunto que se puede pasar directamente a una tarea de empleado de IA.
La carga usa el almacenamiento de archivos configurado por el plugin de IA y crea un registro en aiFiles. El objeto devuelto incluye campos como id, filename, url y source:
El Promise se rechaza cuando falla la carga. Quitar un archivo adjunto de la lista local no elimina el registro ya creado en aiFiles, igual que en la ventana de chat de IA predeterminada.
ctx.ai.triggerTask()
Activa directamente una tarea de empleado de IA.
Campos comunes de Task:
Seguir el estado de carga de la respuesta
Pase onResponseLoadingChange en las opciones de nivel superior para seguir el estado de carga de la respuesta del modelo. El callback recibe true cuando NocoBase empieza a esperar la respuesta y false cuando termina, se cancela o falla. Si el componente React ya declaró setResponseLoading mediante useState, puede escribir:
onResponseLoadingChange solo sigue la respuesta iniciada directamente por esta llamada a triggerTask(). Con autoSend: false, la tarea queda en el borrador del chat y el callback no se ejecuta. Si el usuario envía el borrador más tarde, ese envío manual no reutiliza el callback.
En un componente React de un bloque JS, esta actualizaci ón vuelve a renderizar el componente mientras permanezca montado.
Seleccionar un AI Chat Box
Defina chatBoxUid en las opciones de nivel superior de triggerTask() para activar la tarea en un bloque AI Chat Box montado, en lugar de abrir el diálogo global del empleado de IA.
El uid debe pertenecer al bloque AI Chat Box exterior que esté montado en la página actual. No coloque este valor de enrutamiento dentro de tasks. Si no se encuentra el bloque de destino, NocoBase muestra un error y no vuelve al diálogo global. Si se omite chatBoxUid, la tarea usa el diálogo global del empleado de IA.
Cargar y enviar archivos adjuntos en JSBlock
El siguiente ejemplo renderiza la carga de archivos, las instrucciones de la tarea y un botón de envío en JSBlock. Los archivos cargados se pasan al empleado de IA mediante message.attachments:
Con autoSend: false, los archivos adjuntos y las instrucciones se colocan en el borrador del chat de IA y no se envían inmediatamente.
Agregar contexto de bloques de página
message.workContext se usa actualmente para pasar bloques de página. Coloque ahí el uid de FlowModel del bloque de destino:
Si desea usar el JSBlock actual como contexto, use el uid del modelo actual:
Especificar modelo
model especifica el modelo de una sola tarea. Si se omite, se usa la configuración predeterminada del empleado de IA. Pasar null significa no especificar un modelo a nivel de tarea.
Configurar skills / tools
skillSettings especifica las skills y tools disponibles para una sola tarea. Si se omite, se usa la configuración de capacidades del empleado de IA.
Para deshabilitar explícitamente todas las skills o tools de esta tarea, pase arreglos vacíos y conserve los campos de versión:
Ejemplo:
Si aiEmployee es una cadena, NocoBase busca por coincidencia exacta de username entre los empleados de IA accesibles para el usuario actual.
ctx.ai.triggerModelTask()
Lee una tarea desde un modelo de acción de empleado de IA en la página y la activa.
Las opciones públicas de triggerModelTask() no aceptan chatBoxUid. Para seleccionar un AI Chat Box, configure chatBoxUid en la tarea predefinida de la acción de empleado de IA. triggerModelTask() seguirá reutilizando ese valor predefinido.
options.onResponseLoadingChange se comporta igual que en triggerTask(). Su ejecución depende del valor autoSend de la tarea configurada. No se ejecuta cuando la tarea usa autoSend: false.
Si el modelo de destino no existe, no tiene empleado de IA configurado, o el índice indicado no tiene tarea, no se activa ninguna tarea y se imprime una advertencia en la consola.
Notas
triggerTask()ytriggerModelTask()son fire-and-forget. No devuelven el resultado de ejecución de la tarea.uploadFile()devuelve un Promise. Espere a que termine la carga antes de activar una tarea que use el archivo adjunto.- Las cadenas de
aiEmployeesolo coinciden exactamente conAIEmployee.username. triggerModelTask()usataskIndexempezando desde0.message.workContextactualmente solo describe contexto de bloques de página.- El valor de nivel superior
triggerTask().chatBoxUiddebe hacer referencia a un bloque AI Chat Box montado en la página actual. triggerModelTask()sigue usando elchatBoxUidconfigurado en su tarea predefinida.- Los archivos adjuntos dinámicos de
triggerModelTask()se agregan a losmessage.attachmentsexistentes de la tarea predefinida sin cambiar la configuración guardada. onResponseLoadingChangesolo sigue una respuesta enviada automáticamente por la llamada actual. No sigue un mensaje que el usuario envíe manualmente después.
Relacionado
- ctx.message: Muestra avisos ligeros antes y después de activar tareas.
- ctx.render: Renderiza botones o formularios en JSBlock.
- ctx.model: Obtiene información del FlowModel actual.

