curl --request POST \
--url https://clientapi.woku.app/v1/ces \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"score": 4,
"cesToolId": "507f1f77bcf86cd799439011",
"responseChannel": "<string>",
"clientEmail": "customer@example.com",
"anonymous": false,
"dispatchToken": "<string>"
}
'import requests
url = "https://clientapi.woku.app/v1/ces"
payload = {
"score": 4,
"cesToolId": "507f1f77bcf86cd799439011",
"responseChannel": "<string>",
"clientEmail": "customer@example.com",
"anonymous": False,
"dispatchToken": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
score: 4,
cesToolId: '507f1f77bcf86cd799439011',
responseChannel: '<string>',
clientEmail: 'customer@example.com',
anonymous: false,
dispatchToken: '<string>'
})
};
fetch('https://clientapi.woku.app/v1/ces', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://clientapi.woku.app/v1/ces",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'score' => 4,
'cesToolId' => '507f1f77bcf86cd799439011',
'responseChannel' => '<string>',
'clientEmail' => 'customer@example.com',
'anonymous' => false,
'dispatchToken' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://clientapi.woku.app/v1/ces"
payload := strings.NewReader("{\n \"score\": 4,\n \"cesToolId\": \"507f1f77bcf86cd799439011\",\n \"responseChannel\": \"<string>\",\n \"clientEmail\": \"customer@example.com\",\n \"anonymous\": false,\n \"dispatchToken\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://clientapi.woku.app/v1/ces")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"score\": 4,\n \"cesToolId\": \"507f1f77bcf86cd799439011\",\n \"responseChannel\": \"<string>\",\n \"clientEmail\": \"customer@example.com\",\n \"anonymous\": false,\n \"dispatchToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://clientapi.woku.app/v1/ces")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"score\": 4,\n \"cesToolId\": \"507f1f77bcf86cd799439011\",\n \"responseChannel\": \"<string>\",\n \"clientEmail\": \"customer@example.com\",\n \"anonymous\": false,\n \"dispatchToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cesId": "507f1f77bcf86cd799439abc",
"ces": {
"_id": "<string>",
"score": 3,
"anonymous": true,
"cesToolId": "<string>",
"clientId": "<string>",
"responseChannel": "<string>",
"commentType": "textnote",
"description": "<string>",
"transcription": "<string>",
"feedbackType": "recognition",
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"statusCode": 400,
"message": "<string>",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "Authentication required",
"error": "Forbidden"
}Capturar un puntaje de CES
Envia un puntaje de esfuerzo de CES (1-5) para la empresa que hace la llamada contra una herramienta de CES especifica. Las herramientas de CES siempre son personalizadas, por lo que cesToolId siempre es obligatorio. Opcionalmente incluye el correo del encuestado, o marca el envio como anonimo.
curl --request POST \
--url https://clientapi.woku.app/v1/ces \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"score": 4,
"cesToolId": "507f1f77bcf86cd799439011",
"responseChannel": "<string>",
"clientEmail": "customer@example.com",
"anonymous": false,
"dispatchToken": "<string>"
}
'import requests
url = "https://clientapi.woku.app/v1/ces"
payload = {
"score": 4,
"cesToolId": "507f1f77bcf86cd799439011",
"responseChannel": "<string>",
"clientEmail": "customer@example.com",
"anonymous": False,
"dispatchToken": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
score: 4,
cesToolId: '507f1f77bcf86cd799439011',
responseChannel: '<string>',
clientEmail: 'customer@example.com',
anonymous: false,
dispatchToken: '<string>'
})
};
fetch('https://clientapi.woku.app/v1/ces', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://clientapi.woku.app/v1/ces",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'score' => 4,
'cesToolId' => '507f1f77bcf86cd799439011',
'responseChannel' => '<string>',
'clientEmail' => 'customer@example.com',
'anonymous' => false,
'dispatchToken' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://clientapi.woku.app/v1/ces"
payload := strings.NewReader("{\n \"score\": 4,\n \"cesToolId\": \"507f1f77bcf86cd799439011\",\n \"responseChannel\": \"<string>\",\n \"clientEmail\": \"customer@example.com\",\n \"anonymous\": false,\n \"dispatchToken\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://clientapi.woku.app/v1/ces")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"score\": 4,\n \"cesToolId\": \"507f1f77bcf86cd799439011\",\n \"responseChannel\": \"<string>\",\n \"clientEmail\": \"customer@example.com\",\n \"anonymous\": false,\n \"dispatchToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://clientapi.woku.app/v1/ces")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"score\": 4,\n \"cesToolId\": \"507f1f77bcf86cd799439011\",\n \"responseChannel\": \"<string>\",\n \"clientEmail\": \"customer@example.com\",\n \"anonymous\": false,\n \"dispatchToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cesId": "507f1f77bcf86cd799439abc",
"ces": {
"_id": "<string>",
"score": 3,
"anonymous": true,
"cesToolId": "<string>",
"clientId": "<string>",
"responseChannel": "<string>",
"commentType": "textnote",
"description": "<string>",
"transcription": "<string>",
"feedbackType": "recognition",
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"statusCode": 400,
"message": "<string>",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "Authentication required",
"error": "Forbidden"
}Autorizaciones
Clave de API de la empresa. Obtenla desde tu panel de Woku en Configuracion > API Keys. La misma clave usada para los endpoints v0.
Cuerpo
Puntaje de esfuerzo CES en una escala de 1-5.
1 <= x <= 54
Id de herramienta CES. Siempre requerido: las herramientas CES siempre son personalizadas.
^[0-9a-fA-F]{24}$"507f1f77bcf86cd799439011"
Canal de respuesta entrante opcional: whatsapp | email | review-app | widget-web | mobile-sdk | api, o una cadena definida por el usuario. Por defecto es 'api' cuando se omite; cualquier valor indicado aquí lo REEMPLAZA y se guarda tal cual (canal definido por el usuario).
48Correo del encuestado. Omitir (o marcar anonimo) para una captura anonima.
"customer@example.com"
Cuando es true, no se almacena ningun correo del encuestado.
Token opaco de envio de invitacion reflejado desde el enlace (?dtoken=). Se consume para marcar la invitacion saliente como respondida; nunca se persiste.
64