【问题标题】:What Gotchas have you discovered programming SMS/Alerts?您发现了编写 SMS/Alerts 的哪些陷阱?
【发布时间】:2010-12-22 10:19:17
【问题描述】:

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

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

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

根据我的研究:

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

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

编辑不同提供商处理发件人/主题和消息的方式各不相同,因此实际发送的消息的呈现方式可能难以预测。 p>

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

让我印象深刻的是:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: sms bulksms


    【解决方案1】:

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

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

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

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

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

    对不起,如果这看起来是漫无边际的......

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

    【讨论】:

    • 不足为奇 - SMS 在设计上非常不可靠。但既然是收费的,电信公司会尽量延迟交付,而不是从不交付。
    • 好点。我们记录所有发送的消息,并且可以在线查看,因此在这种情况下可以看到发送时间等
    【解决方案2】:

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

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

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

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

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

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

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

    【讨论】:

    • 非常有帮助,谢谢。我的主机/用户付费只是主机是否认为他们有责任传递信息的情况,或者它是否对收件人来说是一种奢侈,所以他们应该付款,但我同意你关于美国或收件人付款的国家的观点。 SMS Alphabet 听起来很可怕,但如果我只是向他们发送一个 URL 编码的 POST,网关可能会处理这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2011-02-06
    • 2011-12-11
    • 2010-10-04
    • 1970-01-01
    • 2010-09-22
    • 2012-02-03
    相关资源
    最近更新 更多