Join us in San Francisco on the 29/30th of October for two days of developer workshops and technical talks

Send a Facebook message with failover

Sending a Facebook message with failover to another channel is achieved by making a single request to the Dispatch API endpoint.

In this example you will implement the following workflow:

  1. Send a Facebook Messenger message to the user using the Messages API.
  2. If the failover condition is met proceed to the next step. In this example the failover condition is the message not being read.
  3. Send an SMS to the user using the Messages API.
Key Description
FROM_NUMBER The phone number you are sending the message from. Don't use a leading + or 00 when entering a phone number, start with the country code, for example, 447700900000.
FB_SENDER_ID Your Page ID. The FB_SENDER_ID is the same as the to.id value you received in the inbound messenger event on your Inbound Message Webhook URL.
FB_RECIPIENT_ID The PSID of the user you want to reply to. The FB_RECIPIENT_ID is the PSID of the Facebook User you are messaging. This value is the from.id value you received in the inbound messenger event on your Inbound Message Webhook URL.

Example

Write the code

Add the following to send-message-with-failover.sh:

Copy to Clipboard
curl -X POST https://api.nexmo.com/v0.1/dispatch \
  -H 'Authorization: Bearer '$JWT\
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d $'{
    "template":"failover",
    "workflow": [
      {
        "from": { "type": "messenger", "id": '$FB_SENDER_ID' },
        "to": { "type": "messenger", "id": '$FB_RECIPIENT_ID' },
        "message": {
          "content": {
            "type": "text",
            "text": "This is a Facebook Messenger Message sent via the Dispatch API"
          }
        },
        "failover":{
          "expiry_time": 600,
          "condition_status": "read"
        }
      },
      {
        "from": {"type": "sms", "number": '$FROM_NUMBER'},
        "to": { "type": "sms", "number": '$TO_NUMBER'},
        "message": {
          "content": {
            "type": "text",
            "text": "This is an SMS sent via the Dispatch API"
          }
        }
      }
    ]
  }'

View full source

Run your code

Save this file to your machine and run it:

bash send-message-with-failover.sh

Prerequisites

Install dependencies

npm install nexmo@beta

Write the code

Add the following to send-failover-sms-facebook.js:

Copy to Clipboard
const Nexmo = require('nexmo')

const nexmo = new Nexmo({
  apiKey: NEXMO_API_KEY,
  apiSecret: NEXMO_API_SECRET,
  applicationId: NEXMO_APPLICATION_ID,
  privateKey: NEXMO_APPLICATION_PRIVATE_KEY_PATH
})

nexmo.dispatch.create("failover", [
  {
    "from": { "type": "messenger", "id": "FB_SENDER_ID" },
    "to": { "type": "messenger", "id": "FB_RECIPIENT_ID" },
    "message": {
      "content": {
        "type": "text",
        "text": "This is a Facebook Messenger message sent from the Dispatch API"
      }
    },
    "failover":{
      "expiry_time": 600,
      "condition_status": "read"
    }
  },
  {
    "from": {"type": "sms", "number": "FROM_NUMBER"},
    "to": { "type": "sms", "number": "TO_NUMBER"},
    "message": {
      "content": {
        "type": "text",
        "text": "This is an SMS sent from the Dispatch API"
      }
    }
  },
  (err, data) => { console.log(data.dispatch_uuid); }
])

View full source

Run your code

Save this file to your machine and run it:

node send-failover-sms-facebook.js

Sending a Facebook message with failover

The Dispatch API provides the ability to create message workflows with failover to secondary channels. This task looks at using the Dispatch API to send a Facebook message with failover to the SMS channel.

Steps