Crear conversación
curl --request POST \
--url https://api.example.com/conversations \
--header 'Content-Type: application/json' \
--data '
{
"assistant_id": "<string>",
"type": "<string>",
"variables": {
"customer_name": "<string>",
"company": "<string>",
"source": "<string>"
}
}
'import requests
url = "https://api.example.com/conversations"
payload = {
"assistant_id": "<string>",
"type": "<string>",
"variables": {
"customer_name": "<string>",
"company": "<string>",
"source": "<string>"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
assistant_id: '<string>',
type: '<string>',
variables: {customer_name: '<string>', company: '<string>', source: '<string>'}
})
};
fetch('https://api.example.com/conversations', 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://api.example.com/conversations",
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([
'assistant_id' => '<string>',
'type' => '<string>',
'variables' => [
'customer_name' => '<string>',
'company' => '<string>',
'source' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"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://api.example.com/conversations"
payload := strings.NewReader("{\n \"assistant_id\": \"<string>\",\n \"type\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"company\": \"<string>\",\n \"source\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.example.com/conversations")
.header("Content-Type", "application/json")
.body("{\n \"assistant_id\": \"<string>\",\n \"type\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"company\": \"<string>\",\n \"source\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"assistant_id\": \"<string>\",\n \"type\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"company\": \"<string>\",\n \"source\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"history": [
{
"role": "assistant",
"content": "Hello John Smith! Welcome to Acme Corp support. How can I help you today?"
}
]
}
{
"status": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"history": []
}
{
"status": false,
"error": "Assistant not found"
}
{
"status": false,
"error": "Insufficient balance. Please top up your account."
}
Chatbot de IA
Crear conversación
Inicia una nueva sesión de conversación con un chatbot de IA de Famulor mediante la API. Inicializa el contexto, los metadatos de usuario y el canal para WhatsApp, chat web o chat de voz.
POST
/
conversations
Crear conversación
curl --request POST \
--url https://api.example.com/conversations \
--header 'Content-Type: application/json' \
--data '
{
"assistant_id": "<string>",
"type": "<string>",
"variables": {
"customer_name": "<string>",
"company": "<string>",
"source": "<string>"
}
}
'import requests
url = "https://api.example.com/conversations"
payload = {
"assistant_id": "<string>",
"type": "<string>",
"variables": {
"customer_name": "<string>",
"company": "<string>",
"source": "<string>"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
assistant_id: '<string>',
type: '<string>',
variables: {customer_name: '<string>', company: '<string>', source: '<string>'}
})
};
fetch('https://api.example.com/conversations', 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://api.example.com/conversations",
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([
'assistant_id' => '<string>',
'type' => '<string>',
'variables' => [
'customer_name' => '<string>',
'company' => '<string>',
'source' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"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://api.example.com/conversations"
payload := strings.NewReader("{\n \"assistant_id\": \"<string>\",\n \"type\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"company\": \"<string>\",\n \"source\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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://api.example.com/conversations")
.header("Content-Type", "application/json")
.body("{\n \"assistant_id\": \"<string>\",\n \"type\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"company\": \"<string>\",\n \"source\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"assistant_id\": \"<string>\",\n \"type\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"company\": \"<string>\",\n \"source\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"history": [
{
"role": "assistant",
"content": "Hello John Smith! Welcome to Acme Corp support. How can I help you today?"
}
]
}
{
"status": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"history": []
}
{
"status": false,
"error": "Assistant not found"
}
{
"status": false,
"error": "Insufficient balance. Please top up your account."
}
API de Famulor 1.0 (legado). Esta página se aplica únicamente a Famulor 1.0 (
app.famulor.de) y se conserva por compatibilidad. Para la plataforma actual, usa la referencia de la API de Famulor 2.0.Cuerpo de la solicitud
string
requerido
UUID del asistente que debe gestionar la conversación
string
predeterminado:"widget"
Tipo de conversación. Opciones:
widget (de pago) o test (gratis para desarrollo)object
Variables personalizadas inyectadas en el contexto del asistente (accesibles mediante
{{variable_name}})Ejemplos de solicitud
Campos de la respuesta
boolean
requerido
Indica si la solicitud se realizó correctamente
string
requerido
UUID de la conversación creada; úsalo para los mensajes posteriores
array
Ejemplos de respuesta
{
"status": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"history": [
{
"role": "assistant",
"content": "Hello John Smith! Welcome to Acme Corp support. How can I help you today?"
}
]
}
{
"status": true,
"conversation_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"history": []
}
{
"status": false,
"error": "Assistant not found"
}
{
"status": false,
"error": "Insufficient balance. Please top up your account."
}
Notas
- Las conversaciones con
type: "widget"se facturan;type: "test"es gratis para desarrollo. - Proporciona
variablescon contenido relevante para personalizar la primera respuesta del asistente. - Continúa el chat con
Enviar mensajey obtén el historial conObtener conversación.
⌘I