Add marketing automation templates and broadcast functionality
This commit is contained in:
parent
1c026e3dcd
commit
d95f154c18
11 changed files with 516 additions and 2 deletions
47
crm/marketing.gbai/marketing.gbdialog/add-new-idea.bas
Normal file
47
crm/marketing.gbai/marketing.gbdialog/add-new-idea.bas
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
PARAM topic AS STRING LIKE "Novo produto de skincare" DESCRIPTION "Tema ou produto para ideation"
|
||||||
|
PARAM platform AS STRING LIKE "instagram" DESCRIPTION "Plataforma alvo: instagram, facebook, whatsapp, email" OPTIONAL
|
||||||
|
PARAM count AS INTEGER LIKE 5 DESCRIPTION "Quantidade de ideias a gerar" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Gera ideias de conteúdo de marketing usando IA para campanhas."
|
||||||
|
|
||||||
|
IF NOT topic THEN
|
||||||
|
TALK "Qual é o tema ou produto para gerar ideias?"
|
||||||
|
HEAR topic AS STRING
|
||||||
|
END IF
|
||||||
|
|
||||||
|
platforms = IIF(platform, platform, "várias plataformas (Instagram, WhatsApp, Email)")
|
||||||
|
num_ideas = IIF(count, count, 5)
|
||||||
|
|
||||||
|
TALK "🤖 Gerando " + num_ideas + " ideias de conteúdo para: **" + topic + "**"
|
||||||
|
TALK "Plataforma: " + platforms
|
||||||
|
TALK ""
|
||||||
|
|
||||||
|
prompt = "Gere " + num_ideas + " ideias de conteúdo de marketing criativas e engagement para o tema: " + topic + ". "
|
||||||
|
prompt = prompt + "Para cada ideia, forneça: headline, mensagem-chave, call-to-action e hashtags relevantes. "
|
||||||
|
prompt = prompt + "Responda em formato de lista numerada."
|
||||||
|
|
||||||
|
ideas = LLM prompt
|
||||||
|
|
||||||
|
TALK "💡 **Ideias Geradas:**"
|
||||||
|
TALK ideas
|
||||||
|
|
||||||
|
TALK "Quer que eu salve algumas dessas ideias para usar depois?"
|
||||||
|
HEAR save_ideas AS BOOLEAN
|
||||||
|
|
||||||
|
IF save_ideas THEN
|
||||||
|
TALK "Quais números das ideias quer salvar? (ex: 1,3,5)"
|
||||||
|
HEAR selected AS STRING
|
||||||
|
|
||||||
|
saved_count = 0
|
||||||
|
FOR EACH num IN SPLIT(selected, ",")
|
||||||
|
idea_entry = POST "/api/marketing/ideas", #{
|
||||||
|
topic: topic,
|
||||||
|
platform: platform,
|
||||||
|
idea_number: VAL(TRIM(num)),
|
||||||
|
saved_at: NOW()
|
||||||
|
}
|
||||||
|
saved_count = saved_count + 1
|
||||||
|
NEXT
|
||||||
|
|
||||||
|
TALK "✅ " + saved_count + " ideia(s) salva(s)!"
|
||||||
|
END IF
|
||||||
68
crm/marketing.gbai/marketing.gbdialog/broadcast.bas
Normal file
68
crm/marketing.gbai/marketing.gbdialog/broadcast.bas
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
PARAM message AS STRING DESCRIPTION "Mensagem com variáveis (ex: Olá {name}!)"
|
||||||
|
PARAM list_id AS STRING DESCRIPTION "ID da lista de contatos"
|
||||||
|
PARAM template_file AS STRING DESCRIPTION "URL da imagem de cabeçalho (opcional)" OPTIONAL
|
||||||
|
PARAM filter AS STRING DESCRIPTION "Filtro adicional (opcional)" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Envia broadcast WhatsApp em massa para uma lista de contatos."
|
||||||
|
|
||||||
|
IF NOT message THEN
|
||||||
|
TALK "Qual é a mensagem para o broadcast?"
|
||||||
|
HEAR message AS STRING
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "🤖 Verificando aprovação do template..."
|
||||||
|
approval_check = LLM "Esta mensagem será aprovada pelo WhatsApp META como Template? Responda OK se sim, ou explique o problema: " + message
|
||||||
|
|
||||||
|
IF approval_check <> "OK" THEN
|
||||||
|
TALK "⚠️ **Atenção:** " + approval_check
|
||||||
|
TALK "Deseja ajustar a mensagem ou continuar mesmo assim?"
|
||||||
|
HEAR proceed AS BOOLEAN
|
||||||
|
IF NOT proceed THEN
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
ELSE
|
||||||
|
TALK "✅ Mensagem aprovada para template WhatsApp!"
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF NOT list_id THEN
|
||||||
|
TALK "Qual lista de contatos devo usar?"
|
||||||
|
HEAR list_name AS STRING
|
||||||
|
lists = GET "/api/marketing/lists?search=" + list_name
|
||||||
|
IF UBOUND(lists) = 0 THEN
|
||||||
|
TALK "Lista não encontrada."
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
list_id = FIRST(lists).id
|
||||||
|
END IF
|
||||||
|
|
||||||
|
list_info = GET "/api/marketing/lists/" + list_id
|
||||||
|
TALK "📤 **Broadcast Preview:**"
|
||||||
|
TALK "Mensagem: " + message
|
||||||
|
IF template_file THEN
|
||||||
|
TALK "Imagem: " + template_file
|
||||||
|
END IF
|
||||||
|
TALK "Destinatários: " + list_info.contact_count + " contatos"
|
||||||
|
TALK "Lista: " + list_info.name
|
||||||
|
|
||||||
|
TALK "Confirmar envio?"
|
||||||
|
HEAR confirm AS BOOLEAN
|
||||||
|
|
||||||
|
IF NOT confirm THEN
|
||||||
|
TALK "Broadcast cancelado."
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "🚀 Enviando broadcast..."
|
||||||
|
|
||||||
|
result = POST "/api/marketing/broadcast", #{
|
||||||
|
message: message,
|
||||||
|
list_id: list_id,
|
||||||
|
template_file: template_file,
|
||||||
|
filter: filter
|
||||||
|
}
|
||||||
|
|
||||||
|
TALK "✅ **Broadcast Enviado!**"
|
||||||
|
TALK "ID: " + result.broadcast_id
|
||||||
|
TALK "Status: " + result.status
|
||||||
|
|
||||||
|
TALK "Acompanhe as métricas em alguns minutos."
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
PARAM name AS STRING LIKE "VIPs de São Paulo" DESCRIPTION "Nome da lista dinâmica"
|
||||||
|
PARAM filter AS STRING LIKE "Perfil=VIP AND cidade=São Paulo" DESCRIPTION "Condição de filtro (SQL-like)"
|
||||||
|
PARAM description AS STRING DESCRIPTION "Descrição da lista (opcional)" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Cria uma Lista Dinâmica baseada em filtros de contatos do CRM."
|
||||||
|
|
||||||
|
IF NOT filter THEN
|
||||||
|
TALK "Qual é a condição de filtro para esta lista?"
|
||||||
|
TALK "Exemplos:"
|
||||||
|
TALK "- Perfil=VIP"
|
||||||
|
TALK "- cidade=São Paulo AND compras>5"
|
||||||
|
TALK "- ultima_compra>2024-01-01"
|
||||||
|
HEAR filter AS STRING
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "🔍 Verificando quantos contatos matching o filtro..."
|
||||||
|
preview = GET "/api/crm/contacts/count?filter=" + filter
|
||||||
|
|
||||||
|
IF preview = 0 THEN
|
||||||
|
TALK "⚠️ Nenhum contato encontrada com este filtro!"
|
||||||
|
TALK "Deseja ajustar o filtro ou criar a lista mesmo assim?"
|
||||||
|
HEAR proceed AS BOOLEAN
|
||||||
|
IF NOT proceed THEN
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
ELSE
|
||||||
|
TALK "✅ " + preview + " contatos matching o filtro."
|
||||||
|
TALK "Prosseguir com a criação da lista dinâmica?"
|
||||||
|
HEAR confirm AS BOOLEAN
|
||||||
|
IF NOT confirm THEN
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
|
||||||
|
new_list = POST "/api/marketing/lists", #{
|
||||||
|
name: name,
|
||||||
|
filter: filter,
|
||||||
|
description: description,
|
||||||
|
type: "dynamic"
|
||||||
|
}
|
||||||
|
|
||||||
|
TALK "📋 **Lista Dinâmica Criada!**"
|
||||||
|
TALK "Nome: " + name
|
||||||
|
TALK "Filtro: " + filter
|
||||||
|
TALK "Contatos: " + preview + " (atualizado automaticamente)"
|
||||||
|
TALK "Tipo: Dinâmica (atualiza automaticamente)"
|
||||||
|
TALK "ID: " + new_list.id
|
||||||
|
|
||||||
|
TALK "Use esta lista em campanhas - ela será atualizada automaticamente!"
|
||||||
53
crm/marketing.gbai/marketing.gbdialog/create-template.bas
Normal file
53
crm/marketing.gbai/marketing.gbdialog/create-template.bas
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
PARAM name AS STRING LIKE "Promoção de Páscoa" DESCRIPTION "Nome do template"
|
||||||
|
PARAM channel AS STRING LIKE "whatsapp" DESCRIPTION "Canal: whatsapp, email, sms, telegram"
|
||||||
|
PARAM content AS STRING DESCRIPTION "Conteúdo do template (corpo da mensagem ou HTML para email)"
|
||||||
|
PARAM header_image AS STRING DESCRIPTION "URL da imagem de cabeçalho (opcional)" OPTIONAL
|
||||||
|
PARAM ai_prompt AS STRING LIKE "Escreva uma mensagem amigável oferecendo 15% de desconto em nossos produtos" DESCRIPTION "Prompt para IA gerar o conteúdo (opcional)" OPTIONAL
|
||||||
|
PARAM meta_template_id AS STRING DESCRIPTION "ID do template approval pela META (para WhatsApp)" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Cria um Template de Marketing (email, WhatsApp, SMS) que pode ser usado em campanhas."
|
||||||
|
|
||||||
|
IF ai_prompt THEN
|
||||||
|
TALK "🤖 Gerando conteúdo com IA..."
|
||||||
|
generated_content = LLM ai_prompt
|
||||||
|
content = generated_content
|
||||||
|
TALK "✅ Conteúdo gerado:"
|
||||||
|
TALK generated_content
|
||||||
|
TALK "Deseja usar este conteúdo ou pedir para a IA gerar outro?"
|
||||||
|
HEAR use_content AS BOOLEAN
|
||||||
|
IF NOT use_content THEN
|
||||||
|
TALK "Por favor, forneça o conteúdo do template:"
|
||||||
|
HEAR content AS STRING
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF channel = "whatsapp" AND NOT meta_template_id THEN
|
||||||
|
TALK "⚠️ Para WhatsApp, você precisa de um template approval pela META."
|
||||||
|
TALK "Deseja proseguir salvando como rascunho (sem meta_template_id)?"
|
||||||
|
HEAR proceed AS BOOLEAN
|
||||||
|
IF NOT proceed THEN
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
|
||||||
|
new_template = POST "/api/marketing/templates", #{
|
||||||
|
name: name,
|
||||||
|
channel: channel,
|
||||||
|
content: content,
|
||||||
|
header_image: header_image,
|
||||||
|
ai_prompt: ai_prompt,
|
||||||
|
meta_template_id: meta_template_id,
|
||||||
|
status: IIF(meta_template_id, "approved", "draft")
|
||||||
|
}
|
||||||
|
|
||||||
|
TALK "📝 **Template Criado!**"
|
||||||
|
TALK "Nome: " + name
|
||||||
|
TALK "Canal: " + UCASE(channel)
|
||||||
|
TALK "Status: " + IIF(meta_template_id, "Approved", "Draft")
|
||||||
|
TALK "ID: " + new_template.id
|
||||||
|
|
||||||
|
IF channel = "whatsapp" AND meta_template_id THEN
|
||||||
|
TALK "✅ Template pronto para uso em broadcasts WhatsApp!"
|
||||||
|
END IF
|
||||||
|
|
||||||
|
RETURN new_template.id
|
||||||
63
crm/marketing.gbai/marketing.gbdialog/get-image.bas
Normal file
63
crm/marketing.gbai/marketing.gbdialog/get-image.bas
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
PARAM prompt AS STRING DESCRIPTION "Descrição da imagem desejada"
|
||||||
|
PARAM style AS STRING LIKE "modern minimalist" DESCRIPTION "Estilo visual (opcional)" OPTIONAL
|
||||||
|
PARAM width AS INTEGER LIKE 1024 DESCRIPTION "Largura da imagem" OPTIONAL
|
||||||
|
PARAM height AS INTEGER LIKE 1024 DESCRIPTION "Altura da imagem" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Gera imagens de marketing usando IA."
|
||||||
|
|
||||||
|
IF NOT prompt THEN
|
||||||
|
TALK "Descreva a imagem que você quer gerar:"
|
||||||
|
HEAR prompt AS STRING
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "🎨 Gerando imagem..."
|
||||||
|
TALK "Prompt: " + prompt
|
||||||
|
|
||||||
|
enhanced_prompt = prompt
|
||||||
|
IF style THEN
|
||||||
|
enhanced_prompt = prompt + ", " + style + " style"
|
||||||
|
END IF
|
||||||
|
|
||||||
|
enhanced_prompt = enhanced_prompt + ", professional product photography, high quality, marketing material"
|
||||||
|
|
||||||
|
result = POST "/api/ai/image/generate", #{
|
||||||
|
prompt: enhanced_prompt,
|
||||||
|
width: IIF(width, width, 1024),
|
||||||
|
height: IIF(height, height, 1024)
|
||||||
|
}
|
||||||
|
|
||||||
|
TALK "✅ **Imagem Gerada!**"
|
||||||
|
TALK "URL: " + result.image_url
|
||||||
|
|
||||||
|
TALK "O que gostaria de fazer agora?"
|
||||||
|
TALK "1. Postar no Instagram"
|
||||||
|
TALK "2. Usar em um broadcast"
|
||||||
|
TALK "3. Baixar a imagem"
|
||||||
|
TALK "4. Gerar variações"
|
||||||
|
|
||||||
|
HEAR choice AS STRING
|
||||||
|
|
||||||
|
IF choice = "1" OR choice = "instagram" THEN
|
||||||
|
TALK "Qual legenda para o post?"
|
||||||
|
HEAR caption AS STRING
|
||||||
|
post_result = POST "/api/social/instagram/post", #{
|
||||||
|
image_url: result.image_url,
|
||||||
|
caption: caption
|
||||||
|
}
|
||||||
|
TALK "✅ Postado no Instagram! ID: " + post_result.post_id
|
||||||
|
ELSE IF choice = "2" OR choice = "broadcast" THEN
|
||||||
|
TALK "Qual lista para o broadcast?"
|
||||||
|
TALK "(Guarde a URL da imagem: " + result.image_url + ")"
|
||||||
|
ELSE IF choice = "3" OR choice = "baixar" THEN
|
||||||
|
TALK "Baixe a imagem em: " + result.image_url
|
||||||
|
ELSE IF choice = "4" OR choice = "variações" THEN
|
||||||
|
TALK "Gerando variações..."
|
||||||
|
variations = POST "/api/ai/image/variations", #{
|
||||||
|
original_url: result.image_url,
|
||||||
|
count: 3
|
||||||
|
}
|
||||||
|
TALK "✅ Variações geradas:"
|
||||||
|
FOR EACH v IN variations
|
||||||
|
TALK "- " + v.url
|
||||||
|
NEXT
|
||||||
|
END IF
|
||||||
58
crm/marketing.gbai/marketing.gbdialog/list-templates.bas
Normal file
58
crm/marketing.gbai/marketing.gbdialog/list-templates.bas
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
PARAM search AS STRING DESCRIPTION "Termo de busca (opcional)" OPTIONAL
|
||||||
|
PARAM channel AS STRING LIKE "whatsapp" DESCRIPTION "Filtrar por canal: whatsapp, email, sms, telegram" OPTIONAL
|
||||||
|
PARAM status_filter AS STRING DESCRIPTION "Filtrar por status: draft, approved, active" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Lista todos os Templates de Marketing disponíveis, com opção de busca e filtro."
|
||||||
|
|
||||||
|
query = "/api/marketing/templates?"
|
||||||
|
has_param = FALSE
|
||||||
|
|
||||||
|
IF search THEN
|
||||||
|
query = query + "search=" + search
|
||||||
|
has_param = TRUE
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF channel THEN
|
||||||
|
IF has_param THEN
|
||||||
|
query = query + "&"
|
||||||
|
END IF
|
||||||
|
query = query + "channel=" + channel
|
||||||
|
has_param = TRUE
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF status_filter THEN
|
||||||
|
IF has_param THEN
|
||||||
|
query = query + "&"
|
||||||
|
END IF
|
||||||
|
query = query + "status=" + status_filter
|
||||||
|
END IF
|
||||||
|
|
||||||
|
templates = GET query
|
||||||
|
|
||||||
|
IF UBOUND(templates) = 0 THEN
|
||||||
|
TALK "Nenhum template encontrado."
|
||||||
|
IF search OR channel OR status_filter THEN
|
||||||
|
TALK "Tente remover os filtros ou usar outros termos."
|
||||||
|
END IF
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "📋 **Templates Encontrados (" + UBOUND(templates) + "):**"
|
||||||
|
|
||||||
|
FOR EACH t IN templates
|
||||||
|
status_icon = IIF(t.status = "approved", "✅", IIF(t.status = "active", "🟢", "📝"))
|
||||||
|
TALK status_icon + " **" + t.name + "**"
|
||||||
|
TALK " Canal: " + UCASE(t.channel)
|
||||||
|
TALK " Status: " + UCASE(t.status)
|
||||||
|
IF t.content THEN
|
||||||
|
preview = LEFT(t.content, 80)
|
||||||
|
IF LEN(t.content) > 80 THEN
|
||||||
|
preview = preview + "..."
|
||||||
|
END IF
|
||||||
|
TALK " Preview: " + preview
|
||||||
|
END IF
|
||||||
|
TALK " ID: " + t.id
|
||||||
|
TALK ""
|
||||||
|
NEXT t
|
||||||
|
|
||||||
|
TALK "Para usar um template em uma campanha, anote o ID."
|
||||||
54
crm/marketing.gbai/marketing.gbdialog/post-to-instagram.bas
Normal file
54
crm/marketing.gbai/marketing.gbdialog/post-to-instagram.bas
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
PARAM image_url AS STRING DESCRIPTION "URL da imagem ou caption"
|
||||||
|
PARAM caption AS STRING DESCRIPTION "Caption do post (opcional)" OPTIONAL
|
||||||
|
PARAM video_url AS STRING DESCRIPTION "URL do vídeo (para Reels, opcional)" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Posta conteúdo no Instagram."
|
||||||
|
|
||||||
|
IF NOT image_url AND NOT video_url THEN
|
||||||
|
TALK "Forneça a URL da imagem ou vídeo para postar:"
|
||||||
|
HEAR media_url AS STRING
|
||||||
|
ELSE
|
||||||
|
media_url = IIF(image_url, image_url, video_url)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF NOT caption THEN
|
||||||
|
TALK "Qual é a caption do post?"
|
||||||
|
HEAR caption AS STRING
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "📸 **Preview do Post:**"
|
||||||
|
IF image_url THEN
|
||||||
|
TALK "Imagem: " + image_url
|
||||||
|
ELSE
|
||||||
|
TALK "Vídeo: " + video_url
|
||||||
|
END IF
|
||||||
|
TALK "Caption: " + caption
|
||||||
|
|
||||||
|
TALK "Postar no Instagram agora?"
|
||||||
|
HEAR confirm AS BOOLEAN
|
||||||
|
|
||||||
|
IF NOT confirm THEN
|
||||||
|
TALK "Post cancelado."
|
||||||
|
RETURN
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "Postando..."
|
||||||
|
|
||||||
|
IF video_url THEN
|
||||||
|
result = POST "/api/social/instagram/reel", #{
|
||||||
|
video_url: video_url,
|
||||||
|
caption: caption
|
||||||
|
}
|
||||||
|
TALK "🎬 **Reel postado!**"
|
||||||
|
ELSE
|
||||||
|
result = POST "/api/social/instagram/post", #{
|
||||||
|
image_url: media_url,
|
||||||
|
caption: caption
|
||||||
|
}
|
||||||
|
TALK "📸 **Postado no Instagram!**"
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "Post ID: " + result.post_id
|
||||||
|
TALK "Link: " + result.permalink
|
||||||
|
TALK ""
|
||||||
|
TALK "Acompanhe o engajamento em Analytics!"
|
||||||
72
crm/marketing.gbai/marketing.gbdialog/poster.bas
Normal file
72
crm/marketing.gbai/marketing.gbdialog/poster.bas
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
PARAM text AS STRING DESCRIPTION "Texto principal do poster"
|
||||||
|
PARAM theme AS STRING LIKE "modern" DESCRIPTION "Tema: modern, vintage, minimal, bold"
|
||||||
|
PARAM primary_color AS STRING DESCRIPTION "Cor primária (hex, opcional)" OPTIONAL
|
||||||
|
PARAM secondary_color AS STRING DESCRIPTION "Cor secundária (hex, opcional)" OPTIONAL
|
||||||
|
PARAM logo_url AS STRING DESCRIPTION "URL do logo (opcional)" OPTIONAL
|
||||||
|
|
||||||
|
DESCRIPTION "Cria posters e materiais visuais de marketing."
|
||||||
|
|
||||||
|
IF NOT text THEN
|
||||||
|
TALK "Qual é o texto principal do poster?"
|
||||||
|
HEAR text AS STRING
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF NOT theme THEN
|
||||||
|
TALK "Qual tema visual? (modern, vintage, minimal, bold)"
|
||||||
|
HEAR theme AS STRING
|
||||||
|
END IF
|
||||||
|
|
||||||
|
TALK "🎨 Criando poster..."
|
||||||
|
TALK "Texto: " + text
|
||||||
|
TALK "Tema: " + theme
|
||||||
|
|
||||||
|
prompt = "Create a marketing poster with text: '" + text + "'. "
|
||||||
|
prompt = prompt + "Style: " + theme + " graphic design. "
|
||||||
|
prompt = prompt + "Professional, eye-catching, suitable for social media. "
|
||||||
|
|
||||||
|
IF primary_color THEN
|
||||||
|
prompt = prompt + "Primary color: " + primary_color + ". "
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF logo_url THEN
|
||||||
|
prompt = prompt + "Include logo at bottom. "
|
||||||
|
END IF
|
||||||
|
|
||||||
|
result = POST "/api/ai/image/generate", #{
|
||||||
|
prompt: prompt,
|
||||||
|
width: 1080,
|
||||||
|
height: 1080
|
||||||
|
}
|
||||||
|
|
||||||
|
TALK "✅ **Poster Criado!**"
|
||||||
|
TALK "URL: " + result.image_url
|
||||||
|
TALK ""
|
||||||
|
|
||||||
|
TALK "Opções:"
|
||||||
|
TALK "1. Baixar"
|
||||||
|
TALK "2. Postar no Instagram"
|
||||||
|
TALK "3. Criar versão alternativa"
|
||||||
|
|
||||||
|
HEAR choice AS STRING
|
||||||
|
|
||||||
|
IF choice = "1" OR choice = "baixar" THEN
|
||||||
|
TALK "Baixe em: " + result.image_url
|
||||||
|
ELSE IF choice = "2" OR choice = "instagram" THEN
|
||||||
|
TALK "Qual caption?"
|
||||||
|
HEAR caption AS STRING
|
||||||
|
post_result = POST "/api/social/instagram/post", #{
|
||||||
|
image_url: result.image_url,
|
||||||
|
caption: caption
|
||||||
|
}
|
||||||
|
TALK "✅ Postado! " + post_result.permalink
|
||||||
|
ELSE IF choice = "3" OR choice = "alternativa" THEN
|
||||||
|
TALK "Descreva o que gostaria de mudar:"
|
||||||
|
HEAR feedback AS STRING
|
||||||
|
new_prompt = prompt + " Modified based on: " + feedback
|
||||||
|
alt_result = POST "/api/ai/image/generate", #{
|
||||||
|
prompt: new_prompt,
|
||||||
|
width: 1080,
|
||||||
|
height: 1080
|
||||||
|
}
|
||||||
|
TALK "✅ Nova versão: " + alt_result.image_url
|
||||||
|
END IF
|
||||||
|
|
@ -4,6 +4,11 @@ ADD TOOL "send-campaign"
|
||||||
ADD TOOL "create-template"
|
ADD TOOL "create-template"
|
||||||
ADD TOOL "list-templates"
|
ADD TOOL "list-templates"
|
||||||
ADD TOOL "create-dynamic-list"
|
ADD TOOL "create-dynamic-list"
|
||||||
|
ADD TOOL "add-new-idea"
|
||||||
|
ADD TOOL "broadcast"
|
||||||
|
ADD TOOL "get-image"
|
||||||
|
ADD TOOL "post-to-instagram"
|
||||||
|
ADD TOOL "poster"
|
||||||
|
|
||||||
SET CONTEXT "marketing" AS "You are a marketing automation assistant for General Bots. You help marketers create campaigns, design templates (email/WhatsApp), build contact lists (static or dynamic), and schedule or send messages. All features interact with the CRM contacts via the General Bots marketing REST API."
|
SET CONTEXT "marketing" AS "You are a marketing automation assistant for General Bots. You help marketers create campaigns, design templates (email/WhatsApp), build contact lists (static or dynamic), and schedule or send messages. All features interact with the CRM contacts via the General Bots marketing REST API."
|
||||||
|
|
||||||
|
|
@ -11,8 +16,13 @@ CLEAR SUGGESTIONS
|
||||||
|
|
||||||
ADD SUGGESTION "newcamp" AS "Criar nova campanha"
|
ADD SUGGESTION "newcamp" AS "Criar nova campanha"
|
||||||
ADD SUGGESTION "viewcamps" AS "Ver minhas campanhas"
|
ADD SUGGESTION "viewcamps" AS "Ver minhas campanhas"
|
||||||
ADD SUGGESTION "lists" AS "Criar lista de contatos"
|
ADD SUGGESTION "lists" AS "Criar lista dinâmica"
|
||||||
ADD SUGGESTION "send" AS "Enviar uma campanha"
|
ADD SUGGESTION "send" AS "Enviar uma campanha"
|
||||||
|
ADD SUGGESTION "template" AS "Criar template"
|
||||||
|
ADD SUGGESTION "broadcast" AS "Enviar broadcast WhatsApp"
|
||||||
|
ADD SUGGESTION "ideas" AS "Gerar ideias de conteúdo"
|
||||||
|
ADD SUGGESTION "image" AS "Gerar imagem com IA"
|
||||||
|
ADD SUGGESTION "instagram" AS "Postar no Instagram"
|
||||||
|
|
||||||
BEGIN TALK
|
BEGIN TALK
|
||||||
**Marketing — Campanhas e Envio**
|
**Marketing — Campanhas e Envio**
|
||||||
|
|
@ -21,7 +31,10 @@ Posso ajudar com:
|
||||||
• Criar Campanhas (WhatsApp, Email, SMS)
|
• Criar Campanhas (WhatsApp, Email, SMS)
|
||||||
• Gerenciar Templates (com IA ou predefinidos)
|
• Gerenciar Templates (com IA ou predefinidos)
|
||||||
• Construir Listas Dinâmicas (ex: VIPs, Clientes do Bairro X)
|
• Construir Listas Dinâmicas (ex: VIPs, Clientes do Bairro X)
|
||||||
• Enviar campanhas em massa (Broadcast)
|
• Enviar campanhas em massa (Broadcast WhatsApp)
|
||||||
|
• Gerar ideias de conteúdo com IA
|
||||||
|
• Criar imagens e posters de marketing
|
||||||
|
• Postar diretamente no Instagram
|
||||||
• Ver métricas e estatísticas de aberturas
|
• Ver métricas e estatísticas de aberturas
|
||||||
|
|
||||||
O que quer divulgar hoje?
|
O que quer divulgar hoje?
|
||||||
|
|
|
||||||
14
crm/marketing.gbai/marketing.gbot/config.csv
Normal file
14
crm/marketing.gbai/marketing.gbot/config.csv
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
name,value
|
||||||
|
episodic-memory-history,2
|
||||||
|
episodic-memory-threshold,4
|
||||||
|
theme-color1,#E91E63
|
||||||
|
theme-color2,#FCE4EC
|
||||||
|
theme-logo,https://pragmatismo.com.br/icons/general-bots.svg
|
||||||
|
theme-title,Marketing Hub - General Bots
|
||||||
|
bot-name,Marketing Automation Assistant
|
||||||
|
welcome-message,Welcome to Marketing Hub! Create campaigns, templates, and broadcast messages.
|
||||||
|
instagram-account,
|
||||||
|
whatsapp-business-id,
|
||||||
|
default-channel,whatsapp
|
||||||
|
rate-limit,10
|
||||||
|
max-broadcast-size,1000
|
||||||
|
23
multiagent/marketing-campaign.gbai/package.json
Normal file
23
multiagent/marketing-campaign.gbai/package.json
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"name": "Marketing Campaign Workflow",
|
||||||
|
"description": "Multi-agent marketing campaign orchestration with audience analysis, content creation, and multi-channel distribution (email, social, ads)",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": "General Bots",
|
||||||
|
"category": "marketing",
|
||||||
|
"keywords": ["marketing", "campaign", "multi-agent", "orchestration", "automation"],
|
||||||
|
"features": [
|
||||||
|
"Multi-step workflow orchestration",
|
||||||
|
"Audience segmentation and analysis",
|
||||||
|
"AI-powered content generation",
|
||||||
|
"Multi-channel distribution (email, social, WhatsApp)",
|
||||||
|
"Parallel execution",
|
||||||
|
"Event-driven optimization",
|
||||||
|
"Cross-bot memory sharing",
|
||||||
|
"Performance analytics"
|
||||||
|
],
|
||||||
|
"requirements": {
|
||||||
|
"tools": ["social-media-post", "email-sender", "analytics-tracker", "llm-generator"],
|
||||||
|
"knowledge_bases": ["brand-guidelines"],
|
||||||
|
"bots": ["audience-segmenter", "content-creator", "email-scheduler", "social-scheduler", "ad-manager", "performance-analyzer", "optimizer"]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue