1

我即将开始在我的 Web 应用程序中构建 SMS 警报功能。目的是提供两种服务:

  1. 主办方付费 - 例如发送短信提醒用户取消活动
  2. 用户付费 - 例如提醒已发送一封电子邮件,其中包含新事件的详细信息(显然是用户离开电子邮件系统时的要求!)

我还认为,还会有其他用户付费场景,例如他们是否有想要提醒的辅助手机,因为主机只想为每个用户支付一部手机。

根据我的研究:

  1. 我可以使用第 3 方 SMS 网关提供商。每条消息的费用约为 0.05 英镑。我可以向 999999999@TheGatewayProvider.com 发送电子邮件,也可以在 URL 中使用带有合适参数的 HTTP 请求。

  2. 我可以向用户的网络提供商发送电子邮件(我相信这仅在美国可用)

编辑各种提供者将如何处理发件人/主题和消息存在差异,因此发送的实际消息的呈现可能难以预测。

  1. 我可以建立自己的网关(我认为这超出了我的能力范围,可能会给我们的数据中心带来悲痛!)

让我印象深刻的是:

我们发送的电子邮件有时会在我的服务器的 SMTP 队列中延迟,更不用说任何下游队列了。向网络提供商的 SMS 网关发送电子邮件似乎通常被视为低优先级。

因此,第三方 SMS 网关提供商的 HTTP 应该给我最短的延迟(对于“今天下午的活动因天气恶劣而取消”很重要)

当我偶尔从手机发送短信时,它们需要几天才能到达 - 我想这是我们必须忍受的事情?

话虽如此,我们也会有低优先级的信息消息,并且通过最便宜的路线发送这些消息很有吸引力!所以我计划允许用户为此类消息输入电子邮件地址 - 目的是他们将电子邮件地址用于其手机公司的 SMS 重定向服务或类似服务(即设备的电子邮件地址,而不是收件箱) .

我还想知道允许用户输入 IM、Twitter 或其他类似的东西在实践中是否可能会被很好地使用和有效?

从我看过的第 3 方网关看来:

有些人使用比其他人更高等级的网络,这可能会影响性能吗?(或者它只是营销废话?)

有些提供比其他更好的反馈。我需要将关于计费的争论——以及客户到底用了多少“信用”——保持在最低限度;因此,得到“OK”/“电话号码不存在”的答复让我觉得很重要。我发现的一个提供商每天都会创建一个文本日志文件,可以下载该文件,并且可以与我的传出日志进行核对。

我将感谢您在以下方面的意见和经验:

用户将输入他们知道的手机号码。我是否需要强制执行 +9912345... 才能获得国家代码?

如果手机是国外的(我在英国)会发生什么情况 收件人是否支付国际部分?还是网关提供商可能有本地传输服务?

我需要用非字母字符做什么?英镑符号“£”和 CR / LF 浮现在脑海中。如果这些被编码,可能会导致长度限制上的消息在编码后超过它(这样我需要将其构建到消息创建表单的验证中)。新行是 CR+LF 还是只有 CR?

是否有任何网关具有模拟功能?这样我就可以测试我的应用程序而不会产生任何 SMS 文本的实际成本。

我计划记录任何失败尝试的手机号码并标记用户的记录,以便他们下次登录时我可以鼓励他们更正号码。

您的任何其他问题和建议将不胜感激。谢谢。

4

2 回答 2

3

发生在我身上的一个大问题,虽然这不是一个编程问题,它只是一个经验,需要考虑。

当有人给你发了一条紧急的信息,然后发件人(手机的主人)过来问你有没有收到信息,这让我很生气,因为你可以声称没有收到它,从而使发件人对您“忽略它们”或“没有响应”感到有些恼火/生气/生气,而实际上这是由于提供商的网络问题造成的。

有趣的是,在吵架大约一个小时后,你的手机会发出哔哔声,发件人的信息到了!!!!这在我身上发生过好几次了!但是在不知道发件人方面发生的事情(危机、紧急查询等)的情况下,我能做什么?

因此,如果从以太网(互联网)向手机发送消息时要小心,因为以太网并不是 100% 稳定的(路由器出现故障、dns 消失、服务器中断等),因此值得牢记这一点。就像问题是如何保证短信的即时发送?这是一个很大的问题,必须考虑可靠性,通常需要额外的努力才能做到这一点......

大多数手机通常都有所谓的交付报告,有些是打开的,有些是关闭的,这是了解收件人的手机是打开还是关闭的有用方法,如果它打开,您将获取指示已交付的即时交付报告,同样,如果它关闭,获取交付报告将有明显的时间延迟,这取决于您的提供商的最大交付时间。

对不起,如果这看起来像一个漫无边际的...

希望这能给你一些思考,最好的问候,汤姆。

于 2009-12-02T14:19:37.077 回答
2

SMS 是一种电信服务,而不是 Internet 服务。这有一些不同的规则。

对于初学者来说,许多端点都是计费/可计费的,并且与单个服务提供商签订了合同。这将包括您的所有用例。

其次,计费是发送方和接收方的合同事项。除非您限制自己向特定国家/地区发送 SMS,否则您根本不能作为发件人声明“主机付费”。美国是最著名的例外。“收款人付款”更糟糕。由于 SMS 垃圾邮件,电信公司通常仅在您与他们签订合同时才允许此类流量。

第三方 SMS 运营商可以处理许多此类问题。他们很容易比一般的电信公司更注重服务。他们甚至可以为您发送国际短信。

SMS 倾向于在网络本身进行缓冲,不一定是电子邮件网关。在个别情况下,您可能看不到差异。但是,即使您有直接的 SS7 链接到电信公司,您仍然会有延迟。

真正的电信公司有测试网关,但我不能给你的使用条款。不过,这个想法绝对是能够以较低的成本测试您的应用程序。

SMS 使用自己的字母表,一种相当讨厌的多 septet 编码(7/14/21 位!)引用的 160 个字符限制来自 140 字节的有效负载。这也可以编码为 70 个 UTF-16 字符。

于 2009-12-02T15:38:06.653 回答