使用 Twilio.TwimlResponse() 发送彩信
Send MMS using Twilio.TwimlResponse()
我正在使用带有 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
被采用小写。那部分一切正常。我只是不知道如何附加媒体 url。
如有任何提示,我们将不胜感激!
编辑 -
这是一种基于链接文档的尝试,我认为它根本不起作用,但重新安排了我设置的属性的顺序,我发现我只是没有适当地设置到/从数字.我知道没有传入的 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 被忽略,导致响应从接收原始消息的号码返回到发送用户。
我认为您混淆了 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
});
我正在使用带有 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
被采用小写。那部分一切正常。我只是不知道如何附加媒体 url。
如有任何提示,我们将不胜感激!
编辑 -
这是一种基于链接文档的尝试,我认为它根本不起作用,但重新安排了我设置的属性的顺序,我发现我只是没有适当地设置到/从数字.我知道没有传入的 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 被忽略,导致响应从接收原始消息的号码返回到发送用户。
我认为您混淆了 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
});