我想在python中创建一个Twilio应用程序,它在我的mac osx桌面后台运行,并在新文本消息到达时执行操作。我只对处理最近收到的短信感兴趣。
我当前的解决方案是一种轮询机制,我有一个无限循环,在循环中我每次调用TwilioRestClient(...)。messagess.list()并处理返回数组中的第一条消息。我在每次迭代中睡眠1秒钟,以避免对处理器造成过多的负担。
当前的实现通常有效,但有时会滞后于TwilioRestClient(...)。messagess.list()调用多秒。我假设这是因为我使用的是Twilio的试用版。但是,任何关于如何解决这个问题的建议将不胜感激。另一个主要问题是实施非常浪费。应用程序应该在其运行的绝大部分时间内处于休眠状态,并且当新消息到达时应该会有短暂的活动。
这是当前的实施:
def run(self):
last_message = self.get_most_recent_message_body().lower()
self.is_running = True
while self.is_running:
message = self.get_most_recent_message_body().lower()
if (message != last_message):
last_message = message
self.commander.execute(message)
sleep(1);
def get_most_recent_message_body(self):
messages = TwilioRestClient(self.TWILIO_ACCOUNT_SID, self.TWILIO_AUTH_TOKEN).messages.list()
most_recent_message = messages[0]
return most_recent_message.body
我希望应用尽可能快速响应。最佳解决方案是某种观察者模式或某种信号使用,其中Twilio警告我的应用程序“醒来”#34;每当有新消息到达时。有没有办法实现这个?
谢谢!
答案 0 :(得分:1)
Twilio开发者传道者在这里。
没有民意调查你绝对可以做到这一点。让我解释一下。
当您使用Twilio购买号码时,您可以设置两个指向您构建的应用程序的URL,一个用于语音,一个用于消息传递。然后,当Twilio收到呼叫或文本消息时,它将向您设置的URL发出HTTP请求(webhook),其中包含呼叫或消息的详细信息。您的应用程序可以使用某些XML(称为TwiML)进行响应,以告知Twilio如何处理消息或调用。
当你用Python标记这个问题时,我猜你正在写一个python应用程序。这是getting started receiving SMS messages with Python的快速指南。