Ответ с несколькими изображениями MMS Twilio через TwiML

У меня есть следующая функция

export function incoming_message(event, context, callback) {
  var qs = require('qs');
  var util = require('util');

  const MessagingResponse = require('twilio').twiml.MessagingResponse;
  const response = new MessagingResponse();
  const message = response.message({to:"+15621112222"});

  var queryString = event.body;
  if(queryString != "" && queryString != null && queryString !== undefined){
    var obj = qs.parse(queryString);
    message.body(obj.Body);

    if(obj.NumMedia > 0){
      message.media([obj.MediaUrl0,obj.MediaUrl0]);
    }

    sendemail("[email protected]","Incoming Message - Twilio",util.inspect(obj));
  }else{
    message.body("error");
    sendemail("[email protected]","Incoming Text Message with Twilio, No DATA Present","No Data");
  }

  callback(null, successXml(response.toString()));
}

Если вместо этого я отправлю медиаданные таким образом, это сработает, message.media(obj.MediaUrl0); но в этом примере мне нужно отправить одно и то же изображение дважды. Я пытаюсь ретранслировать MMS-сообщения, отправленные пользователем на другой номер. Ограничение составляет 10 MMS на сообщение. Моя попытка использовать массив не удалась, и Twilio вернул это как сгенерированный XML.

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Message to="+14079470503">
        <Body>Teeeeeee</Body>
        <Media 0="https://api.twilio.com/2010-04-01/Accounts/ACb07efd8168f1be2d5e109f66002ed172/Messages/MM29c53d31a3aa1f6cf70bcd92b6d0031d/Media/MEc9c082a5266668b61b0bb6fa13272bf8" 1="https://api.twilio.com/2010-04-01/Accounts/ACb07efd8168f1be2d5e109f66002ed172/Messages/MM29c53d31a3aa1f6cf70bcd92b6d0031d/Media/MEc9c082a5266668b61b0bb6fa13272bf8"/>
    </Message>
</Response>

Он выдал предупреждение: За типом элемента "Медиа" должны следовать спецификации атрибута: ">" или "/>".

Я не уверен, что делать, чтобы заставить это работать. Изображение никогда не доставляется успешно. Любые идеи?

Попытки:

Я тоже пробовал это, message.media({"1":obj.MediaUrl0,"2":obj.MediaUrl0}); та же ошибка


person Joseph Astrahan    schedule 25.11.2017    source источник


Ответы (1)


Хорошо, нашел ответ, я изменил свой оператор if на оператор switch, подобный этому. Хитрость заключается в вызове message.media() каждый раз для каждого нового изображения.

if(obj.NumMedia > 0){
      switch(obj.NumMedia){
        case "10":
          message.media(obj.MediaUr10);
        case "9":
          message.media(obj.MediaUrl9);
        case "8":
          message.media(obj.MediaUrl8);
        case "7":
          message.media(obj.MediaUrl7);
        case "6":
          message.media(obj.MediaUrl6);
        case "5":
          message.media(obj.MediaUrl4);
        case "4":
          message.media(obj.MediaUrl3);
        case "3":
          message.media(obj.MediaUrl2);
        case "2":
          message.media(obj.MediaUrl1);
        case "1":
          message.media(obj.MediaUrl0);
          break;
      }
    }
person Joseph Astrahan    schedule 25.11.2017