我正在使用带有webhook的节点服务器来处理接收我的某个号码的Twilio消息。我使用这个号码来转发用户之间的通信,基本上为他们匿名(他们与我们的号码通信,所以他们不必将他们的号码交给其他用户)。
在我的经纪人中,我目前基本上是这样做的:
var sendTo = /* other user's number */;
var sendFrom = /* sender number in received message */;
var body = /* body of message received */;
twimlResponse(body, {
to: sendTo,
from: sendFrom
});
response.send(twimlResponse.toString());
这适用于短信。但是,我的调试日志显示没有正文的媒体消息的错误(一般情况下也不转发媒体,因为我目前还没有告诉它)。
所以,我正在尝试更新以发送媒体消息。这不太好用。
然而,它不起作用。我收到错误'this' has no method 'To'
。
我尝试了一点修改我的代码,
var sendTo = /* other user's number */;
var sendFrom = /* sender number in received message */;
var body = /* body of message received */;
var mediaUrl = /* mediaUrl0 of the received message */
if( body && mediaUrl ) {
twimlResponse(body, {
to: sendTo,
from: sendFrom,
mediaUrl: mediaUrl
});
}
else if( body ) {
twimlResponse(body, {
to: sendTo,
from: sendFrom
});
}
else if( mediaUrl ) {
twimlResponse(nil, {
to: sendTo,
from: sendFrom,
mediaUrl: mediaUrl
});
}
response.send(twimlResponse.toString());
我还没有确认最后一个是否正确发送没有正文的消息,但我的问题是我无法弄清楚如何告诉twiml响应包含媒体。我已尝试Media
,media
,MediaUrl
,MediaUrl0
,mediaUrl0
和mediaUrl
。每次我在调试器中收到警告,说它是一个无效的名词。 Twiml文档说明名词应该区分大小写并且大写,但出于某种原因,to
和from
被视为小写。这部分一切正常。我只是无法弄清楚如何附加媒体网址。
任何提示都表示赞赏!
编辑 -
这是基于链接文档的一次尝试,我认为它根本不起作用,但是重新安排我设置的属性的顺序,我看到我只是没有恰当地设置数字。我知道没有那些传入的twiml会自动响应发送消息的号码,从收到它的号码开始。我需要指定这两个值,因为我将一个用户的消息转发给另一个用户。
twimlResp.message(function() {
this.body(body);
this.media(media0);
this.to(sendTo);
this.from(sendFrom);
});
此代码段适用于正文和媒体,与文档类似,但在设置to
修改 - 我尝试将this.to
和this.from
更改为this.To
和this.From
,但这些不起作用。
我也试过这个:
twimlResp.message(function() {
this.body(body);
this.media(media0);
});
twimlResp.to = sendTo;
twimlResp.from = sendFrom;
哪个也不起作用 - .to和.from被忽略,导致响应从收到原始邮件的号码返回给发送用户。
答案 0 :(得分:2)
我认为你在2.0和3.0 SDK之间感到困惑。您可以通过单击示例屏幕的右上角来更改SDK版本。
提供您的示例,使用3.0 SDK,您可以通过以下方式实现此目的:
var MessagingResponse = require('twilio').twiml.MessagingResponse;
var twiml = new MessagingResponse();
// Place your constraints here
var message = twiml.message({ to: sendTo, from: sendFrom });
if( body && mediaUrl ) {
message.body(body);
message.media(mediaUrl);
}
else if( body ) {
messsage.body(body);
}
else if( mediaUrl ) {
messsage.media(mediaUrl);
}
response.send(twiml.toString());
如果您需要更深入地详细说明我如何制定此代码,请查看MessagingResposne.js source。我假设您对切换SDK版本没有任何限制,我给出3.0 SDK示例的原因是因为Twilio将在2017年8月31日结束对2.0 SDK的支持。
由于某些用户需要迁移大部分代码库,因此您可以使用SDK 2.0设置与数字不同的数字。
twimlResp.message(function() {
this.body(body);
this.media(media0);
}, {
to: sendTo,
from: sendFrom
});