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 se debe expresar con la letra ‘v’: v16.0, v17.0, v18.0, v19.0.
Crear nuevo flow
Request
POST /flows/{VERSION}/{did}
curl --request POST \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}' \
--header 'Authorization: <JWT>' \
--header 'Content-Type: application/json' \
--data '{
"name": "My first flow",
"categories": [ "APPOINTMENT_BOOKING" ],
"clone_flow_id": "clone ID",
"endpoint_uri": "Endpoint URI"
}'Propiedades:
| Campo | Tipo | Descripción |
|---|---|---|
name | String | Nombre del flow. |
categories | Array | Lista de categorías de flujo. Se requiere al menos uno. 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 | URL del WA Flow Endpoint. |
Response
Éxito (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 actualizarse: name, categories, endpoint_uri.
Request
PUT /flows/{VERSION}/{did}/{flowId}
curl --request PUT \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}' \
--header 'Authorization: <JWT>' \
--header 'Content-Type: application/json' \
--data '{
"name": "New flow name"
}'Propiedades:
| Campo | Tipo | Descripción |
|---|---|---|
name | String | Nombre del flow. |
categories | Array | Lista de categorías de flujo. Se requiere al menos uno. Valores: SIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY, OTHER. |
endpoint_uri | String | URL del WA Flow Endpoint. |
Response
Éxito (200)
{
"success": true
}Actualizar flow a través de un flow json
Para actualizar el flow mediante un flow json se deben enviar los parámetros que se muestran a continuación como form-data:
Request
POST /flows/{VERSION}/{did}/{flowId}/assets
curl --request POST \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}/assets' \
--header 'Authorization: <JWT>' \
-F 'file=@/path/to/file;type=application/json' \
-F 'name=flow.json' \
-F 'asset_type=FLOW_JSON'Propiedades:
| Campo | Tipo | Descripción |
|---|---|---|
name | String | Nombre del json. |
file | String | Path hasta el archivo en cuestión. |
asset_type | String | Valor constante FLOW_JSON. |
Para ejemplos documentados de la estructura de ese flow.json, consulta https://developers.facebook.com/docs/whatsapp/flows/reference/flowjson
Response
Éxito (200)
En caso de que exista algún error en la validación del flow, la respuesta, incluso siendo exitosa, contendrá las características 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, consulta la web oficial de Meta: https://developers.facebook.com/docs/whatsapp/flows/reference/flowsapi
Eliminar flow
Request
DELETE /flows/{VERSION}/{did}/{flowId}
curl --request DELETE \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}' \
--header 'Authorization: <JWT>'Response
Éxito (200)
{
"success": true
}Obtener flow preview
Request
GET /flows/{VERSION}/{did}/{flowId}/preview
curl --request GET \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}/preview' \
--header 'Authorization: <JWT>'Response
Éxito (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
Request
POST /flows/{VERSION}/{did}/{flowId}/publish
curl --request POST \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}/publish' \
--header 'Authorization: <JWT>'Response
Éxito (200)
{
"success": true
}Listar los assets de un flow
Request
GET /flows/{VERSION}/{did}/{flowId}/assets
curl --request GET \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}/assets' \
--header 'Authorization: <JWT>'Response
Éxito (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
Request
POST /flows/{VERSION}/{did}/{flowId}/deprecate
curl --request POST \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}/deprecate' \
--header 'Authorization: <JWT>'Response
Éxito (200)
{
"success": true
}Obtener lista de los flows
Request
GET /flows/{VERSION}/{did}
curl --request GET \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}' \
--header 'Authorization: <JWT>'Response
Éxito (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
Request
GET /flows/{VERSION}/{did}/{flowId}/details
curl --request GET \
--url 'https://channels.chattigo.com/bsp-cloud-chattigo-isv/flows/{VERSION}/{did}/{flowId}/details' \
--header 'Authorization: <JWT>'Response
Éxito (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": {}
}Propiedades:
| Campo | Tipo | Descripción |
|---|---|---|
id | String | ID único del flow. |
name | String | Nombre del flow. |
status | String | DRAFT, PUBLISHED, DEPRECATED, BLOCKED, THROTTLED. |
categories | Lista | Lista de las categorías. |
validation_errors | Lista | Lista de errores. |
json_version | String | Versión de JSON. |
data_api_version | String | Versión de la 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 de la aplicación en cuestión. |