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 Facebook Messenger message is not read after 600 seconds then the workflow will failover to the following step.
  3. Send an SMS to the user using the Messages API. The FROM_NUMBER is the number you are sending a message from. TO_NUMBER is the recipient's phone number.
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.
TO_NUMBER The recipient's phone number. 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:

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

npm install @vonage/server-sdk@beta

Write the code

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

const Vonage = require("@vonage/server-sdk");

const vonage = new Vonage({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH
});

vonage.dispatch.create(
  "failover",
  [
    {
      from: { type: "messenger", id: FB_SENDER_ID },
      to: { type: "messenger", id: FB_RECIPIENT_ID },
      message: {
        content: {
          type: "text",
          text: "Dispatch API: Message 1"
        }
      },
      failover: {
        expiry_time: 60,
        condition_status: "read"
      }
    },
    {
      from: { type: "sms", number: FROM_NUMBER },
      to: { type: "sms", number: TO_NUMBER },
      message: {
        content: {
          type: "text",
          text: "Dispatch API: Message 2"
        }
      }
    }
  ],
  (err, data) => {
    if (err) {
      console.error(err);
    } else {
      console.log(data.dispatch_uuid);
    }
  }
);

View full source

Run your code

Save this file to your machine and run it:

node send-failover-facebook-sms.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