Administrar webhooks

De forma predeterminada, todos los agentes creados a través de la API de RBM Management usan un solo webhook para las notificaciones. Este webhook a nivel del socio se configura en Play Console de RCS para empresas y se aplica a todos los agentes de tu cuenta de socio.

Como alternativa, puedes usar la API de RBM Management para configurar webhooks a nivel del agente. Esta puede ser una buena opción si administras varios agentes con un comportamiento distinto.

Los fragmentos de código de esta página se tomaron de las muestras de Java y las muestras de Node.js.

Crea una integración de webhook

Para agregar una integración de webhook del agente, primero define la URL de tu webhook y un token de validación. Luego, configura el webhook para que siga los pasos de validación. Una vez que lo hayas configurado, llama al método createWebhookIntegration con los valores de la URL y el token. Si esa llamada se ejecuta correctamente, puedes continuar con la verificación y el control de los mensajes entrantes.

Para obtener más información, consulta brands.agents.integrations y brands.agents.integrations.create.

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

const url = 'https://myrbmserviceendpoint.somewhere.com/callback';

const token = '123456';

businessCommunicationsApiHelper
  .createWebhookIntegration(agent.name, url, token)
  .then((response) => {
    console.log(JSON.stringify(response.data, null, 2));
  }).catch((err) => {
    console.log(err);
  }
);

Este código devuelve el nuevo objeto de webhook:

{
  "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_hfaoplpu_agent/integrations/4efdb82f-fd6d-4ba4-8ea3-f2f4a60d1547",
  "status": "ENABLED",
  "agentWebhookIntegration": {
    "webhookUri": "https://myrbmserviceendpoint.somewhere.com/callback"
  }
}

Cómo buscar las integraciones de webhook de un agente

Puedes recuperar una lista de todas las integraciones de webhook que pertenecen a un agente. En la práctica, un agente de RBM solo tiene una integración de webhook. Para obtener más información, consulta brands.agents.integrations.list.

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

businessCommunicationsApiHelper
  .listAgentIntegrations(agent.name)
  .then((response) => {
    console.log(JSON.stringify(response.data, null, 2));
    datastore.saveJsonData('integrations', response.data);
  }).catch((err) => {
    console.log(err);
  });

Este código devuelve una lista de las integraciones de webhook del agente:

{
  "integrations": [
    {
      "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_hfaoplpu_agent/integrations/4efdb82f-fd6d-4ba4-8ea3-f2f4a60d1547",
      "status": "ENABLED",
      "agentWebhookIntegration": {
        "webhookUri": "https://myrbmserviceendpoint.somewhere.com/callback"
      }
    }
  ]
}

Cómo buscar los detalles de una integración

Puedes recuperar los detalles de la integración si tienes la referencia a una integración. Si deseas obtener más información, consulta brands.agents.integrations.get.

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

businessCommunicationsApiHelper
  .getAgentIntegration(integrations.integrations[0].name)
  .then((response) => {
    console.log(JSON.stringify(response.data, null, 2));
  }).catch((err) => {
    console.log(err);
  });

Este código devuelve los detalles de la integración del webhook:

{
  "name": "brands/40bd963f-ff92-425c-b273-8f0892d2d017/agents/my_new_agent_hfaoplpu_agent/integrations/4efdb82f-fd6d-4ba4-8ea3-f2f4a60d1547",
  "status": "ENABLED",
  "agentWebhookIntegration": {
    "webhookUri": "https://myrbmserviceendpoint.somewhere.com/callback"
  }
}

Cómo quitar un webhook

Puedes quitar un webhook de un agente con su referencia. Para obtener más información, consulta brands.agents.integrations.delete.

Node.js

const businessCommunicationsApiHelper =
  require('@google/rbm-businesscommunications');

const privateKey =
  require('../../resources/businesscommunications-service-account-credentials.json');

businessCommunicationsApiHelper.initBusinessCommunucationsApi(privateKey);

businessCommunicationsApiHelper
  .deleteAgentIntegration(integrations.integrations[0].name)
  .then((response) => {
    console.log(JSON.stringify(response.data, null, 2));
  }).catch((err) => {
    console.log(err);
  });

Se devuelve un objeto vacío:

{}