You are able to send your WhatsApp Flow once you have created it. On this page, we will explore the existing APIs for message sending, as well as the modifications required for sending a message with a Flow.
You can send a Message with a Flow in a user-initiated conversation using a Message with a Call To Action (CTA). You send this message either through the On-Prem client or Cloud API with information specific to the Flow. The Flow is triggered when the user taps the CTA button.
Go here to read more about message types, limits, and timing.
As mentioned earlier, a message with a Flow is not much different from other types of messages. It uses the existing APIs, which are described on the following pages:
To send a message with a Flow, we have introduced a new type of the Interactive Object named flow
with the following properties.
interactive
type
"flow"
.action
name
"flow"
.parameters
mode
draft
or published
mode. published
)flow_message_version
"3"
.flow_token
flow_id
flow_cta
flow_action
navigate
or data_exchange
. navigate
)flow_action_payload
flow_action
is navigate
. Should be omitted otherwise. Parameter | Description |
---|---|
screen
string
|
The ID of the screen displayed first. It needs to be an entry screen*. |
data
object
|
Optional input data for the first Screen of the Flow. If provided, this must be a non-empty object. |
*See Flow JSON reference for entry screen details.
Now let's consider what a message sending request might look like using Cloud API:
Sample Request
curl -X POST \ 'https://graph.facebook.com/v18.0/FROM_PHONE_NUMBER/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "recipient_type": "individual", "messaging_product": "whatsapp", "to": "whatsapp-id", "type": "interactive", "interactive": { "type": "flow", "header": { "type": "text", "text": "Flow message header" }, "body": { "text": "Flow message body" }, "footer": { "text": "Flow message footer" }, "action": { "name": "flow", "parameters": { "flow_message_version": "3", "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s.", "flow_id": "1", "flow_cta": "Book!", "flow_action": "navigate", "flow_action_payload": { "screen": "<SCREEN_NAME>", "data": { "product_name": "name", "product_description": "description", "product_price": 100 } } } } } }'
Sample Response
{ "contacts": [ { "Input": "+447385946746", "wa_id": "47385946746" } ], "messages": [ { "id": "gHTRETHRTHTRTH-av4Y" } ], "meta": { "api_status": "stable", "version": "2.44.0.27" } }
You can send a template message with a WhatsApp Flow. Only published Flows can be sent this way. We introduced a new button type called FLOW. Use this type to specify the Flow to be sent with the template message.
First you need to create a template . Here is an example request:
curl -i -X POST \ https://graph.facebook.com/v16.0/<waba-id>/message_templates \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' \ -d' { "name": "example_template_name", "language": "en_US", "category": "MARKETING", "components": [ { "type": "body", "text": "This is a flows as template demo" }, { "type": "BUTTONS", "buttons": [ { "type": "FLOW", "text": "Open flow!", "flow_id": "<flow-id>", "navigate_screen": "Flows Json screen name", "flow_action": "navigate" } ] } ] }'
Parameter | Description |
---|---|
buttons
|
|
↳
flow_id
string
|
The unique ID of a Flow. |
↳
nagivate_screen
string
|
Required if flow_action
is navigate
.
The unique ID of the Screen in the Flow. |
↳
flow_action
string
|
Either navigate
or data_exchange
. (Default value:
navigate
) |
You are able to send messages in these languages .
{ "id": "<template-id>", "status": "PENDING", "category": "MARKETING" }
Ensure that your template passes all required reviews so that status
is APPROVED
instead of PENDING
.
Now you can send a template message with a Flow using the following request:
curl -X POST \ 'https://graph.facebook.com/v16.0/FROM_PHONE_NUMBER_ID/messages' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "template", "template": { "name": "TEMPLATE_NAME", "language": { "code": "LANGUAGE_AND_LOCALE_CODE" }, "components": [ { "type": "button", "sub_type": "flow", "index": "0", "parameters": [ { "type": "action", "action": { "flow_token": "FLOW_TOKEN", //optional, default is "unused" "flow_action_data": { ... } // optional, json object with the data payload for the first screen } } ] } ] } }'
{ "messaging_product": "whatsapp", "contacts": [ { "input": "<phone-number>", "wa_id": "<phone-number>" } ], "messages": [ { "id": "<message-id>" } ] }