我的 IFTTT webhook 服务也有类似的设置。据我所知,你的问题的答案是肯定的,你需要这个脚本(或类似的)来废弃这个online
值,你可能想要做一份cron
工作(我的方法)或保持脚本运行(不会'不是我的偏好)。
IFTTT 的 webhookjson
最多包含 3 个值,您可以将其发布到给定的事件和键名。
下面是我的 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})
您将放置 webhookevent
名称和秘密key
值的位置。我将它们存储在配置文件中。一旦您在 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-strings(这很棒!),但如果您有较低版本,则应将所有 f-strings 切换为str.format()
.