Pular para o conteúdo principal

Text Variation

1. Visão geral

A API TextVariation gera variações de um texto preservando o contexto geral da mensagem. Conforme a configuração contratada, o processamento pode aplicar geração por IA, sinônimos e outras estratégias configuradas pela Witime.

Este documento descreve o endpoint público, seus parâmetros e exemplos de integração. Todos os valores apresentados são fictícios.

2. Endpoint

POST <BASE_URL>/witime/chatbot/textvariation.aspx?chave=<CHAVE_DE_ACESSO>

Exemplo de endereço de produção:

https://sms.witi.me/witime/chatbot/textvariation.aspx?chave=<CHAVE_DE_ACESSO>

A URL definitiva, a chave de acesso, o identificador da empresa e o nome da configuração são fornecidos pela Witime.

Cabeçalhos

CabeçalhoValor
Content-Typeapplication/json; charset=utf-8
Acceptapplication/json

Autenticação

A autenticação é feita pelo parâmetro de consulta chave.

  • Use somente HTTPS em ambientes não locais.
  • Nunca grave a chave diretamente no código-fonte.
  • Armazene-a em variável de ambiente ou cofre de segredos.
  • Não compartilhe URLs completas contendo a chave em tickets, capturas de tela ou logs.
  • A Chave devolvida dentro de Resultado é um identificador da requisição, não uma credencial de autenticação.

3. Corpo da requisição

{
"Configuracao": "gpt-sinonimos-rcs",
"Texto": "Oferta disponivel! Consulte as condicoes e saiba mais: https://example.com/oferta",
"NumeroVariacoes": 3,
"MaxTextLength": 155,
"RemoveAcentos": true,
"RemoveUnicode": false,
"IdEmpresa": 12345
}

12345, example.com e o conteúdo do texto são apenas dados de demonstração.

Campos

CampoTipoObrigatoriedadeDescrição
ConfiguracaostringSimNome exato da configuração habilitada pela Witime, por exemplo gpt-sinonimos-rcs.
TextostringSimTexto original que será variado. Não pode ser vazio.
NumeroVariacoesinteiroSimQuantidade de variações finais solicitadas. Use um inteiro positivo dentro dos limites contratados.
MaxTextLengthinteiroRecomendadoTamanho máximo desejado para cada texto. Se for menor que 1, o serviço adota 160.
RemoveAcentosbooleanoNãoQuando true, remove acentos das saídas. Padrão: true.
RemoveUnicodebooleanoNãoQuando true, remove caracteres Unicode não aceitos e também força a remoção de acentos. Padrão: true. Use false quando emojis forem permitidos.
IdEmpresainteiroSimIdentificador da empresa fornecido pela Witime.

Observações de processamento

  • Links são protegidos durante a variação e restaurados na saída.
  • O link original deve aparecer integralmente no resultado; ainda assim, valide essa regra antes de enviar a mensagem ao destinatário.
  • O serviço pode reutilizar variações previamente processadas por meio de cache.
  • Candidatas inválidas, duplicadas ou incompatíveis com as regras podem ser descartadas.
  • O conteúdo gerado deve ser validado pelo sistema cliente antes do uso, especialmente valores, datas, condições comerciais, termos legais e opt-out.

4. Exemplo com cURL

Defina os valores sensíveis fora do comando e substitua os valores de exemplo:

export WITIME_BASE_URL="https://sms.witi.me"
export WITIME_API_KEY="sua-chave-fornecida-pela-witime"

curl --request POST \
"${WITIME_BASE_URL}/witime/chatbot/textvariation.aspx?chave=${WITIME_API_KEY}" \
--header "Content-Type: application/json; charset=utf-8" \
--header "Accept: application/json" \
--data '{
"Configuracao": "gpt-sinonimos-rcs",
"Texto": "Oferta disponivel! Consulte as condicoes e saiba mais: https://example.com/oferta",
"NumeroVariacoes": 3,
"MaxTextLength": 155,
"RemoveAcentos": true,
"RemoveUnicode": false,
"IdEmpresa": 12345
}'

5. Exemplo com PowerShell

$baseUrl = $env:WITIME_BASE_URL
$apiKey = [Uri]::EscapeDataString($env:WITIME_API_KEY)
$uri = "$baseUrl/witime/chatbot/textvariation.aspx?chave=$apiKey"

$body = @{
Configuracao = "gpt-sinonimos-rcs"
Texto = "Oferta disponivel! Consulte as condicoes e saiba mais: https://example.com/oferta"
NumeroVariacoes = 3
MaxTextLength = 155
RemoveAcentos = $true
RemoveUnicode = $false
IdEmpresa = 12345
} | ConvertTo-Json

$response = Invoke-RestMethod `
-Method Post `
-Uri $uri `
-ContentType "application/json; charset=utf-8" `
-Headers @{ Accept = "application/json" } `
-Body $body

if ($response.Resultado.CodigoResultado -ne 0) {
throw "TextVariation falhou: $($response.Resultado.Mensagem)"
}

$response.Variacoes | ForEach-Object { $_.Texto }

6. Resposta de sucesso

{
"Variacoes": [
{
"Texto": "Oferta disponivel! Veja as condicoes e saiba mais: https://example.com/oferta",
"Toxidades": 0
},
{
"Texto": "Confira a oferta e consulte as condicoes: https://example.com/oferta",
"Toxidades": 0
},
{
"Texto": "Saiba mais sobre a oferta e suas condicoes: https://example.com/oferta",
"Toxidades": 0
}
],
"Resultado": {
"CodigoResultado": 0,
"Mensagem": "3 textos gerados com sucesso",
"Chave": "00000000-0000-0000-0000-000000000000",
"Cobrado": true,
"ValorCobrado": 3.0,
"ElapsedTimeMS": 2500
}
}

A resposta acima é ilustrativa. Textos, quantidades, identificador e tempo variam a cada processamento.

Campos da resposta

CampoTipoDescrição
VariacoesarrayLista de variações retornadas.
Variacoes[].TextostringTexto final da variação.
Variacoes[].Scorestring ou nuloClassificação de conteúdo, quando disponível. Pode não aparecer.
Variacoes[].ToxidadesinteiroIndicador de toxicidades associado à variação. O nome Toxidades faz parte do contrato.
Resultado.CodigoResultadointeiro0 indica sucesso. Outros valores indicam erro de negócio ou processamento.
Resultado.MensagemstringDescrição legível do resultado.
Resultado.ChaveUUIDIdentificador de correlação da resposta. Não é a chave de acesso.
Resultado.CobradobooleanoIndica se houve registro de consumo.
Resultado.ValorCobradodecimalValor de consumo registrado pelo serviço. A unidade deve ser confirmada no contrato comercial e pode não coincidir com o tamanho de Variacoes.
Resultado.ElapsedTimeMSinteiroTempo decorrido no servidor, em milissegundos.

Para determinar sucesso, verifique sempre Resultado.CodigoResultado; não dependa somente do status HTTP ou do texto de Mensagem.

7. Códigos de resultado conhecidos

CódigoSignificado
0Processamento concluído com sucesso.
1Chave ausente ou configuração inexistente/inválida, conforme a mensagem.
2Corpo da requisição vazio.
3JSON inválido.
4Texto vazio após a validação.
5Saldo insuficiente para gerar variações.

A validação da chave e componentes internos podem devolver outros códigos. Registre CodigoResultado, Mensagem e Chave para suporte, sem registrar a chave de acesso nem conteúdo sensível.

Exemplo de erro

{
"Variacoes": [],
"Resultado": {
"CodigoResultado": 5,
"Mensagem": "Saldo insuficiente para gerar variações de texto.",
"Chave": "00000000-0000-0000-0000-000000000000",
"Cobrado": false,
"ValorCobrado": 0.0,
"ElapsedTimeMS": 20
}
}

8. Recomendações de integração

  1. Configure um timeout HTTP compatível com processamento por IA; ele pode levar vários segundos.
  2. Trate a quantidade retornada como a fonte efetiva de resultados.
  3. Não faça repetição automática indiscriminada: uma chamada pode registrar consumo mesmo se a resposta for perdida. Não há garantia de idempotência documentada.
  4. Em falhas transitórias, aplique poucas tentativas com espera exponencial e registre a Chave de correlação quando disponível.
  5. Valide comprimento, link, opt-out, informações obrigatórias e regras de negócio em cada variação.
  6. Não envie dados pessoais ou confidenciais no texto sem base legal, autorização contratual e controles adequados.
  7. Preserve a grafia exata dos campos JSON, inclusive Configuracao, NumeroVariacoes, IdEmpresa e Toxidades.

9. Checklist de homologação

  • URL de produção recebida por canal seguro.
  • Chave armazenada em cofre de segredos ou variável de ambiente.
  • IdEmpresa e Configuracao confirmados pela Witime.
  • Timeout e tratamento de erro configurados.
  • CodigoResultado validado em toda resposta.
  • Links comparados com o texto original.
  • Limite de caracteres validado pelo cliente.
  • Conteúdo e opt-out revisados antes do envio.
  • Logs sem credenciais, dados pessoais ou corpo integral da mensagem.

10. Informações para suporte

Em caso de falha, envie somente:

  • data e hora da chamada, com fuso horário;
  • ambiente utilizado;
  • Resultado.CodigoResultado;
  • Resultado.Mensagem;
  • Resultado.Chave;
  • IdEmpresa, se autorizado;
  • parâmetros técnicos sem o texto integral, quando possível.

Nunca envie a chave de acesso completa. Mascare também dados pessoais, links privados e conteúdo confidencial.