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

2024-06-11 00:59:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习如何在IFTTT上使用新的WebHooks服务,我正在努力弄清楚它应该如何工作。我能在网上找到的大多数项目似乎都提到了一个被弃用的“创客”服务,而解释新频道的资源非常少。在

假设我想每隔10分钟检查一下下面json文件中“online”的值:https://lichess.org/api/users/status?ids=thibault

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

response = urlopen('https://lichess.org/api/users/status?ids=thibault')
thibault = response.read()
data = json.loads(thibault)
status = data[0]['online']

如果status等于“true”,我想通过电子邮件或短信收到通知。如何集成python脚本和webhooks服务?或者我需要使用这个脚本吗?我假设我需要某种经常运行这个Python脚本的cron作业,但是如何将这个作业与IFTTT连接起来呢?在

当我在IFTTT上创建一个新的applet时,我可以创建一个带有随机事件名的触发器,但是不清楚这个事件名对应的是什么。在


Tags: httpsorg脚本apijsonidsdataresponse
1条回答
网友
1楼 · 发布于 2024-06-11 00:59:28

我的IFTTT webhook服务也有类似的设置。据我所知,您的问题的答案是肯定的,您需要此脚本(或类似脚本)来废弃online值,并且您可能希望执行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 event名称和机密key值。我把它们存储在一个配置文件中。一旦您在IFTTT上注册webhook服务(请转到IFTTT webhook applet设置),就可以使用密钥了。您可以通过这样的快速帮助链接找到您的密钥:https://maker.ifttt.com/use/{your_secret_key}。事件可以是您在小程序上设置的默认值,或者用户可以选择其事件名称(如果允许)。在

在你的情况下,你可以做一些类似的事情:

^{pr2}$ 注:我使用了3.6版本的A1}(太好了!),但如果您的版本较低,则应将所有f字符串切换为^{}.

相关问题 更多 >