Pular para o conteúdo principal
Use client.Typebots para integrar fluxos TypeBot com uma instância VZaps. Campos comuns em toda chamada:
CampoTipoObrigatórioDescrição
InstanceIDstringSimID da instância.
InstanceTokenstringSimToken da instância.

Typebots.List(ctx, instanceID, options)

Lista TypeBots configurados na instância.
typebots, err := client.Typebots.List(ctx, "VZ...", vzaps.InstanceOptions{
	InstanceToken: "instance-token",
})
fmt.Printf("%#v\n", typebots)
Retorno: lista/array de configuracoes TypeBot da instancia (IDs, gatilhos, prioridade, etc.).

Typebots.Create(ctx, req)

Cria configuração de TypeBot.
created, err := client.Typebots.Create(ctx, vzaps.TypebotRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	Enabled:         true,
	Description:     "Fluxo de boas-vindas",
	TypebotURL:      "https://typebot.io",
	PublicID:        "my-public-flow",
	TriggerType:     "keyword",
	TriggerValue:    "hello",
	Priority:        10,
	ExpireInMinutes: 30,
	KeywordFinish:   "exit",
	DefaultDelayMs:  800,
	UnknownMessage:  "Desculpe, não entendi. Pode reformular?",
	TranscribeAudio: true,
	ListenFromMe:    false,
	StopBotFromMe:   true,
	KeepOpen:        false,
	DebounceMs:      1500,
	IgnoreGroups:    false,
})
fmt.Printf("%#v\n", created)
Retorno: configuracao criada, incluindo typebot_id para updates posteriores. Principais campos do payload:
Campo (JSON)Campo GoObrigatórioDescrição
enabledEnabledSimHabilita ou desabilita avaliação de gatilho.
descriptionDescriptionSimNome de exibição da configuração.
typebot_urlTypebotURLSimURL base do TypeBot.
public_idPublicIDSimIdentificador público do fluxo.
trigger_typeTriggerTypeSimall, keyword, contains, starts_with, regex, advanced ou none.
trigger_valueTriggerValueCondicionalTexto ou regex do gatilho.
trigger_operatorTriggerOperatorCondicionalUsado quando TriggerType é advanced.
priorityPrioritySimOrdem de avaliação. Valor maior primeiro.
expire_in_minutesExpireInMinutesSimExpiração da sessão após inatividade. 0 = sem expiração.

Typebots.Update(ctx, req)

Atualiza TypeBot existente. Passe TypebotID do create ou list.
_, err := client.Typebots.Update(ctx, vzaps.TypebotMutationRequest{
	TypebotRequest: vzaps.TypebotRequest{
		InstanceScopedRequest: vzaps.InstanceScopedRequest{
			InstanceID:    "VZ...",
			InstanceToken: "instance-token",
		},
		Enabled:         true,
		Description:     "Fluxo de boas-vindas atualizado",
		TriggerType:     "contains",
		TriggerValue:    "help",
		Priority:        20,
		ExpireInMinutes: 60,
	},
	TypebotID: "550e8400-e29b-41d4-a716-446655440000",
})
Retorno: configuracao atualizada ou { status: "ok" }.

Typebots.Delete(ctx, req)

Remove configuração e suas sessões.
_, err := client.Typebots.Delete(ctx, vzaps.TypebotMutationRequest{
	TypebotRequest: vzaps.TypebotRequest{
		InstanceScopedRequest: vzaps.InstanceScopedRequest{
			InstanceID:    "VZ...",
			InstanceToken: "instance-token",
		},
	},
	TypebotID: "550e8400-e29b-41d4-a716-446655440000",
})
Retorno: confirmacao de remocao ({ status: "ok" } ou mensagem equivalente).

Typebots.StartSession(ctx, req)

Inicia sessão manualmente com um contato. Por PublicID:
_, err := client.Typebots.StartSession(ctx, vzaps.TypebotStartSessionRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	PublicID:  "support",
	Phone:     "5511999999999",
	PushName:  "Cliente",
	Message:   "Preciso de ajuda",
})
Retorno: sessao iniciada (UUID da sessao, contato, status opened). Por TypebotID:
_, err := client.Typebots.StartSession(ctx, vzaps.TypebotStartSessionRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	TypebotID: "550e8400-e29b-41d4-a716-446655440000",
	Phone:     "5511999999999",
	Message:   "Preciso de ajuda",
})
Campo (JSON)Campo GoObrigatórioDescrição
public_idPublicIDCondicionalIdentificador público do fluxo. Use PublicID ou TypebotID.
typebot_idTypebotIDCondicionalID interno do TypeBot.
phonePhoneSimTelefone do contato.
messageMessageSimMensagem inicial enviada ao fluxo.
push_namePushNameNãoNome de exibição do contato.

Typebots.ListSessions(ctx, instanceID, options)

Lista sessões ativas e encerradas.
sessions, err := client.Typebots.ListSessions(ctx, "VZ...", vzaps.InstanceOptions{
	InstanceToken: "instance-token",
})
fmt.Printf("%#v\n", sessions)
Retorno: lista de sessoes (opened, paused, closed) por contato/flow.

Typebots.PauseSession(ctx, req)

Pausa sessão aberta. Passe UUID da sessão em Session.
_, err := client.Typebots.PauseSession(ctx, vzaps.TypebotSessionRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	Session: "550e8400-e29b-41d4-a716-446655440001",
})
Retorno: sessao com status paused.

Typebots.CloseSession(ctx, req)

Encerra sessão manualmente. Por UUID da sessão:
_, err := client.Typebots.CloseSession(ctx, vzaps.TypebotSessionRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	Session: "550e8400-e29b-41d4-a716-446655440001",
})
Retorno: sessao encerrada (closed) ou confirmacao por telefone. Por telefone do contato (encerra todas as sessões ativas desse número):
_, err := client.Typebots.CloseSession(ctx, vzaps.TypebotSessionRequest{
	InstanceScopedRequest: vzaps.InstanceScopedRequest{
		InstanceID:    "VZ...",
		InstanceToken: "instance-token",
	},
	Session: "5511999999999",
})