如何接收Twilio SMS来命令Raspberry Pi

时间:2014-09-01 14:52:08

标签: linux python-2.7 raspberry-pi twilio

在Raspberry Pi上接收Twilio SMS命令

我注册了Twilio https://www.twilio.com并获得了一个电话号码 可以用来从Raspberry Pi发送短信,我也可以收到 我的Raspberry Pi上的短信。

我已经整理了一个脚本,使用收到的短信来命令 对Raspberry Pi的一个动作。它有效,但我想提供建议 清理它。

特别是 - 当我尝试检索SMS消息时,Twilio会转储整个消息 帐户收到的很多邮件,我需要过滤它们 只有最新的消息。见下文,我已经设置了一个' if'功能 检查消息发送的时间(以秒为单位)与当前时间 (以秒为单位)少于' 18009'只允许在最后几个发送的那些(~8) 秒出现。这似乎过于愚蠢 - 我想要一个更好的方法。

谢谢,

{

import datetime
import time
import os
from twilio.rest import TwilioRestClient
import email.utils

twilio_account_sid = "GetSIDFromTwilioAccount"
twilio_auth_token = "GetTokenFromTwilioAccount"
sTwilioNumber = "+TwilioPhone#"
client  = TwilioRestClient(twilio_account_sid, twilio_auth_token)

while (True):
    for message in client.messages.list():

        # select only messages where time now less time sent
        if (time.mktime(datetime.datetime.utcnow().timetuple())-18009) \
        < email.utils.mktime_tz(email.utils.parsedate_tz(message.date_sent)):

            # if message from my phone
            if message.from_ == "+MyPhone#":

                if message.body == 'command1':
                    os.system('Command1.sh')
                    time.sleep(7)

                if message.body == 'command2':
                    os.system('command2.sh')
                    time.sleep(7)

                etc,
                etc,

}

1 个答案:

答案 0 :(得分:1)

Twilio可以收听传入的消息并调用托管在您服务器上的rest api / servlet / web服务等。因此,每当您收到有关twilio编号的消息时,此API将被调用,然后您可以自动执行您想要执行的操作。因此,如果你在你的树莓派上拥有自己的网络服务器,那么twilio可以在短信服务器上传输消息,而不是你在twilio服务器上进行操作。

希望我能回答你的问题。我已将我的网络应用程序与twilio集成在Google App引擎上。我很快就会买一个覆盆子pi 2并学习python。我偶然发现了你的疑问,想到分享我所知道的一切。