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

B. *_*non 2 sms twilio meteor

我想以编程方式从我的Meteor应用发送短信/短信;很多人为此推荐twilio,并且有几种Meteor Twilio软件包(可通过大气和/或谷歌搜索/ bing找到)。我不知道这些软件包中的一个是否绝对比另一个软件包更好,但是至少到目前为止,我正在使用abhiaayer:meteor-twilio软件包。

我担心的是,当您创建Twilio帐户时,他们会为您分配一个“发件人”电话号码(您显然不能使用自己的电话号码)。也许我误会了它的工作原理,但是在我走得太远之前,我想知道SMS的发送者(我的应用程序用户IOW)是否可以将电话号码用作“来自” /发件人的电话号码。

毕竟,我的应用程序的全部目的是允许用户向朋友/家人发送多个相同的文本(例如“你在哪里?”或“你还好吗?”),然后从他们那里得到答复。 (通过他的电话,而不是Twilio提供的号码)。

如果可以将Twilio与您自己的电话号码一起用作“发件人” /发送号码,是否有人对Meteor软件包的首选项(abhiaayer,andreioprisan,DispatchMe)有任何建议,以及如何从Meteor做到这一点?

我想像,无论使用什么软件包,基本代码都差不多。例如,这是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."
    }
});
Run Code Online (Sandbox Code Playgroud)

我确实创建了一个Twilio帐户,并为其分配了我的帐户和SID,并使用了“发件人”号码(而不是我的实际手机号码),但是我不知道AUTH_TOKEN应该是什么。

如果Twilio无法实现我的期望,我只需要编写应用程序,以便将所有选定的“收件人”号码都可以复制到剪贴板,以便用户可以将其粘贴到他的SMS屏幕的“收件人”文本框中。 ; 但我希望为用户提供轻点按钮即可的豪华体验。

Mic*_*son 5

我认为您无法做到这一点(使用Twilio从用户自己的手机号发送)。如果您的应用程序是实际的移动应用程序而不是Web应用程序,则可以使用Android或iOS API从用户的手机发送短信。我不确定具体细节,当然对于iOS,由于明显的原因,您似乎无法完全自动执行此操作(例如,您可能会向所有用户的联系人发送垃圾邮件,这会给用户带来金钱上的损失) )。

这里有一个Cordova插件,可以执行您想要的操作:https : //github.com/cordova-sms/cordova-sms-plugin(我没有使用过,因此无法担保,但似乎已经得到了积极维护)。

如果它是一个Web应用程序,那么您建议将数字复制到剪贴板是迄今为止最直接的解决方案,我建议首先使用。为了完整起见,我在下面提供了一些细节和注意事项,以防万一有人觉得有帮助的情况下如何使用Twilio(或Nexmo等替代品)进行双向通信。不过,这并不简单。1路通信是很多更轻松!


通过API发送

用户从您的应用中键入一条消息,然后选择发送给谁。然后,您的应用程序连接到服务器,该服务器使用Twilio API向N个收件人发送N条消息。这些消息似乎来自Twilio提供的号码。

通过短信发送

用户手动将SMS发送到您的Twilio号码,然后您会收到来自Twilio到服务器的Webhook,其中包含消息详细信息。您必须进行处理以找出将消息转发给谁,然后使用Twilio API来完成。收件人将再次看到来自Twilio提供的号码的消息。

回覆

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

号码池

这里的明显缺陷之一是,如果多个用户向同一个人发送一条消息,则无法告诉他们正在回复哪条消息。SMS没有传递任何消息ID,因此您必须使用多个发送号码(每个发送给特定收件人的唯一发件人一个)。所需的号码数量基本上是一个用户必须答复的最多不同发件人数量(通常无法事先解决,因此您必须调用API来即时配置新号码)。

举一个更具体的例子,假设您有2个用户(S1S2)和3个收件人(R1R2R3)。您有1个Twilio提供的号码(N1)。

  • S1通过您的应用程序向R1发送消息,您使用N1通过Twilio API发送消息。R1N1接收消息。如果他们答复,您会从R1收到一条消息给N1,因此您知道需要将其转发到S1

  • S1通过您的应用程序向R2发送消息,R2尚未收到任何消息,因此您可以重用N1发送消息。R2回复N1,您可以再次将其转发到S1。如果这是在应用内交付的,则没有其他问题,如果答复是通过SMS转发的,则我们需要提供一个新号码(N2),以使S1能够答复R2的答复。

  • S2通过您的应用程序向R3发送一条消息,就像您可以重用N1一样,仍然可以正确路由回复。

  • 现在,如果S2R1发送一条消息,我们就会意识到R1已经使用数字N1S1接收了消息。在这种情况下,我们无法使用N1,因为我们无法确定回复的对象。如果还没有,我们需要提供一个新的数字(N2),现在我们可以发送消息给R1了。当R1回复N2时,我们知道该回复需要转发到S2

发送给一个收件人的用户越多,您的号码池就越大(且价格更高)。实施某种超时(例如72小时)以使收件人可以回复可能是值得的。因此,在这种情况下,如果在S1通过N1R1发送消息后超时已过期,我们可以将N1重新用于S2R1之间的通信。显然,这并非万无一失,但可以降低成本。

身分识别

从汇总号码发送的另一个问题。我通过应用程序向Dan发送了一条消息,他从一个随机数中收到了该消息:

嗨,丹,你好吗?

Dan怎么知道谁发了消息?您必须在每封邮件中添加一些标识符(或至少在每个会话线程中添加第一个标识符)。