add microsoft todo hermes plugin
This commit is contained in:
75
__init__.py
Normal file
75
__init__.py
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
import json
|
||||||
|
import os
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
|
||||||
|
def register(ctx):
|
||||||
|
def add_microsoft_todo(title: str, due: str = "", reminder: str = "") -> str:
|
||||||
|
url = os.environ.get("N8N_TODO_WEBHOOK_URL")
|
||||||
|
if not url:
|
||||||
|
return json.dumps({
|
||||||
|
"ok": False,
|
||||||
|
"error": "N8N_TODO_WEBHOOK_URL is not set"
|
||||||
|
}, ensure_ascii=False)
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"title": title,
|
||||||
|
"due": due,
|
||||||
|
"reminder": reminder or due,
|
||||||
|
}
|
||||||
|
|
||||||
|
req = urllib.request.Request(
|
||||||
|
url,
|
||||||
|
data=json.dumps(payload).encode("utf-8"),
|
||||||
|
headers={"Content-Type": "application/json"},
|
||||||
|
method="POST",
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with urllib.request.urlopen(req, timeout=20) as resp:
|
||||||
|
body = resp.read().decode("utf-8", "ignore")
|
||||||
|
|
||||||
|
return json.dumps({
|
||||||
|
"ok": True,
|
||||||
|
"message": "已添加到 Microsoft To Do",
|
||||||
|
"n8n_response": body,
|
||||||
|
}, ensure_ascii=False)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
return json.dumps({
|
||||||
|
"ok": False,
|
||||||
|
"error": str(e),
|
||||||
|
}, ensure_ascii=False)
|
||||||
|
|
||||||
|
ctx.register_tool(
|
||||||
|
name="add_microsoft_todo",
|
||||||
|
description=(
|
||||||
|
"Add a task/reminder to Microsoft To Do via n8n. "
|
||||||
|
"Use this when the user asks to add a reminder, todo, or task. "
|
||||||
|
"The due and reminder fields should use local ISO datetime format, "
|
||||||
|
"for example 2026-05-21T15:00:00."
|
||||||
|
),
|
||||||
|
parameters={
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"title": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Task title, for example 续费 OVH"
|
||||||
|
},
|
||||||
|
"due": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Due datetime in local ISO format, for example 2026-05-21T15:00:00"
|
||||||
|
},
|
||||||
|
"reminder": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Reminder datetime in local ISO format, for example 2026-05-21T15:00:00"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["title"]
|
||||||
|
},
|
||||||
|
handler=lambda args, **kwargs: add_microsoft_todo(
|
||||||
|
title=args.get("title", ""),
|
||||||
|
due=args.get("due", ""),
|
||||||
|
reminder=args.get("reminder", ""),
|
||||||
|
),
|
||||||
|
)
|
||||||
4
plugin.yaml
Normal file
4
plugin.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
name: microsoft_todo
|
||||||
|
version: 1.0.0
|
||||||
|
description: Add reminders to Microsoft To Do through an n8n webhook.
|
||||||
|
author: templarz
|
||||||
Reference in New Issue
Block a user