如何使用Twilio从用户的手机号码发送文本?



我想从我的流星应用程序编程发送短信/短信;许多人为此推荐twilio,并且有几个Meteor twilio包(可以通过atmosphere和/或google/bing找到)。我不知道这些包中的一个是否一定比另一个好,但至少现在,我正在使用abhiaayer:meteor-twilio包。

我担心的是,当你创建一个Twilio帐户,他们分配给你一个"从"电话号码(你不能,显然,只是使用自己的)。也许我误解了这是如何工作的,但在我走得太远之前,我想知道短信的发送者——也就是我的应用程序的用户——是否能够使用他们的电话号码作为"来自"/发送者的电话号码。

毕竟,我的应用程序的全部意义是允许用户向朋友/家人发送多个相同的文本(例如"你在哪里?"或"你还好吗?"),然后得到他们的回复(他的手机,而不是twilio提供的号码)。

如果有可能使用Twilio与您自己的电话号码作为"从"/发送号码,有没有人对流星包的偏好(abhiaayer, andreioprisan, DispatchMe)的建议,以及如何可以从流星完成?

我想基本代码应该是差不多的,不管使用的是什么包;例如,以下是andreioprisan包

中的示例
twilio = Twilio(ACCOUNT_SID, AUTH_TOKEN);
twilio.sendSms({
to:'+16515556677', // Any number Twilio can deliver to
from: '+14506667788', // A number you bought from Twilio and can use for outbound communication
body: 'word to your mother.' // body of the SMS message
}, function(err, responseData) { //this function is executed when a response is received from Twilio
if (!err) { // "err" is an error received during the request, if any
// "responseData" is a JavaScript object containing data received from Twilio.
// A sample response from sending an SMS message is here (click "JSON" to see how the data appears in JavaScript):
// http://www.twilio.com/docs/api/rest/sending-sms#example-1
console.log(responseData.from); // outputs "+14506667788"
console.log(responseData.body); // outputs "word to your mother."
}
});

我确实创建了一个Twilio帐户,并拥有他们分配给我的帐户的"from"号码(不是我的实际手机号码)和SID,但我不知道AUTH_TOKEN应该是什么。

如果我想要的在Twilio中不可能实现,我可以做的就是编写应用程序,这样所有选择的"to"号码都可以复制到剪贴板中,这样用户就可以将它们粘贴到他的短信屏幕的"收件人"文本框中;但我希望给用户提供只需点击一个按钮的奢侈体验。

我不认为你可以这样做(从用户自己的手机号码使用Twilio发送)。如果你的应用是一个真正的手机应用而不是网页应用,你可以使用Android或iOS api从用户的手机发送短信。我不确定这方面的细节,当然在iOS中,你似乎不能完全自动地做到这一点,原因很明显(例如,你可以直接向所有用户的联系人发送垃圾邮件,这将给用户带来金钱成本)。

这里有一个Cordova插件,可以做你想要的:https://github.com/cordova-sms/cordova-sms-plugin(我没有使用它,所以不能保证它,但它似乎是积极维护)。

如果它是一个web应用程序,你的建议复制数字到剪贴板是迄今为止最直接的解决方案,我会建议在第一个实例。为了完整起见,我在下面列出了一些细节和注意事项,说明如何以几种方式与Twilio(或Nexmo等替代品)进行双向通信,以防有人觉得有用。但这并不是微不足道的。单向通信容易得多!


通过API发送

用户在你的应用程序中输入一条消息并选择发送给谁。然后你的应用程序连接到服务器,服务器使用Twilio API向N个接收者发送N条消息。这些消息将显示来自twilio提供的号码。

短信发送

用户手动发送短信到你的Twilio号码,然后你收到一个webhook到你的服务器从Twilio与消息的详细信息。您必须进行处理以确定将消息转发给谁,然后使用Twilio API来完成此工作。同样,收件人将看到来自twilio提供的号码的消息。

回复当收件人回复消息时,Twilio会向您发送带有详细信息的webhook,您可以确定是谁发送了原始消息并将回复转发给原始发件人。

池数量

这里一个明显的缺陷是,如果多个用户向同一个人发送消息,那么没有办法知道他们在回复哪条消息。没有消息id通过短信传递,所以你必须使用多个发送号码(每个唯一的发件人一个特定的收件人)。所需的号码数量基本上是一个用户必须回复的不同发件人的最多数量(这通常不可能事先计算出来,因此您必须调用API来动态地提供一个新号码)。

给出一个更具体的例子,假设你有2个用户(S1),S2)和3个接收者(R1)R2,,R3)。您有1个twilio提供的号码(N1)) .

  • S1发送消息给R1通过你的应用程序,你使用N1通过Twilio API发送消息。R1接收到来自N1的消息. 如果他们回复,您将收到一条消息到N1R1所以你需要把它转发到S1.

  • S1发送消息给R2R2还没有收到任何消息,所以可以重用N1发送信息。R2回复N1你可以把它转发到S1. 如果这是在应用内发送的,没有其他问题,如果回复是通过短信转发的,那么我们需要提供一个新的号码(N2)。)启用S1回复R2回复。

  • S2发送消息给R3通过你的应用程序,像以前一样,你可以重用N1并且仍然正确地发送回复。

  • 现在如果S2发送消息给R1,我们意识到R1已收到来自S1的消息使用numberN1. 在这种情况下,我们不能使用N1因为我们无法确定回复的对象。如果还没有,我们需要配置一个新的号码(N2)),现在我们可以发送消息,所以R1. 当R1响应N2我们知道应答需要转发到S2.

发送给一个收件人的用户越多,您的号码池就越大(也越昂贵)。实现某种超时(比如72小时)让收件人可以回复可能是值得的。在这种情况下,如果在S1之后超时发送消息给R1通过N1,我们可以重用N1S2之间的通信和R1. 显然,这不是完全万无一失的,但它可以降低成本。

身份从合用号码发送的另一个问题。我通过一个应用程序给Dan发了一条消息,他从一个随机数中接收到这条消息:

嗨,丹,你好吗?Dan怎么知道是谁发的消息?您必须为每条消息(或者至少是每个会话线程中的第一个消息)添加一些标识符。

最新更新