当前位置: 首页 > 知识库问答 >
问题:

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

龚沛
2023-03-14

我想从我的流星应用程序编程发送短信/短信;许多人为此推荐twilio,有几个Meteor twilio包(可通过大气和/或谷歌/绑定找到)。我不知道这些软件包中是否有一个比另一个更好,但至少现在,我使用的是Abhiaayer:meteor-twilio软件包。

我担心的是,当您创建Twilio帐户时,他们会给您分配一个“发件人”电话号码(显然,您不能使用自己的电话号码)。也许我误解了这是如何工作的,但在我深入这条道路之前,我想知道SMS的发送者--也就是我的应用程序的用户--是否能够使用他们的电话号码作为“发件人”/发送者电话号码。

毕竟,我的应用程序的全部意义在于允许用户发送多个相同的文本(例如“你在哪里?”或“你还好吗?”)给朋友/家人,然后从他们那里得到回复(给他的电话,而不是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帐户,并有他们分配给我的帐户的“发件人”号码(不是我实际的手机号码)和SID,但我不知道AUTH_TOKEN应该是什么。

如果我打算从Twilio不可能,我可以做的只是编写应用程序,以便所有选择的“收件人”号码可以复制到剪贴板,这样用户可以粘贴到他的短信屏幕的“收件人”文本框;但我希望给用户提供简单点击按钮的奢侈体验。

共有1个答案

季博
2023-03-14

我不认为你能做到这一点(使用Twilio从用户自己的手机号发送)。如果你的应用程序是一个真正的移动应用程序,而不是一个网络应用程序,你可以使用Android或iOS API从用户的手机发送短信。我不确定这方面的细节,当然,在iOS系统中,由于明显的原因,你似乎不能完全自动地做到这一点(例如,你可以发送所有用户的联系人,这将给用户带来金钱成本)。

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

如果它是一个web应用程序,您建议将数字复制到剪贴板是迄今为止最简单的解决方案,我建议在第一个实例中这样做。为了完整起见,我在下面包含了一些细节和注意事项,说明如何通过几种方式使用Twilio(或Nexmo等替代方案)进行双向通信,以防有人发现它有帮助。但这并不是微不足道的。单向沟通容易多了!

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

用户手动发送一个SMS到您的Twilio号码,然后您从Twilio收到一个带有消息详细信息的webhook到您的服务器。您必须执行处理以确定将消息转发给谁,然后使用Twilio API来执行此操作。收件人将再次看到来自Twilio提供的号码的消息。

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

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

举一个更具体的例子,假设您有2个用户(S1和S2)和3个收件人(R1,R2和R3)。您有1个Twilio提供的数字(N1)。

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

现在,如果S2向R1发送了一个消息,我们就会意识到R1已经从S1收到了使用N1号的消息。在这种情况下,我们不能使用N1,因为我们不能确定答复是针对谁的。如果我们还没有,我们需要提供一个新的号码(N2),现在我们可以发送消息所以R1。当R1回复N2时,我们知道该回复需要转发给S2。

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

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

 类似资料:
  • 它说。 我的问题是,你如何“在你的Twilio账户中拥有一个电话号码”?这是否意味着我可以让我的用户选择他们的电话号码,然后添加到我的Twilio帐户,然后用他们的号码发送短信?

  • 我是Twilio的新手 下面是我使用C#发送whatsapp消息的代码 提前谢了。

  • 我使用相同的代码成功地发送了许多带有图像(jpg文件)的消息。我会尝试mp3、mp4、ogg和aac文件类型,但不起作用。 这是Twilio控制台中的错误消息: 错误-12300无效的内容类型Twilio无法处理提供的URL的内容类型。有关有效内容类型的更多信息,请参见Twilio标记XML文档。 消息Msg“试图检索MediaUrl返回了不受支持的内容类型。”

  • 我面临着不同类型的问题。我正在我的应用程序中使用Firebase手机号码认证。当我试图将OTP发送到我使用的同一个手机号码时,OTP不会发送。然而,如果我从我的手机向其他手机发送OTP,则OTP正在发送。我还发现,如果我从另一个手机发送OTP到我的号码,OTP就来了。因此没有手机号码的问题。调试时,我发现这个代码块不起作用 对于其他数字,它正在工作,验证和forceResendingToken正在

  • 我如何使用Flutter以编程方式获取运行我的android应用程序的设备的电话号码? 我知道我们可以使用以下语法在android Studio中轻松做到这一点: 但是如何使用颤振来做到这一点?

  • 嗨, 谢谢你,也很抱歉西班牙语的命名,我知道这让阅读代码变得有点困难。