Objetos personalizados

A Messages API possui o conceito de objeto personalizado. O objeto personalizado permite que você aproveite recursos avançados das plataformas de mensagens compatíveis, como o Facebook Messenger, o WhatsApp e o Viber.

O objeto personalizado utiliza uma parte do formato de solicitação da API da plataforma de mensagens subjacente e a envia diretamente para essa plataforma.

Tomando o WhatsApp como exemplo, para a seguinte chamada à Messages API:

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

A Vonage enviaria o seguinte para o WhatsApp:

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

O JSON em CUSTOM_OBJECT Depende do formato da plataforma de mensagens para o tipo de solicitação que você deseja fazer.

Se a solicitação do WhatsApp fosse:

{
  "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"
          }
        ]
      }
    ]
  }
}

O formato da solicitação da Messages API seria:

{
  "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"
            }
          ]
        }
      ]
    }
  }
}

O objeto personalizado, CUSTOM_OBJECT, conforme definido no formato original da solicitação, é:

  "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"
          }
        ]
      }
    ]
  }

Observe que ao utilizar objetos personalizados, o formato de propriedades como o código de idioma deve corresponder ao da plataforma de destino. Por exemplo, no formato de mensagem subjacente do WhatsApp, os códigos de idioma têm o formato en_GB, não en-GB.

Modelos de mensagens do Facebook Messenger

Você pode usar objetos personalizados para enviar modelos de mensagens no Facebook Messenger. Por exemplo:

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

A mensagem da Messages API seria transformada em algo semelhante ao seguinte:

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

Quando o objeto personalizado, $CUSTOM_OBJECT, pode ser qualquer coisa que esteja dentro do Objeto de mensagem do Messenger.

Veja mais exemplos