Python 使用IFTTT检查JSON内容并发送电子邮件或文本消息
我正在努力学习如何在IFTTT上使用新的WebHooks服务,我正在努力弄清楚它应该如何工作。我能在网上找到的大多数项目似乎都涉及到一项不受欢迎的“maker”服务,而且很少有资源解释这个新频道 假设我想在以下json文件中每隔十分钟检查一次“online”的值: 我可以编写一个Python脚本来提取这个值,如下所示:Python 使用IFTTT检查JSON内容并发送电子邮件或文本消息,python,json,ifttt,Python,Json,Ifttt,我正在努力学习如何在IFTTT上使用新的WebHooks服务,我正在努力弄清楚它应该如何工作。我能在网上找到的大多数项目似乎都涉及到一项不受欢迎的“maker”服务,而且很少有资源解释这个新频道 假设我想在以下json文件中每隔十分钟检查一次“online”的值: 我可以编写一个Python脚本来提取这个值,如下所示: response = urlopen('https://lichess.org/api/users/status?ids=thibault') thibault = respon
response = urlopen('https://lichess.org/api/users/status?ids=thibault')
thibault = response.read()
data = json.loads(thibault)
status = data[0]['online']
如果状态
等于“true”,我希望通过电子邮件或短信收到通知。如何集成python脚本和webhooks服务?或者我甚至需要使用这个脚本吗?我假设我需要某种定期运行此Python脚本的cron
作业,但是如何将此作业与IFTTT连接起来呢
当我在IFTTT上创建一个新的小程序时,我可以创建一个带有随机事件名的触发器,但不清楚该事件名对应什么 我的IFTTT webhook服务也有类似的设置。据我所知,您的问题的答案是肯定的,您需要使用此脚本(或类似脚本)来取消
在线
值,并且您可能希望执行cron
工作(我的方法)或保持脚本运行(我不喜欢)
IFTTT的webhooks是一个最多3个值的json
,您可以将其发布到给定的事件和键名
下面是我的webhook API的一个非常简单的摘录:
def push_notification(*values, **kwargs):
# config is in json format
config = get_config()
report = {}
IFTTT = {}
# set default event/key if kwargs are not present
for i in ['event', 'key']:
IFTTT[i] = kwargs[i] if kwargs and i in kwargs.keys() else config['IFTTT'][i]
# unpack values received (up to 3 is accepted by IFTTT)
for i, value in enumerate(values, 1):
report[f"value{i}"] = value
if report:
res = requests.post(f"https://maker.ifttt.com/trigger/{IFTTT['event']}/with/key/{IFTTT['key']}", data=report)
# TODO: add try/except for status
res.raise_for_status()
return res
else:
return None
您可能不需要所有这些,但我的目标是建立一个通用的解决方案。在一天结束时,您真正需要的是这句话:
requests.post(f)https://maker.ifttt.com/trigger/{event}/with/key/{key},data={my_json_up_to_3_values})
您将在其中放置webhook事件
名称和密码密钥
值。我将它们存储在一个配置文件中。一旦您注册了IFTTT的webhook服务(转到您的IFTTT webhook小程序设置),密钥将可用。您可以通过以下快速帮助链接找到您的密钥:https://maker.ifttt.com/use/{your_secret_key}
。事件可以是您在小程序上设置的默认值,如果允许,用户也可以选择其事件名称
在您的情况下,您可以执行以下操作:
if status:
push_notification("Status is True", "From id thibault", event="PushStatus", key="MysEcR5tK3y")
注意:我使用的是3.6+版本(太棒了!),但是如果您使用的是较低的版本,那么您应该将所有的f-string切换到Ah!现在我明白了。非常感谢,这很有启发性。我真的很感谢你抽出时间。不客气,这只是我以前安排的。多亏了你,我用我现在学到的知识重新更新了我的代码。我非常理解你的沮丧,因为很难找到关于IFTTT webhook的更新资源。