API OFICIAL BSP (FLOWS)

Comunicate con tus clientes a través de API Cloud.

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