2

I have set the project up as described in the blog post Twilio WhatsApp API and Flex in Minutes.

I followed the instructions and even after repeating the process twice, on two different accounts, when I send the message (through sandbox), the following error occurs:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'Enqueue'. One of '{Sms, Message, Redirect}' is expected.

The task does not show in Flex.

I have tried checking what WhatsApp sends vs what is sent when SMS arrives. This is what a simple function says about trigger.message for SMS:

{
    EventType=onMessageSent,
    InstanceSid=IS5aa457db5a2d44049c95f2d0b2699f56,
    Attributes={\"proxied\":true}, 
    DateCreated=2019-01-16T12:37:43.664Z, 
    Index=3, 
    From=sms_g13aggbhlwpgk7tbah3llj2kyjpsvvju, 
    MessageSid=IM9123e909eeda41ac92890201a6c3f1b4, 
    Source=API, 
    AccountSid=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 
    ChannelSid=CHbc79143368db4680a66c6c504103619f, 
    RetryCount=0, 
    ClientIdentity=sms_g13aggbhlwpgk7tbah3llj2kyjpsvvju, 
    WebhookType=studio, 
    To=CHbc79143368db4680a66c6c504103619f, 
    Body=Test Message, 
    ChannelAttributes={
        status=ACTIVE, 
        forwarding=true, 
        serviceNumber=sms_g13aggbhlwpgk7tbah3llj2kyjpsvvju, 
        twilioNumber=+1228xxxxxxx, 
        from=+44798xxxxxxx, 
        channel_type=sms, 
        proxySession=KC1be96a19ed42aca39f9b6a9f06c26997
    }, 
    WebhookSid=WHcfc83a43a7c2424693fd0053b8b00a01
}

This is what is shows for WhatsApp message:

{
    ApiVersion=2010-04-01, 
    SmsSid=SMb44cfdb4854c41e9ee255032a5449199, 
    SmsStatus=received, 
    SmsMessageSid=SMb44cfdb4854c41e9ee255032a5449199, 
    NumSegments=1, 
    From=whatsapp:+44798xxxxxxx, 
    To=whatsapp:+1228xxxxxxx, 
    MessageSid=SMb44cfdb4854c41e9ee255032a5449199, 
    Body=Test Message, 
    AccountSid=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 
    NumMedia=0
}

As you can see, the ChannelAttributes and ChannelSid are missing, and this is what Flex uses.

I then tried to transform the response with a function:

exports.handler = function(context, event, callback) {    
    let response;
    if (!event.message.ChannelAttributes) {
        response = {
            name: event.message.From,
            channelType: 'sms',
            channelSid: 'CHbc79143368db4680a66c6c504103619f'
        };
    }
    else {
        response = {
            name: "WhatsApp_" + event.message.ChannelAttributes.from,
            channelType: event.message.ChannelAttributes.channel_type,
            channelSid: event.message.ChannelSid
        };
    }

    const twilioResponse = new Twilio.Response();
    twilioResponse.setStatusCode(200);
    twilioResponse.appendHeader('Content-Type', 'application/json');
    twilioResponse.setBody(response);

    callback(null, twilioResponse);
};

And assign the attributes in Studio like:

{
    "name":"{{widgets.MyFunction.body.name}}",
    "channelType":"{{widgets.MyFunction.body.channelType}}",
    "channelSid":"{{widgets.MyFunction.body.channelSid}}"
}

Unfortunately, this shows the same error.

Jezor
  • 3,253
  • 2
  • 19
  • 43
  • What URL do you have for your WhatsApp sandbox config when a message comes in? Is it a message handler URL? Also, have you run the curl command to set up Flex? – philnash Jan 19 '19 at 00:33
  • @philnash it got solved now, I think I didn't put `whatsapp:` prefix when setting up Flex with cURL command. – Jezor Jan 21 '19 at 12:52
  • 1
    Ah! Glad you got that fixed, thanks for letting me know. – philnash Jan 21 '19 at 21:22

0 Answers0