我正在使用带有 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' 没有方法 '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);
});
此代码片段适用于正文和媒体,与文档类似,但在设置为
时崩溃
编辑 - 我尝试将 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 被忽略,导致响应从接收原始消息的号码返回到发送用户。
最佳答案
我认为您对 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
由于某些用户需要迁移大部分代码库,因此您可以通过以下方式使用 SDK 2.0 设置不同的数字。
twimlResp.message(function() {
this.body(body);
this.media(media0);
}, {
to: sendTo,
from: sendFrom
});
关于twilio - 使用 Twilio.TwimlResponse() 发送彩信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943435/