通过 TwiML 回复多个彩信图像 Twilio
Replying back with Multiple MMS Images Twilio through 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("myemail@gmail.com","Incoming Message - Twilio",util.inspect(obj));
}else{
message.body("error");
sendemail("myemail@gmail.com","Incoming Text Message with Twilio, No DATA Present","No Data");
}
callback(null, successXml(response.toString()));
}
如果我发送这样的媒体而不是它工作,message.media(obj.MediaUrl0);
但在这个例子中我需要发送两次相同的图像。我正在尝试将用户发送的彩信中继到另一个号码。限制为每条消息 10 个彩信。我尝试使用数组失败,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>
给出警告,元素类型 "Media" 必须后跟属性规范,“>”或“/>”。
我不确定该怎么做才能让它发挥作用。图像从未成功交付。有人有什么想法吗?
尝试次数:
我也试过了,message.media({"1":obj.MediaUrl0,"2":obj.MediaUrl0});
同样的错误
好的,我找到了答案,我将 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;
}
}
我有以下功能
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("myemail@gmail.com","Incoming Message - Twilio",util.inspect(obj));
}else{
message.body("error");
sendemail("myemail@gmail.com","Incoming Text Message with Twilio, No DATA Present","No Data");
}
callback(null, successXml(response.toString()));
}
如果我发送这样的媒体而不是它工作,message.media(obj.MediaUrl0);
但在这个例子中我需要发送两次相同的图像。我正在尝试将用户发送的彩信中继到另一个号码。限制为每条消息 10 个彩信。我尝试使用数组失败,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>
给出警告,元素类型 "Media" 必须后跟属性规范,“>”或“/>”。
我不确定该怎么做才能让它发挥作用。图像从未成功交付。有人有什么想法吗?
尝试次数:
我也试过了,message.media({"1":obj.MediaUrl0,"2":obj.MediaUrl0});
同样的错误
好的,我找到了答案,我将 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;
}
}