使用Twilio.TwimlResponse()发送彩信
我正在使用一个带有webhook的节点服务器来处理接收到我的一个号码的Twilio消息。我使用这个号码在用户之间转发通信,本质上是为他们匿名(他们用我们的号码通信,所以他们不必把他们的号码给其他用户) 在我的处理程序中,我目前基本上是这样做的:使用Twilio.TwimlResponse()发送彩信,twilio,twilio-twiml,Twilio,Twilio Twiml,我正在使用一个带有webhook的节点服务器来处理接收到我的一个号码的Twilio消息。我使用这个号码在用户之间转发通信,本质上是为他们匿名(他们用我们的号码通信,所以他们不必把他们的号码给其他用户) 在我的处理程序中,我目前基本上是这样做的: var sendTo = /* other user's number */; var sendFrom = /* sender number in received message */; var body = /* body of message r
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”没有“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
采用小写。那部分很好用。我只是不知道如何附加媒体url
任何提示都将不胜感激
编辑-
这里是一个基于链接文档的尝试,我认为它根本不起作用,但是重新安排了我设置的属性顺序,我发现我只是没有适当地设置到/从数字。我知道一个没有传入的twiml会根据收到消息的号码自动响应发送消息的号码。我需要指定这两个值,因为我正在将一个用户的消息转发给另一个用户
twimlResp.message(function() {
this.body(body);
this.media(media0);
this.to(sendTo);
this.from(sendFrom);
});
此代码段适用于正文和媒体,与文档类似,但在将设置为
时崩溃
编辑-我已尝试将this.更改为和this.从更改为this.到和this.from
,但这些都不起作用
我也试过:
twimlResp.message(function() {
this.body(body);
this.media(media0);
});
twimlResp.to = sendTo;
twimlResp.from = sendFrom;
这也不起作用-.to和.from被忽略,导致响应从接收原始消息的号码返回给发送用户。我认为您已经混淆了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());
如果您需要更深入地了解我是如何制定此代码的,请查看。我假设您对切换SDK版本没有任何限制,我给出3.0 SDK示例的原因是Twilio将从2017年8月31日起停止支持2.0 SDK
如何使用SDK 2.0
由于一些用户将需要迁移其大部分代码库,下面介绍如何使用SDK 2.0设置不同的“到”和“从”数字
twimlResp.message(function() {
this.body(body);
this.media(media0);
}, {
to: sendTo,
from: sendFrom
});
完全没有注意到SDK开关。还不知道SDK对2.x的支持已经结束。假设我应该继续更新。。。不过,我目前在package.json中有2.11.1作为我的版本。那么,考虑到我使用的是2.x示例,为什么试图复制他们的示例对我不起作用呢?我有没有可能在2.x中做类似的事情?看来我必须更新一些代码才能准备好3.x,而且我有一些用户在不知不觉中现在没有发送彩信,所以我想尽快发布一个修补程序。@JakeT。您是否仍有抛出错误的代码:“this'has not method'To'?我刚刚重新编写了它,但这次重新安排了顺序,以便它首先设置body和media,而那些没有抛出错误的代码。以前,我尝试设置的第一个属性是to
,但似乎设置得不正确。我将在问题的末尾添加一个关于当前设置的代码片段,只需要知道如何将“收件人/发件人”编号传递到其中。我现在正在查看遗留源代码。如果你想看看我在哪里找到答案,