API Cloud (Flows)
Podrás enviar tu flow de WhatsApp una vez que lo hayas creado. En esta página, exploraremos las API existentes para enviar mensajes, así como las modificaciones necesarias para enviar un mensaje con Flow.
Puedes enviar un mensaje con un flujo en una conversación iniciada por el usuario mediante un mensaje con un llamado a la acción (CTA). Envía este mensaje a través del cliente local o API en la nube con información de flujo específica. El flujo se activa cuando el usuario toca el botón CTA.
Para más información de todos los endpoints que tenemos a continuación es bueno consultar: https://developers.facebook.com/docs/whatsapp/flows/reference/flowsapi https://developers.facebook.com/docs/whatsapp/flows/reference/flowjson
Los endpoints que se ponen a continuación se pueden consultar con varias versiones de Meta, es importante en cada url establecer la versión (VERSION) de meta que se utilizará.
La variable VERSION de debe expresar con la letra ‘v’ y sus valores serán: v16.0, v17.0, v18.0, v19.0
Crear nuevo flow
Path:
POST /flows/VERSION/{did}
-
Request
-
Body
{
"name": "My first flow",
"categories": [ "APPOINTMENT_BOOKING" ],
"clone_flow_id":"clone ID", // Optional
"endpoint_uri": "Endpoint URI" // Optional
}
Descripcion de propiedades
Fields | Type | Comentario |
---|---|---|
name | String | Nombre del flow |
categories | Array | Una lista de categorías de flujo. Son posibles varios valores, pero se requiere al menos uno. La lista de valores: SIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY, OTHER |
clone_flow_id | String | ID del flujo de origen a clonar. |
endpoint_uri | String | The URL of the WA Flow Endpoint. |
Response
Status Code 200
{
"id": "id_created_flow"
}
Actualizar flow
Una vez creado el flow se puede actualizar llamando al endpoint correspondiente y enviando los campos a actualizar con los nuevos valores.
Pueden ser actualizadas los siguientes parámetros:
- name
- categories
- endpoint_uri
Path:
PUT /flows/VERSION/{did}/{flowId}
-
Request
-
Body
{
"name": "New flow name"
}
Descripcion de propiedades
Fields | Type | Comentario |
---|---|---|
name | String | Nombre del flow |
categories | Array | Una lista de categorías de flujo. Son posibles varios valores, pero se requiere al menos uno. La lista de valores: SIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY, OTHER |
endpoint_uri | String | URL del WA Flow Endpoint. |
Response
Status Code 200
{
"success": true
}
Actualizar flow a traves de un flow json
Para actualizar el flow mediante un flow json se deben enviar los parametros que se muestran a continuación como form-data:
Path:
POST /flows/VERSION/{did}/{flowId}/assets
- Request
file=@"/path/to/file" type=application/json'
form 'name="flow.json"'
form 'asset_type="FLOW_JSON"'
- Body
{
"name": "New flow name"
}
Descripcion de propiedades
Fields | Type | Comentario |
---|---|---|
name | String | Nombre del json |
file | String | path hasta el file en cuestión |
asset_type | String | Valor constante ‘FLOW_JSON’ |
A continuación ejemplos documentados de la estructura de ese flow.json https://developers.facebook.com/docs/whatsapp/flows/reference/flowjson
Response
Status Code 200
En caso de que exista algun error en la validación del flow, la respuesta, incluso siendo exitosa contendrá las caracteristicas del mismo
{
"success": true,
"validation_errors": [
{
"error": "INVALID_PROPERTY",
"error_type": "JSON_SCHEMA_ERROR",
"message": "The property \"initial-text\" cannot be specified at \"$root/screens/0/layout/children/2/children/0\".",
"line_start": 46,
"line_end": 46,
"column_start": 17,
"column_end": 30
}
]
}
Para más información remitirse a la web oficial de meta: https://developers.facebook.com/docs/whatsapp/flows/reference/flowsapi
Eliminar flow
Los flows se podrán eliminar de la siguiente manera:
Path:
DELETE /flows/VERSION/{did}/{flowId}
Response
Status Code 200
{
"success": true
}
Obtener flow preview
Path:
GET /flows/VERSION/{did}/{flowId}/preview
Response
Status Code 200
{
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/550.../preview/?token=b9d6....",
"expires_at": "2023-05-21T11:18:09+0000"
},
"id": "flow-1"
}
Publicar un flow
Path:
GET /flows/VERSION/{did}/{flowId}/publish
Response
Status Code 200
{
"success": true
}
Listar los assets de un flow
Path:
GET /flows/VERSION/{did}/{flowId}/assets
Response
Status Code 200
{
"data": [
{
"name": "flow.json",
"asset_type": "FLOW_JSON",
"download_url": "https://scontent.xx.fbcdn.net/m1/v/t0.57323-24/An_Hq0jnfJ..."
}
],
"paging": {
"cursors": {
"before": "QVFIU...",
"after": "QVFIU..."
}
}
}
Deprecar un flow
Path:
GET /flows/VERSION/{did}/{flowId}/deprecate
Response
Status Code 200
{
"success": true
}
Obtener lista de los flows
Path:
GET /flows/VERSION/{did}
Response
Status Code 200
{
"data": [
{
"id": "flow-1",
"name": "flow 1",
"status": "DRAFT",
"categories": [ "CONTACT_US" ],
"validation_errors": []
},
{
"id": "flow-2",
"name": "flow 2",
"status": "PUBLISHED",
"categories": [ "SURVEY" ],
"validation_errors": []
}
],
"paging": {
"cursors": {
"before": "QVFI...",
"after": "QVFI..."
}
}
}
Obtener detalles de los flow
Path:
GET /flows/VERSION/{did}/{flowId}/details
Response
Status Code 200
{
"id": "<Flow-ID>",
"name": "<Flow-Name>",
"status": "DRAFT",
"categories": [ "LEAD_GENERATION" ],
"validation_errors": [],
"json_version": "3.0",
"data_api_version": "3.0",
"endpoint_uri": "https://example.com",
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/55000..../preview/?token=b9d6.....",
"expires_at": "2023-05-21T11:18:09+0000"
},
"whatsapp_business_account": {
},
"application": {
}
}
Descripcion de propiedades
Fields | Type | Comentario |
---|---|---|
id | String | id único del flow |
name | String | nombre del flow |
status | String | DRAFT,PUBLISHED, DEPRECATED, BLOCKED,THROTTLED |
categories | Lista | Lista de las categoría |
validation_errors | Lista | Lista de errores |
json_version | String | version de JSON |
data_api_version | String | version del api |
endpoint_uri | String | Uri del endpoint |
preview | String | url del preview del flow |
whatsapp_business_account | String | Objeto con la información del business account |
application | String | Objeto con la información del application en cuestión |