2015-01-28 3 views
0

Я использую модуль NodeJS Twilio & API для отправки MMS-сообщений с прикрепленными изображениями (с удаленного URL-адреса), и я хочу удалить экземпляры Media, которые создайте на серверах Twilio, как только я отправлю сообщения.Twilio & NodeJS: не удается найти и удалить экземпляры/ресурсы СМИ

Мои сообщения отправляются правильно, и в обратном вызове я пытаюсь: 1) указать экземпляры медиа для текущего сообщения, затем 2) пропустить эти экземпляры и удалить. Проблема в том, что массив mediaList, возвращающийся из API для текущего сообщения, всегда пуст.

Вот мой код:

twilio_client.messages.create({ 
    body: "Thanks for taking a photo. Here it is!", 
    to: req.query.From, 
    from: TWILIO_SHORTCODE, 
    mediaUrl: photo_URL, 
    statusCallback: STATUS_CALLBACK_URL 
    }, function(error, message) { 
     if (!error) { 

      twilio_client.messages(message.sid).media.list(function(err, data) { 
       console.log(data); 
       // The correct object comes back as 'data' here per the API 
       // but the mediaList array is empty 
      } 

      console.log('Message sent via Twilio.'); 
      res.status(200).send(''); 
     } else { 
      console.log('Could not send message via Twilio: '); 
      console.log(error); 
      res.status(500).send(''); 
     } 
}); 

ответ

1

Таким образом, получается, что пытается получить список средств массовой информации в точке я пытался не работает, потому что случаи массовой информации еще не существовало.

У меня есть отдельное маленькое приложение, работающее на statusCallback (я предоставляю URL-адрес через константу в коде выше, STATUS_CALLBACK_URL), который до сих пор просто проверял, чтобы узнать, было ли сообщение, которое я пытался передать MMS пользователю, t правильно обработано Twilio, и предупредил пользователя о проблеме с помощью SMS. Итак, я добавил чек в том же приложении, чтобы узнать, действительно ли сообщение было отправлено пользователю, а затем проверено и удалено медиа-экземпляр, связанный с сообщением в этой точке, и он отлично работает. Вот мой код:

// issue message to user if there's a problem with Twilio getting the photo 
if (req.body.SmsStatus === 'undelivered' || req.body.SmsStatus === 'failed') { 
    twilio_client.messages.create({ 
    body: "We're sorry, but we couldn't process your photo. Please try again.", 
    to: req.body.To, 
    from: TWILIO_SHORTCODE 
    }, function(error, message) { 
     if (!error) { 
      console.log('Processing error message sent via Twilio.'); 
      res.send(200,''); 
     } else { 
      console.log('Could not send processing error message via Twilio: ' + error); 
      res.send(500); 
     } 
    }); 
} 

// delete media instance from Twilio servers 
if (req.body.SmsStatus === 'sent') { 
    twilio_client.messages(req.body.MessageSid).media.list(function(err, data) { 
     if (data.media_list.length > 0) { 
      data.media_list.forEach(function(mediaElement) { 
       twilio_client.media(mediaElement.sid).delete; 
       console.log("Twilio media instance deleted"); 
      }); 
     } 
    }); 
} 
Смежные вопросы