6

我正在创建一个使用 twilio 的网络应用程序,但我似乎遇到了问题。

该系统由 3 个参与者组成:

  • 实体客户
  • 物理服务器
  • 我们的网络应用程序

每当客户端通过表单创建新的“作业”时,所有作业详细信息都将以文本的形式发送到许多不同的服务器。当任何一个服务器回复该短信时,我们需要能够将他的回复与他回复的特定“工作”相关联。问题是如果不为每个工作购买一个号码并将每个号码与工作相关联,我无法弄清楚如何做到这一点。如果可能的话,我只想使用一个号码,因为购买数千个号码是完全浪费且不可能的。

4

3 回答 3

8

Cookie 是处理对话的最佳方式,但由于您无法分辨服务器回复的是哪条短信,这可能会很棘手。如果您向服务器发送 2 个作业,而他们选择回复第一个作业,您就无法知道这一点。

我认为您有两种明智的做法:

  • 为每个作业提供一个服务器可以回复的参考代码(2 或 3 位数字,以使其更容易)。这是最可靠的方法。
  • 使用多个(但不是很多)电话号码。因此,在一天或几个小时内,每个号码只向服务器发送一个作业。然后,您可以回收号码池并在作业“超时”后重新使用它们。这取决于您的预期数量。
于 2013-04-25T09:43:06.250 回答
5

好吧,根据 Twilio 的说法,答案是使用 cookie:

http://www.twilio.com/docs/quickstart/php/sms/tracking-conversations

就像在 Web 应用程序中一样,cookie 是一个小文件,您的应用程序可以存储在 Twilio 的服务器上以跟踪信息,例如用户名或帐户。对于 Twilio SMS,cookie 的范围是两方之间的“对话”——您可以为每个收件人/发件人电话号码对设置一个唯一的 cookie。例如,您可以为在 415-555-2222 和 415-555-1111 之间发送的任何消息存储一个唯一的 cookie,这将不同于在 415-555-3333 和 415-555-1111 之间使用的 cookie。

于 2013-04-25T00:10:46.920 回答
1

我最近遇到了这个问题,发现一篇文章很好地解释了使用@xmjw 提到的池的想法

用户如何通过 Twilio 互相发送短信

尽管应用程序不同,但这里的概念是相同的。对于任何可能偶然发现这个问题并需要其他解决方案的人。

我最终在我的解决方案中做的是生成独特的响应代码。然后在回复中,我可以查询响应代码和发件人编号以与原始文本相关联。但就我而言,双方都是人类。对于像服务器一样自动化的一侧,您可以将文本解析为代码是什么,然后与该代码一起返回。那你就SELECT * FROM messages WHERE code = ?.

于 2015-01-22T16:29:36.980 回答