Crear un Canal personalizado en Dynamics 365 for Marketing (II)

En la primera parte de esta serie de entradas, hemos visto como crear el fichero de configuración de un canal personalizado para Dynamics 365 for Marketing. Ahora vamos a ver como podemos crear un proceso que haga los envíos de WhatsApp y además genere interacciones con el contacto. Para ello vamos a utilizar el servicio de Twilio que será el encargado de enviar los mensajes vía WhatsApp en nuestro caso.


Los canales personalizados de Marketing generan un registro de actividad de canal personalizado (msdyncrm_customerjourneycustomchannelactivity) cuando el contacto ha pasado por uno de ellos. Vamos a utilizar la creación de este registro como desencadenador de un Power Automate que solicitará a Twilio el envío del mensaje.

Paso 3: Crear un flujo de trabajo o complemento para implementar lógica personalizada (Guía para desarrolladores de Dynamics 365 Marketing) | Microsoft Docs


Además del proceso de Power Automate, hemos de crear una tabla de logs para registrar las interacciones de nuestro canal y poder guardar el ID del envío que hace Twilio. Esta tabla es necesaria, una vez el contacto haya interactuado con el mensaje, para poder recoger esta interacción que enviará el servicio de Twilio, que explicaré con más detalle en la parte 3.


Parte 1. Crear una tabla de logs


La tabla debe contener los siguientes campos personalizados:

  • Channel Activity record de tipo lookup a la tabla Actividad de canal personalizado (msdyncrm_customerjourneycustomchannelactivity)

  • MessageID de tipo texto para recoger el ID del mensaje de Twilio.

  • ResponseType de tipo texto para recoger la respuesta para nuestro canal.

Una vez creada la tabla, vamos a crear nuestro Power Automate.


Parte 2. Crear un Power Automate para el envío de WhatsApps.


Como hemos dicho, nuestro desencadenador será la creación de un registro de actividad personalizada y del registro generado obtendremos la plantilla de WhatsApp utilizada (Creada en la tabla de configuración que vimos en la primera parte) y también el contacto.


Después agregaremos dos variables, una para el From y otra para el To con este formato


whatsapp:+34612345678

Para que no nos omita el "+" podemos utilizar la expresión EncodeUriComponent.


Una vez tenemos los teléfonos, haremos la llamada a Twilio. El Body lo habremos obtenido de la plantilla de WhatsApp.



A continuación, hemos de agregar nuestro log a la tabla que hemos creado previamente y generar la interacción con nuestro contacto dentro de Dynamics 365 for Marketing.

Interacción de creación de actividades de canal personalizado (Guía para desarrolladores de Dynamics 365 Marketing) | Microsoft Docs

Lo primero será parsear la respuesta que nos envía Twilio una vez realizada la llamada al servicio:


{
    "type": "object",
    "properties": {
        "sid": {
            "type": "string"
        },
        "date_created": {
            "type": "string"
        },
        "date_updated": {
            "type": "string"
        },
        "date_sent": {},
        "account_sid": {
            "type": "string"
        },
        "to": {
            "type": "string"
        },
        "from": {
            "type": "string"
        },
        "messaging_service_sid": {},
        "body": {
            "type": "string"
        },
        "status": {
            "type": "string"
        },
        "num_segments": {
            "type": "string"
        },
        "num_media": {
            "type": "string"
        },
        "direction": {
            "type": "string"
        },
        "api_version": {
            "type": "string"
        },
        "price": {},
        "price_unit": {},
        "error_code": {},
        "error_message": {},
        "uri": {
            "type": "string"
        },
        "subresource_uris": {
            "type": "object",
            "properties": {
                "media": {
                    "type": "string"
                }
            }
        }
    }
}

Después, generaremos la interacción, y para ello utilizaremos un compose. La finalidad de esta caja es que al agregar la acción mediante el output de la misma, no aparezca el diseñador con sus campos si no que deje introducir el código tal y como veis en la imagen ya que es mucho más simple de esta forma.


Para finalizar este proceso deberemos crear nuestro log.


Así es como quedaría la creación de interacciones para el caso success y para el caso de error.




Parte 3. Recibir interacciones desde el servicio de Twilio.


Vamos a generar otro Power automate cuyo desencadenador será un post desde el servicio de Twilio que nos devolverá el MessageID y la ResponseType.



La url generada por el desencadenador, deberá agregarse en la configuración de WhatsApp de Twilio.

La expresión body es la siguiente:

body('Filter_array_MessageId')[0]?['value']

Una vez tenemos el MessageId recogeremos el log generado previamente en el envío, y para asegurarnos que este log ha sido creado, ya que los tiempos entre el sent y el delivered pueden ser muy cortos, haremos un "Repetir hasta" que dispongamos de un registro para ese MessageId en la tabla de logs.




Por último, crearemos nuestro log y nuestra interacción con el contacto.



Si quisiéramos ver estas interacciones en Dynamics 365 for marketing, deberemos ir al formulario del contacto, al control de la pestaña de Insights (Información detallada).