2013-04-25 66 views
5

在创建使用twilio的Web应用程序时,我似乎遇到了问题。Twilio:如何将SMS回复映射到原始SMS

该系统由3个演员:

  • 物理客户
  • 一台物理服务器
  • 我们的Web应用程序

每当客户端通过表单创建了一个新的 “工作” ,所有的工作细节将以文本发送到许多不同的服务器。当任何一台服务器回复该短信时,我们需要能够将他的回复与他回复的特定“工作”联系起来。问题是我不知道如何做到这一点,而不需要为每项工作购买一个号码,并将每个号码与一份工作联系起来。如果可能的话,我只想使用一个号码,因为购买数千个号码是完全浪费和不可能的。

回答

8

Cookies are the best way to handle a conversation,但由于您无法确定服务器回复哪条短信,因此可能会非常棘手。如果您发送服务器2份工作,并且他们选择回复第一份工作,则无法知道这一点。

我觉得你有这样两个懂事方式:

  • 给每个作业的参考代码(2或3位,以方便),该服务器可以与回复。这是最可靠的方法。
  • 使用多个 - 但不是很多 - 电话号码。因此,在一天或几个小时内,您只能为每个服务器发送一个作业。然后,您可以回收数字池,并在作业“超时”后重新使用它们。这取决于你期望的数量。
+0

啊是的,我在想这个。好像我可能只是给每个工作一个工作ID。谢谢。 – user2158382 2013-04-26 16:02:07

+1

+1为电话号码池的想法。我喜欢! – 2013-07-29 20:59:12

5

那么根据Twilio,答案是使用Cookie:

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

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

+0

如果您不需要跟踪2个号码之间的多个对话,这将起作用。假设415-555-2222和415-555-1111正在交换关于2个不同主题的消息。 – 2014-11-10 19:11:38

+0

我对Cookie实际设置的位置感到困惑。如果您在页面上搜索'cookie',则该术语不会出现在任何地方的代码中。我错过了什么? – 2015-08-05 15:59:37

1

我遇到了这个最近发现,解释得很好使用@xmjw提到

How users can send text messages to each other over Twilio

尽管应用程序是不同的池想法的文章,这个概念在这里是排序的相同。对于任何可能遇到此问题并需要其他解决方案的人。

我最终在我的解决方案中做的是生成唯一的响应代码。然后在答复中,我可以查询响应代码和来自编号以与原始文本相关联。就我而言,这是一个双方的人。对于像服务器那样自动化的一方,您可以根据代码的内容对文本进行分析,然后使用该代码返回。那么你只需要SELECT * FROM messages WHERE code = ?