Objetos personalizados

La Messages API tiene el concepto de objeto personalizado. El objeto personalizado permite aprovechar las funciones avanzadas de las plataformas de mensajería compatibles, como Facebook Messenger, WhatsApp y Viber.

El objeto personalizado toma una sección parcial del formato de solicitud de la API de la plataforma de mensajería subyacente y la envía directamente a dicha plataforma.

Utilizando WhatsApp a modo de ejemplo, para la siguiente llamada a Messages API:

{
  "to": "447700900000",
  "from": "447700900001",
  "channel": "whatsapp",
  "message_type": "custom",
  "custom": {$CUSTOM_OBJECT}
}

Vonage enviaría lo siguiente a WhatsApp:

{
  "recipient_type": "individual",
  "to": "$TO_NUMBER",
  {$CUSTOM_OBJECT}
}

El JSON en CUSTOM_OBJECT depende del formato de la plataforma de mensajería para el tipo de solicitud que quieras realizar.

Si la solicitud de WhatsApp era:

{
  "recipient_type": "individual",
  "to": "447700900000",
  "type": "template",
  "template": {
    "namespace": "whatsapp:hsm:technology:nexmo",
    "name": "parcel_location",
    "language": {
      "policy": "deterministic",
      "code": "en"
    },
    "components": [
      {
        "type": "location",
        "location": {
          "longitude": -122.425332,
          "latitude": 37.758056,
          "name": "Facebook HQ",
          "address": "1 Hacker Way, Menlo Park, CA 94025"
        }
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Value 1"
          },
          {
            "type": "text",
            "text": "Value 2"
          },
          {
            "type": "text",
            "text": "Value 3"
          }
        ]
      }
    ]
  }
}

El formato de la solicitud de la Messages API sería el siguiente:

{
  "to": "447700900000",
  "from": "447700900001",
  "channel": "whatsapp",
  "message_type": "custom",
  "custom": {
    "type": "template",
    "template": {
      "namespace": "whatsapp:hsm:technology:nexmo",
      "name": "parcel_location",
      "language": {
        "policy": "deterministic",
        "code": "en"
      },
      "components": [
        {
          "type": "header",
          "parameters": [
            {
              "type": "location",
              "location": {
                "longitude": -122.425332,
                "latitude": 37.758056,
                "name": "Facebook HQ",
                "address": "1 Hacker Way, Menlo Park, CA 94025"
              }
            }
          ]
        },
        {
          "type": "body",
          "parameters": [
            {
              "type": "text",
              "text": "Value 1"
            },
            {
              "type": "text",
              "text": "Value 2"
            },
            {
              "type": "text",
              "text": "Value 3"
            }
          ]
        }
      ]
    }
  }
}

El objeto personalizado, CUSTOM_OBJECT, tal y como se define en el formato de la solicitud original, es:

  "type": "template",
  "template": {
    "namespace": "whatsapp:hsm:technology:nexmo",
    "name": "parcel_location",
    "language": {
      "policy": "deterministic",
      "code": "en"
    },
    "components": [
      {
        "type": "location",
        "location": {
          "longitude": -122.425332,
          "latitude": 37.758056,
          "name": "Facebook HQ",
          "address": "1 Hacker Way, Menlo Park, CA 94025"
        }
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Value 1"
          },
          {
            "type": "text",
            "text": "Value 2"
          }
        ]
      }
    ]
  }

Ten en cuenta que al utilizar objetos personalizados, el formato de propiedades como el código de idioma debe coincidir con el de la plataforma de destino. Por ejemplo, en el formato subyacente de los mensajes de WhatsApp, los códigos de idioma tienen la forma en_GB, no en-GB.

Plantillas de mensajes de Facebook Messenger

Puedes utilizar objetos personalizados para enviar plantillas de mensajes de Facebook Messenger. Por ejemplo

{
  "to": $FB_RECIPIENT_ID,
  "from": $FB_SENDER_ID,
  "channel": "messenger",
  "message_type": "custom",
  "custom": {$CUSTOM_OBJECT}
}

El mensaje de la Messages API se transformaría en algo similar a lo siguiente:

{
  "recipient":{
    "id":"<PSID>"
  },
  "message":{
    $CUSTOM_OBJECT
  }
}

Cuando el objeto personalizado, $CUSTOM_OBJECTpuede ser cualquier cosa dentro del Objeto de mensaje de mensajería.

Ver más ejemplos