Documentation Index
Fetch the complete documentation index at: https://docs.volubile.ai/llms.txt
Use this file to discover all available pages before exploring further.
Fournissez l’URL de Webhook où vous souhaitez que Volubile envoie les notifications dans les Paramètres d’intégration Webhook
Webhook payload
Une fois un appel terminé ou échoué, une requête POST sera envoyée à votre URL de Webhook avec les détails de l’appel. Identique à l’endpoint Get a call.
{
"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId":"3c90c3cc-0d44-4b50-8888-8dd25736052a",
"phone":"+33612345678",
"type":"INBOUND",
"duration":360,
"startTime":"2024-07-30T14:35:00Z",
"endTime":"2024-07-30T14:41:00Z",
"anonymous":false,
"status":"COMPLETED",
"extractors":[
{
"name":"customer",
"value":[
{
"name":"firstname",
"value":[
"John"
]
},
{
"name":"lastname",
"value":[
"Doe"
]
},
{
"name":"address",
"value":[
"123 Main St"
]
}
]
},
{
"name":"example",
"value":[
"example1",
"example2"
]
}
],
"extractedData":{
"customer":{
"firstname":"John",
"lastname":"Doe",
"address":"123 Main St"
},
"example":"example1"
},
"classifiers":[
{
"name":"Customer's request",
"value":"Refund"
},
{
"name":"Sentiment",
"value":"Positive"
}
],
"classificationData":{
"Customer's request":"Refund",
"Sentiment":"Positive"
},
"context":{
"firstName":"firstname",
"lastName":"lastname",
"commandNumber":"5HZ99FRT",
"system.phone":"+33612345678"
},
"recorded":true,
"summary":"Discussed project requirements and next steps.",
"created":"2024-07-30T14:45:00Z"
}
Sécuriser le webhook
Vous pouvez choisir d’activer la sécurité pour les webhooks en générant un secret dans les Paramètres d’intégration Webhook.
Lorsqu’elle est activée, nous inclurons un X-Webhook-Signature dans les en-têtes de requête vers votre URL de Webhook, vous permettant de vérifier que la payload provient de Volubile.
Voici un exemple de code démontrant comment vérifier la signature HMAC :
import org.apache.commons.codec.binary.Hex;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import static java.nio.charset.StandardCharsets.UTF_8;
...
final var SECRET_KEY = "{volubile - webhook - secret}";
final var payload = """
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "INBOUND",
...
}
""";
try {
final var mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(SECRET_KEY.getBytes(UTF_8), "HmacSHA256"));
final byte[] rawHmac = mac.doFinal(payload.getBytes());
final byte[] hexBytes = new Hex().encode(rawHmac);
final var signature = new String(hexBytes, UTF_8);
...
} catch (final NoSuchAlgorithmException | InvalidKeyException e) {
logger.error("Error occurred!");
}
Retry des webhooks
Si votre serveur retourne une erreur 50x (code d’erreur 500 ou supérieur), nous rejouerons la requête jusqu’à 4 fois avec un délai incrémental de 1 seconde afin de pas surcharger vos serveurs.