Python 使用IFTTT检查JSON内容并发送电子邮件或文本消息

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

我正在努力学习如何在IFTTT上使用新的WebHooks服务,我正在努力弄清楚它应该如何工作。我能在网上找到的大多数项目似乎都涉及到一项不受欢迎的“maker”服务,而且很少有资源解释这个新频道

假设我想在以下json文件中每隔十分钟检查一次“online”的值:

我可以编写一个Python脚本来提取这个值,如下所示:

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的更新资源。