Saltar al contenido

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:

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:

CampoTipoDescripción
nameStringNombre del flow.
categoriesArrayLista 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_idStringID del flujo de origen a clonar.
endpoint_uriStringURL 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:

CampoTipoDescripción
nameStringNombre del flow.
categoriesArrayLista 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_uriStringURL 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:

CampoTipoDescripción
nameStringNombre del json.
fileStringPath hasta el archivo en cuestión.
asset_typeStringValor 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:

CampoTipoDescripción
idStringID único del flow.
nameStringNombre del flow.
statusStringDRAFT, PUBLISHED, DEPRECATED, BLOCKED, THROTTLED.
categoriesListaLista de las categorías.
validation_errorsListaLista de errores.
json_versionStringVersión de JSON.
data_api_versionStringVersión de la API.
endpoint_uriStringURI del endpoint.
previewStringURL del preview del flow.
whatsapp_business_accountStringObjeto con la información del business account.
applicationStringObjeto con la información de la aplicación en cuestión.