نود Microsoft To Do در N8N
نود Microsoft To Do در n8n به شما کمک میکند کارهای روزانه، وظایف تیمی و پیگیریهای پروژه را بهصورت خودکار از داخل ورکفلو مدیریت کنید؛ از ساخت تسک جدید و بهروزرسانی وضعیت آن گرفته تا خواندن لیستها و همگامسازی با ابزارهایی مثل ایمیل، فرمها، CRM و چت سازمانی.
معرفی نود در N8N
نود Microsoft To Do یک نود Integration (یکپارچهسازی) است که به سرویس Microsoft To Do از طریق Microsoft Graph متصل میشود و عملیات رایج روی Task و Task List را انجام میدهد.
- کارکرد اصلی: ساخت/ویرایش/خواندن تسکها و لیستها در Microsoft To Do
- دستهبندی: Integration (Action Node)
- اهمیت در ورکفلوها: تبدیل رویدادها (مثل ایمیل جدید، ثبت فرم، تیکت جدید) به تسک قابل پیگیری، و جلوگیری از فراموشی کارها با تعیین موعد، اولویت و یادآور
این نود معمولاً بهصورت «اکشن» بعد از یک تریگر (مثل Webhook، Gmail Trigger، Microsoft Outlook Trigger یا Cron) قرار میگیرد تا در پاسخ به یک رویداد، تسک ایجاد یا مدیریت شود.
موارد استفاده
1) تبدیل ایمیلهای مهم به تسک با موعد و اولویت
- تریگر: دریافت ایمیل با برچسب/موضوع مشخص
- اکشن: ساخت تسک در لیست «Follow-ups» با عنوان ایمیل و لینک به پیام
- نودهای مکمل: IF (فیلتر کردن)، Set (ساخت فیلدها)، Date & Time (محاسبه موعد)، Microsoft To Do (Create Task)
2) ساخت خودکار تسک بعد از ثبت فرم (Typeform/Google Forms)
- تریگر: ارسال فرم
- اکشن: ساخت تسک برای تیم با جزئیات پاسخها در Notes
- نودهای مکمل: Merge (ترکیب دادهها)، HTML Extract یا Code (پردازش متن)، Microsoft To Do
3) همگامسازی تیکتهای جدید (Helpdesk) با To Do
- تریگر: تیکت جدید در Zendesk/Freshdesk/Jira
- اکشن: ساخت تسک با Priority بالا و Due date نزدیک
- نودهای مکمل: HTTP Request (اگر نود آماده وجود ندارد)، IF، Microsoft To Do
4) گزارش روزانه: جمعآوری تسکهای سررسید شده و ارسال در Teams/Slack
- تریگر: Cron (روزانه)
- اکشن: دریافت تسکها از یک لیست، فیلتر بر اساس Due date، ارسال خلاصه
- نودهای مکمل: Microsoft To Do (Get Many)، Code (فیلتر/گروهبندی)، Microsoft Teams یا Slack
5) کنترل کیفیت فرآیند: وقتی یک وضعیت در CRM تغییر کرد، تسک جدید بساز
- مثال: وقتی Deal وارد مرحله «Contract» شد، تسک «ارسال قرارداد» ایجاد شود
- نودهای مکمل: HubSpot/Salesforce، IF، Microsoft To Do
پارامترها و تنظیمات
پارامترهای دقیق ممکن است با نسخه n8n و پیادهسازی نود تغییر کنند، اما ساختار کلی در نودهای Microsoft To Do معمولاً حول محور Resource (منبع) و Operation (عملیات) است.
1) Credentials (اعتبارنامه)
- نام: Microsoft To Do OAuth2 API (یا Microsoft Graph OAuth2)
- نوع داده: Credential
- کاربرد: اتصال امن به حساب Microsoft برای دسترسی به لیستها و تسکها
- مثال عملی: اتصال به اکانت سازمانی Microsoft 365 برای مدیریت تسکهای کاربری
نکته مهم: برای دسترسی به To Do معمولاً مجوزهای مرتبط با Microsoft Graph لازم است. اگر در سازمان از سیاستهای امنیتی (Admin consent) استفاده میشود، باید دسترسیها توسط ادمین تأیید شوند.
2) Resource (منبع)
- نام پارامتر: Resource
- نوع داده: Options (Dropdown)
- توضیح: تعیین میکند روی «Task» یا «Task List» کار میکنید
- مثال: Resource = Task
3) Operation (عملیات)
- نام پارامتر: Operation
- نوع داده: Options (Dropdown)
- توضیح: نوع عملیات مثل Create / Update / Get / Get Many / Delete
- مثال: Operation = Create (ساخت تسک جدید)
4) List / Task List (شناسه یا انتخاب لیست)
- نام پارامتر: List ID (یا Task List)
- نوع داده: String یا Options
- توضیح: مشخص میکند تسک در کدام لیست ساخته/خوانده شود
- مثال عملی: انتخاب لیست “Follow-ups” برای پیگیری ایمیلهای مهم
نکته مهم: اگر لیست را با ID وارد میکنید، مطمئن شوید ID مربوط به همان کاربر (Me) است که Credential به آن متصل شده است.
5) Task ID (شناسه تسک)
- نام پارامتر: Task ID
- نوع داده: String
- توضیح: برای عملیات Get/Update/Delete لازم است
- مثال: استفاده از {{$json[“id”]}} خروجی مرحله ساخت تسک برای بهروزرسانی بعدی
6) Title (عنوان تسک)
- نام پارامتر: Title
- نوع داده: String
- توضیح: عنوان اصلی تسک
- مثال: “پیگیری: {{$json[“subject”]}}”
نکته: بهتر است عنوان کوتاه باشد و جزئیات را در Notes قرار دهید تا در موبایل/دسکتاپ خواناتر شود.
7) Body / Notes (توضیحات تسک)
- نام پارامتر: Body / Notes
- نوع داده: String
- توضیح: شرح کامل تسک، لینکها، متن ایمیل یا اطلاعات فرم
- مثال: “نام مشتری: {{$json[“name”]}} | تلفن: {{$json[“phone”]}} | توضیحات: {{$json[“message”]}}”
8) Due DateTime (تاریخ سررسید)
- نام پارامتر: Due DateTime
- نوع داده: DateTime (یا String با فرمت ISO 8601)
- توضیح: تعیین زمان سررسید تسک
- مثال: {{$now.plus({days: 2}).toISO()}}
نکته مهم: تفاوت Timezone میتواند باعث جابهجایی ساعت شود. اگر در خروجی زمانها اشتباه هستند، از نود Date & Time برای تنظیم منطقه زمانی استفاده کنید.
9) Reminder (یادآور)
- نام پارامتر: Reminder DateTime
- نوع داده: DateTime
- توضیح: زمان یادآوری قبل یا هنگام موعد
- مثال: {{$now.plus({hours: 4}).toISO()}}
نکته: اگر Reminder را تنظیم میکنید، بهتر است Due Date هم تنظیم باشد تا در مدیریت کارها منطقی بماند.
10) Importance / Priority (اهمیت)
- نام پارامتر: Importance
- نوع داده: Options (low/normal/high) یا مشابه
- توضیح: تعیین سطح اهمیت
- مثال: high برای تیکتهای بحرانی
11) Status (وضعیت)
- نام پارامتر: Status
- نوع داده: Options
- توضیح: وضعیت تسک مثل notStarted / inProgress / completed
- مثال: وقتی پرداخت انجام شد، Status = completed
12) Get Many: فیلترها و محدودکنندهها
- نام پارامتر: Return All
- نوع داده: Boolean
- توضیح: اگر فعال باشد همه نتایج را برمیگرداند
- مثال: خاموش برای جلوگیری از داده زیاد در لیستهای بزرگ
- نام پارامتر: Limit
- نوع داده: Number
- توضیح: تعداد آیتمها در صورت Return All = false
- مثال: 50
نکته مهم: برای لیستهای بزرگ، Return All میتواند باعث کندی و مصرف زیاد حافظه در ورکفلو شود. Limit و فیلترهای منطقی استفاده کنید.
ورودیها و خروجیها
ورودی (Input) نود
این نود معمولاً از آیتمهای ورودی n8n استفاده میکند تا مقادیر Title، Notes، DueDateTime و… را با Expression از JSON ورودی بخواند. ورودی میتواند از هر نودی باشد (Webhook، Set، Gmail، HTTP Request و غیره).
نمونه ورودی JSON که از یک فرم آمده است:
{ "name": "علی رضایی", "phone": "+989121234567", "message": "لطفاً زمان دمو را هماهنگ کنید", "priority": "high"}
خروجی (Output) نود
خروجی معمولاً شیء ساختهشده یا خواندهشده از Microsoft To Do است؛ شامل id، عنوان، وضعیت، تاریخها و سایر فیلدهای مرتبط. این خروجی برای قدمهای بعدی مثل ارسال پیام، ثبت در دیتابیس یا بهروزرسانی CRM استفاده میشود.
نمونه خروجی JSON پس از Create Task:
{ "id": "AAMkAGUAA...", "title": "پیگیری: درخواست دمو", "status": "notStarted", "importance": "high", "createdDateTime": "2025-12-30T08:20:10.123Z", "dueDateTime": { "dateTime": "2026-01-01T09:00:00.0000000", "timeZone": "UTC" }, "body": { "contentType": "text", "content": "نام: علی رضایی | تلفن: +989121234567 | توضیحات: لطفاً زمان دمو را هماهنگ کنید" }}
نکات پیشرفته و ترفندها
1) جلوگیری از ساخت تسک تکراری (Deduplication)
اگر تریگر شما ممکن است یک رویداد را دوبار ارسال کند (مثلاً Webhook یا ایمیل)، قبل از Create Task یک مرحله کنترل تکراری اضافه کنید:
- یک کلید یکتا بسازید (مثل hash از subject+date یا ticketId)
- در Data Store یا یک جدول (Airtable/Google Sheets/Postgres) ثبت کنید
- اگر قبلاً وجود داشت، Create را انجام ندهید
2) ساخت عنوان استاندارد برای خوانایی تیم
یک الگو ثابت برای Title ایجاد کنید تا در لیستها سریع اسکن شود:
- [CRM] تماس با مشتری – {{$json[“name”]}}
- [Ticket #{{$json[“ticketId”]}}] پاسخ فوری
- [Finance] پیگیری فاکتور {{$json[“invoiceNo”]}}
3) مدیریت Timezone بهصورت پایدار
- زمانهای ورودی را با Date & Time به ISO و timezone هدف تبدیل کنید
- اگر سازمان روی منطقه زمانی خاصی کار میکند، یک فیلد ثابت مانند Asia/Tehran را مبنا قرار دهید
4) استفاده از مسیرهای شرطی برای اولویت و سررسید
با IF میتوانید قوانین عملیاتی بسازید:
- اگر priority=high، DueDate = امروز + 1 روز و Reminder = امروز + 2 ساعت
- اگر پیام شامل “فوری”، Importance = high
5) ترکیب با Microsoft Teams برای حلقه کامل پیگیری
- Create Task در To Do
- ارسال پیام در Teams با خلاصه و لینک/شناسه تسک
- در صورت تغییر وضعیت در سیستم اصلی، Update Task و سپس پیام «انجام شد»
محدودیتها و خطاها
محدودیتها
- وابستگی به Microsoft Graph: هر محدودیت یا تغییر در Graph روی عملکرد اثر میگذارد.
- دسترسیهای سازمانی: در برخی tenantها، نیاز به Admin consent یا محدودیت دسترسی به اپلیکیشنهای OAuth وجود دارد.
- حجم داده: دریافت تعداد زیاد تسکها در یک اجرا میتواند کندی یا مصرف حافظه ایجاد کند.
- فیلترهای پیشرفته: برخی فیلترها/Queryها ممکن است در UI نود محدودتر از توان خام Graph باشند؛ در این حالت HTTP Request به Graph میتواند جایگزین شود.
خطاهای رایج و راهحلها
- 401 Unauthorized / Invalid Authentication: اعتبارنامه را دوباره Authorize کنید، Scopeهای لازم را بررسی کنید، زمان سیستم و سیاستهای سازمان را کنترل کنید.
- 403 Forbidden: اکانت مجوز لازم ندارد یا سازمان دسترسی اپلیکیشن را محدود کرده است؛ نیاز به Admin consent یا تغییر سیاست دارد.
- 404 Not Found (List/Task): List ID یا Task ID اشتباه است یا متعلق به کاربر دیگری است؛ ابتدا Get Lists را اجرا و ID درست را بردارید.
- 429 Too Many Requests: نرخ درخواستها زیاد است؛ از Wait/Delay، کاهش Return All، Limit و اجرای زمانبندی شده استفاده کنید.
- مشکل تاریخ و ساعت: فرمت DateTime را ISO 8601 قرار دهید و timezone را با Date & Time هماهنگ کنید.
ایده ها
- سیستم «پیگیری فروش»: هر Lead جدید یک تسک با موعد 24 ساعته بسازد و اگر انجام نشد، پیام یادآوری در Teams ارسال کند.
- مدیریت محتوا: وقتی کارت Trello/Notion به وضعیت “Ready to publish” رسید، تسک “انتشار” با چکلیست در Notes ایجاد شود.
- اتوماسیون منابع انسانی: با ثبت درخواست مرخصی، یک تسک برای تایید مدیر ساخته شود و پس از تایید، تسک تکمیل گردد.
- کنترل فاکتورها: با رسیدن ایمیل فاکتور، تسک “پرداخت فاکتور” با Due date و Reminder ساخته و شماره فاکتور در عنوان درج شود.
- پشتیبانی فنی: هر ارور بحرانی از Sentry/Log ابزارها یک تسک با اولویت بالا بسازد و لینک رخداد را در Notes قرار دهد.
