⛑️ Eventos: usando__event_emitter__
e__event_call__
em webui aberto
A arquitetura de plug -in da Nullcore não é apenas processar a entrada e produzir saída -É sobre comunicação interativa em tempo real com a interface do usuário e usuários. Para tornar suas ferramentas, funções e tubos mais dinâmicos, o Webui aberto fornece um sistema de eventos integrado por meio do__event_emitter__
e__event_call__
ajudantes.
Este guia explicaO que são eventos, Assim,Como você pode desencadeá -losdo seu código eo catálogo completo dos tipos de eventosvocê pode usar (incluindo muito mais do que apenas"input"
🌊 O que são eventos?
Eventossão notificações em tempo real ou solicitações interativas enviadas do seu código de back-end (ferramenta ou função) para a interface da web. Eles permitem atualizar o bate -papo, exibir notificações, solicitar confirmação, executar fluxos de interface do usuário e muito mais.
- Os eventos são enviados usando o
__event_emitter__
ajudante para atualizações unidirecionais, ou__event_call__
Quando você precisa de entrada do usuário ou resposta (por exemplo, confirmação, entrada, etc.).
Metáfora:
Pense em eventos como notificações push e diálogos modais que seu plug -in pode acionar, tornando a experiência de bate -papo mais rica e mais interativa.
🧰 Uso básico
Enviando um evento
Você pode desencadear um evento em qualquer lugar dentro da sua ferramenta ou funcionar chamando:
aguarde__event_emitter__
{
"tipo" "status", Assim, # Veja a lista de tipos de eventos abaixo
"dados" {
"descrição" "O processamento começou!", Assim,
"feito" Falso, Assim,
"escondido" Falso, Assim,
, Assim,
Vocênãoprecisa adicionar manualmente campos comochat_id
oumessage_id
- Estes são tratados automaticamente por Webui aberto.
Eventos interativos
Quando você precisa pausar a execução até que o usuário responda (por exemplo, confirmar/cancelar diálogos, execução de código ou entrada), use__event_call__
resultado aguarde__Event_Call__
{
"tipo" "entrada", Assim, # Ou "confirmação", "execute"
"dados" {
"título" "Por favor, digite sua senha", Assim,
"mensagem" "A senha é necessária para esta ação", Assim,
"espaço reservado" "Sua senha aqui", Assim,
, Assim,
# O resultado conterá o valor de entrada do usuário
📜 Estrutura de carga útil de eventos
Quando você emite ou chama um evento, a estrutura básica é:
{
"tipo" "Event_type", Assim, // Veja a lista completa abaixo
"dados" { // Carga útil específica do evento
Na maioria das vezes, você só define"type"
e"data"
. Abra o Webui preenche o roteamento automaticamente.
🗂 Lista completa de tipos de eventos
Abaixo está uma tabela abrangente detodos suportadostype
valoresPara eventos, juntamente com o efeito pretendido e a estrutura de dados. (Isso é baseado na análise atualizada da lógica de manuseio de eventos do Webui.
tipo | Quando usar | Estrutura de carga útil de dados (exemplos) |
---|---|---|
status | Mostre uma atualização/histórico de status para uma mensagem | {description: ..., done: bool, hidden: bool} |
chat:completion | Forneça um resultado de conclusão de bate -papo | (Custom, consulte Nullcore Internals) |
chat:message:delta , Assim,message | Anexar conteúdo à mensagem atual | {content: "text to append"} |
chat:message , Assim,replace | Substitua completamente o conteúdo atual da mensagem | {content: "replacement text"} |
chat:message:files , Assim,files | Definir ou substituir arquivos de mensagens (para uploads, saída) | {files: [...]} |
chat:title | Definir (ou atualizar) o título de conversa de bate -papo | String de tópico ou{title: ...} |
chat:tags | Atualize o conjunto de tags para um bate -papo | Array de tag ou objeto |
source , Assim,citation | Adicione uma fonte/citação ou resultado de execução de código | Para código: vejaabaixo. |
notification | Mostre uma notificação ("torrada") na interface do usuário | {type: "info" or "success" or "error" or "warning", content: "..."} |
confirmation (precisa __event_call__ | Peça confirmação (diálogo OK/Cancelar) | {title: "...", message: "..."} |
input (precisa __event_call__ | Solicite entrada simples de entrada do usuário (caixa de diálogo "Caixa de entrada") | {title: "...", message: "...", placeholder: "...", value: ...} |
execute (precisa __event_call__ | Solicitar a execução do código do lado do usuário e resultado de retorno | {code: "...javascript code..."} |
Outros/Tipos Avançados:
- Você pode definir seus próprios tipos e lidar com eles na camada da interface do usuário (ou usar os próximos mecanismos de extensão de eventos).
❗ Detalhes sobre tipos de eventos específicos
status
Mostre uma atualização de status/progresso na interface do usuário:
aguarde__event_emitter__
{
"tipo" "status", Assim,
"dados" {
"descrição" "Etapa 1/3: dados buscando dados ...", Assim,
"feito" Falso, Assim,
"escondido" Falso, Assim,
, Assim,
chat:message:delta
oumessage
Saída de streaming(Appender Text):
aguarde__event_emitter__
{
"tipo" "Chat: Mensagem: Delta", Assim, # ou simplesmente "mensagem"
"dados" {
"contente" "Texto parcial",
, Assim,
# Mais tarde, como você gera mais:
aguarde__event_emitter__
{
"tipo" "Chat: Mensagem: Delta", Assim,
"dados" {
"contente" "Próximo pedaço de resposta."
, Assim,
chat:message
oureplace
Defina (ou substitua) o conteúdo inteiro da mensagem:
aguarde__event_emitter__
{
"tipo" "Chat: mensagem", Assim, # ou "Substituir"
"dados" {
"contente" "Resposta final e completa."
, Assim,
files
ouchat:message:files
Anexe ou atualize arquivos:
aguarde__event_emitter__
{
"tipo" "Arquivos", Assim, # ou "Chat: Mensagem: Arquivos"
"dados" {
"Arquivos" [[
# Abrir objetos de arquivo webui
, Assim,
chat:title
Atualize o título do bate -papo:
aguarde__event_emitter__
{
"tipo" "Chat: título", Assim,
"dados" {
"título" "Sessão de Bot Análise de Mercado"
, Assim,
chat:tags
Atualize as tags do bate -papo:
aguarde__event_emitter__
{
"tipo" "Chat: Tags", Assim,
"dados" {
"Tags" [["financiar", Assim, "Ai", Assim, "Relatamento diário"
, Assim,
source
oucitation
(e execução de código)
Adicione uma referência/citação:
aguarde__event_emitter__
{
"tipo" "fonte", Assim, # ou "citação"
"dados" {
# Nullcore Fonte (Citation) Objeto
Para execução de código (Estado de execução do rastreamento):
aguarde__event_emitter__
{
"tipo" "fonte", Assim,
"dados" {
# Nullcore Code Source (Citation) Objeto
notification
Mostre uma notificação de brinde:
aguarde__event_emitter__
{
"tipo" "notificação", Assim,
"dados" {
"tipo" "Info", Assim, # "Sucesso", "Aviso", "Erro"
"contente" "A operação foi concluída com sucesso!"
confirmation
requer __event_call__
Mostre uma caixa de diálogo Confirmar e obter resposta do usuário:
resultado aguarde__Event_Call__
{
"tipo" "confirmação", Assim,
"dados" {
"título" "Tem certeza?", Assim,
"mensagem" "Você realmente quer prosseguir?"
seresultado # ou verifique o conteúdo do resultado
aguarde__event_emitter__{
"tipo" "notificação", Assim,
"dados" {"tipo" "sucesso", Assim, "contente" "Operação confirmada pelo usuário."
outro
aguarde__event_emitter__{
"tipo" "notificação", Assim,
"dados" {"tipo" "aviso", Assim, "contente" "Usuário cancelado."
input
requer __event_call__
Promover o usuário para entrada de texto:
resultado aguarde__Event_Call__
{
"tipo" "entrada", Assim,
"dados" {
"título" "Digite seu nome", Assim,
"mensagem" "Precisamos do seu nome prosseguir.", Assim,
"espaço reservado" "Seu nome completo"
user_inputresultado
aguarde__event_emitter__
{
"tipo" "notificação", Assim,
"dados" {"tipo" "Info", Assim, "contente" F "Você entrou:{user_input
execute
requer __event_call__
Execute o código dinamicamente do lado do usuário:
resultado aguarde__Event_Call__
{
"tipo" "executar", Assim,
"dados" {
"código" "Imprimir (40 + 2);", Assim,
aguarde__event_emitter__
{
"tipo" "notificação", Assim,
"dados" {
"tipo" "Info", Assim,
"contente" F "Código executado, resultado:{resultado
🏗�️ Quando e onde usar eventos
- De qualquer ferramenta, ou funçãoem webui aberto.
- Pararespostas de fluxo, mostre progresso, solicite dados do usuário, atualize a interface do usuário ou exiba informações/arquivos suplementares.
await __event_emitter__
é para mensagens unidirecionais (fogo e esqueça).await __event_call__
é para quando você precisa de uma resposta do usuário (entrada, execução, confirmação).
💡 Dicas e notas avançadas
- Vários tipos por mensagem:Você pode emitir vários eventos de tipos diferentes para uma mensagem - por exemplo, mostrar
status
Atualizações e depois transmitem comchat:message:delta
, então completo com umchat:message
- Tipos de eventos personalizados:Embora a lista acima seja o padrão, você pode usar seus próprios tipos e detectá -los/lidar com o código da interface do usuário personalizado.
- Extensibilidade:O sistema de eventos foi projetado para evoluir - sempre verifique oAbra a documentação da Webuipara a lista mais atual e uso avançado.
🧐 FAQ
P: Como faço para acionar uma notificação para o usuário?
Usarnotification
tipo:
aguarde__event_emitter__{
"tipo" "notificação", Assim,
"dados" {"tipo" "sucesso", Assim, "contente" "Tarefa completa"
P: Como solicito a entrada do usuário e receba a resposta deles?
Usar:
resposta aguarde__Event_Call__{
"tipo" "entrada", Assim,
"dados" {
"título" "Qual o seu nome?", Assim,
"mensagem" "Por favor, digite seu nome preferido:", Assim,
"espaço reservado" "Nome"
# Resposta será: {"value": "Resposta do usuário"}
P: Quais tipos de eventos estão disponíveis para__event_call__
"input"
: Caixa de diálogo de caixa de entrada"confirmation"
: Sim/não, ok/cancelar diálogo"execute"
: Execute o código fornecido no cliente e o resultado de retorno
P: Posso atualizar arquivos anexados a uma mensagem?
Sim - use o"files"
ou"chat:message:files"
tipo de evento com um{files: [...]}
carga útil.
P: Posso atualizar o título ou tags da conversa?
Absolutamente: Use"chat:title"
ou"chat:tags"
de acordo.
P: Posso transmitir respostas (tokens parciais) para o usuário?
Sim - emoção"chat:message:delta"
eventos em um loop e depois terminar com"chat:message"
📝 Conclusão
EventosDê a você superpotências interativas em tempo real dentro do Nullcore. Eles permitem que seu código atualize o conteúdo, acionem notificações, solicitam entrada do usuário, resultados de fluxo, código de manuseio e muito mais - conectando sua inteligência de back -end à interface do usuário de bate -papo.
- Usar
__event_emitter__
Para atualizações de status/conteúdo unidirecional. - Usar
__event_call__
Para interações que requerem acompanhamento do usuário (entrada, confirmação, execução).
Consulte este documento para obter tipos e estruturas de eventos comuns e explorar o código -fonte ou documentos do WebUI aberto para quebrar atualizações ou eventos personalizados!
Feliz codificação orientada a eventos em webui aberto! 🚀