Voz
Transcreve áudio em texto, transforma texto em áudio e libera a conversa por voz em tempo real.
O modo de voz permite falar com a VI e ouvir a resposta. Há duas formas. A primeira usa duas rotas simples: voice/transcribe (áudio para texto) e voice/speak (texto para áudio), que dependem do recurso enable_chat_voice_mode (veja Ferramentas e configurações) e de um provedor de voz na instalação. A segunda é a conversa em tempo real, em que o navegador fala direto com o provedor de voz usando a credencial de realtime/token e avisa o tempo gasto em realtime/usage.
Transcrever áudio
Converte um áudio curto em texto. O arquivo vai no campo audio de um multipart/form-data.
/api/v1/vendor/intelligence/voice/transcribeSellerTranscrever áudio
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um seller (veja Tokens).Corpo da requisição
audiofileobrigatóriomime_typestringContent-Type.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/intelligence/voice/transcribe" \
-H "Authorization: Bearer $TOKEN" \
-F "audio=@tabela-de-precos.pdf"Resposta
{ "text": "quanto eu vendi hoje" }Campos da resposta
textstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | Voz desligada na loja (enable_chat_voice_mode). | {"error":"voice mode is disabled \u2014 toggle enable_chat_voice_mode in /admin/intelligence/settings"} (a mensagem cita uma tela do administrador; o seller não altera esse recurso) |
| 400 | Não é multipart, falta audio ou o áudio é vazio. | {"error":"audio field missing"} |
| 413 | Áudio acima de 5 MB. | {"error":"..."} |
| 503 | Sem provedor de voz. | {"error":"voice provider not configured"} |
Transformar texto em áudio
Gera a fala de um texto e devolve os bytes do áudio.
/api/v1/vendor/intelligence/voice/speakSellerTransformar texto em áudio
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
textstringobrigatóriovoicestringExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/intelligence/voice/speak" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Hoje você vendeu doze pedidos."
}'Resposta
Content-Type: audio/mpeg
Cache-Control: no-store
(bytes do áudio)O Content-Type do áudio depende do provedor de voz da instalação (audio/mpeg e audio/wav são possíveis). Leia sempre o cabeçalho da resposta em vez de assumir um formato.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | Voz desligada na loja (enable_chat_voice_mode). | {"error":"voice mode is disabled \u2014 toggle enable_chat_voice_mode in /admin/intelligence/settings"} (a mensagem cita uma tela do administrador; o seller não altera esse recurso) |
| 400 | text vazio ou corpo que não é JSON. | {"error":"text required"} ou {"error":"invalid request body"} |
| 503 | Sem provedor de voz. | {"error":"voice provider not configured"} |
Credencial de voz em tempo real
Para uma conversa por voz fluida, o navegador fala direto com o provedor de voz, sem passar os áudios pelo servidor da Venddor. Esta rota entrega a credencial temporária para isso e as configurações da sessão de voz. Cada chamada conta como uma sessão na cota semanal de voz da loja.
/api/v1/vendor/intelligence/realtime/tokenSellerObter a credencial de voz em tempo real
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
surfacestringlateral). Ajusta a abertura da conversa. O corpo inteiro é opcional e limitado a 8 KB.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/intelligence/realtime/token" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"surface": "lateral"
}'Resposta
{
"value": "ek_example_0000000000",
"expires_at": 1791737000,
"model": "realtime-model-id",
"session": {
"type": "realtime"
},
"vad_threshold_speak": 0.75,
"vad_threshold_base": 0.5,
"max_session_seconds": 600,
"tool_name": "venddor_intelligence"
}Campos da resposta
valuestringexpires_atanymodelstringsessionobjectvad_threshold_speaknumber0.75.vad_threshold_basenumber0.5.max_session_secondsintegertool_namestringvenddor_intelligence).Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 403 | A conversa por voz está desligada para a loja. A decisão é do operador da Venddor, não do seller. | {"error":"a conversa por voz está desligada para esta loja \u2014 ligue em /admin/io/storefronts/{id}, no bloco da voz"} (em português) |
| 429 | A cota semanal de voz da loja acabou. | {"error":"cota semanal de voz atingida","reason":"a loja já usou 120 de 120 minutos de voz nesta semana"} (em português) |
| 503 | A voz em tempo real não está configurada na instalação. | {"error":"voz em tempo real não configurada nesta instalação"} |
| 502 | O provedor de voz não respondeu, recusou ou devolveu uma credencial vazia. | {"error":"o provedor de voz recusou a credencial"} (em português) |
Registrar o tempo de voz usado
Enquanto a conversa por voz acontece, o navegador avisa quantos segundos foram consumidos. Sem esse aviso uma aba fechada no meio da conversa não pagaria nada da cota. Mande a cada minuto e uma última vez ao encerrar.
/api/v1/vendor/intelligence/realtime/usageSellerRegistrar o tempo de voz usado
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
secondsintegerobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/intelligence/realtime/usage" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"seconds": 60
}'Resposta
{
"ok": true
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido/expirado. | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é de um administrador da loja). | {"error":"insufficient permissions"} |
| 400 | Corpo que não é JSON. | {"error":"corpo inválido"} (em português) |