واجهة برمجة تطبيقات المهام (Tasks API)
المهام هي بنود العمل والمتابعات المرتبطة بحسابك — والتي يمكن ربطها اختيارياً بجهة اتصال، أو صفقة، أو حملة. تنتقل هذه المهام عبر مراحل لوحة المهام الخاصة بك (أعمدة كانبان) ولها نوع وأولوية. يغطي هذا الدليل كيفية إدارتها عبر واجهة برمجة التطبيقات.
- عنوان URL الأساسي —
https://api.youraiconnector.com/v1 - المصادقة — مفتاح واجهة برمجة التطبيقات الخاص بك (راجع المصادقة)
- الأخطاء والترقيم — راجع الأخطاء والترقيم
توضح جميع الأمثلة أدناه نموذج الاستعلام ?apiKey= في cURL ورأس X-API-Key في JavaScript وPython — كلاهما يعمل على كل نقطة نهاية.
كائن المهمة
{
"id": "tsk_abc123",
"title": "Call Jane about her quote",
"description": "She asked for pricing on the annual plan.",
"type": "to_do",
"priority": "high",
"stage": "stage-1",
"due_date": "2026-06-15T09:00:00.000Z",
"remind_before_minutes": 15,
"contact": "contacts/uid_whatsapp_15551234567",
"campaign": "campaigns/abc123",
"tags": ["sales"],
"notes": "",
"source": "api"
}
type—to_do،faq_update، أو أنواع المهام التي قمت بتكوينها (راجع قائمة أنواع المهام).priority—none، أوlow، أوnormal، أوhigh، أوurgent.stage— معرف المرحلة في لوحة المهام الخاصة بك (راجع قائمة مراحل المهام). عند حذفه أثناء الإنشاء، يتم وضع المهمة في مرحلتك الأولى.remind_before_minutes— عدد الدقائق قبلdue_dateلإرسال تذكير.0تعني في وقت الاستحقاق؛ احذفه أو أرسلnullلعدم وجود تذكير. يجب أن يكون رقماً صحيحاً من0إلى1440(يوم واحد) — سيتم رفض أي قيمة أكبر. يحتاج التذكير إلىdue_dateليتم إطلاقه، وتؤدي إعادة جدولة المهمة إلى نقل التذكير معها.
إنشاء مهمة
POST /tasks — الحقل title فقط هو المطلوب.
ملاحظة: يقبل due_date طابعاً زمنياً بتنسيق ISO 8601، بما في ذلك وقت اليوم. قم بإقرانه بـ remind_before_minutes ليتم تسليم التذكير وفقاً لإعدادات إشعارات المهام الخاصة بك. تربط contact_id و deal_id و campaign_id المهمة بتلك السجلات. assigned_to هو معرف المستخدم الخاص بعضو الفريق.
ضبط
assigned_toبشكل صحيح. يجب أن يكون هذا هو معرف المستخدم (user id) الخاص بمالك الحساب أو أحد أعضاء الفريق النشطين في نفس الحساب. لا تتحقق نقطة النهاية هذه حاليًا من ذلك، لذا يتم قبول المعرف الذي لا ينتمي لأحد وتخزينه تمامًا كما أرسلته — وستظل تحصل على201. انسخ المعرف بدلاً من إعادة كتابته: فهذه المعرفات تخلط بينlوLوبين الحرفOوالرقم0، ويكفي حرف واحد خاطئ لإفساد الأمر. للتحقق مما أرسلته فعليًا، افتح المهمة في لوحة التحكم: يعود حقل المسؤول (Assignee) في سجل المهمة إلى عرض المعرف الخام عندما لا يطابق أي شخص، ويظهر منتقي المسؤول في تحرير المهمة (Edit task) الحالة غير معين (Unassigned).
cURL
curl -X POST "https://api.youraiconnector.com/v1/tasks?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Call Jane about her quote",
"priority": "high",
"due_date": "2026-06-15T09:00:00.000Z",
"contact_id": "uid_whatsapp_15551234567",
"tags": ["sales"]
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/tasks", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
title: "Call Jane about her quote",
priority: "high",
due_date: "2026-06-15T09:00:00.000Z",
contact_id: "uid_whatsapp_15551234567",
tags: ["sales"],
}),
});
const data = await res.json();
console.log(data.task_id);
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/tasks",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"title": "Call Jane about her quote",
"priority": "high",
"due_date": "2026-06-15T09:00:00.000Z",
"contact_id": "uid_whatsapp_15551234567",
"tags": ["sales"],
},
)
print(res.json()["task_id"])
الاستجابة (201)
{ "success": true, "task_id": "tsk_abc123", "task": { "title": "Call Jane about her quote", "...": "..." } }
سرد المهام
GET /tasks — تُرجع المهام الخاصة بحسابك، مع فلاتر اختيارية.
معلمات الاستعلام (جميعها اختيارية): stage، priority، contact_id، deal_id، assigned_to، due_before، due_after (طوابع زمنية بتنسيق ISO).
cURL
curl "https://api.youraiconnector.com/v1/tasks?apiKey=YOUR_API_KEY&stage=stage-1&priority=high"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/tasks?stage=stage-1&priority=high", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { tasks } = await res.json();
Python
res = requests.get(
"https://api.youraiconnector.com/v1/tasks",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"stage": "stage-1", "priority": "high"},
)
tasks = res.json()["tasks"]
الاستجابة (200)
{ "success": true, "tasks": [{ "id": "tsk_abc123", "title": "Call Jane about her quote", "...": "..." }] }
البحث عن المهام
POST /tasks/search — مطابقة النص الكامل في العنوان والوصف، مع نفس عوامل التصفية الاختيارية المتاحة في القائمة.
curl -X POST "https://api.youraiconnector.com/v1/tasks/search?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "query": "quote", "priority": "high" }'
const res = await fetch("https://api.youraiconnector.com/v1/tasks/search", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ query: "quote", priority: "high" }),
});
res = requests.post(
"https://api.youraiconnector.com/v1/tasks/search",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"query": "quote", "priority": "high"},
)
الحصول على مهمة
GET /tasks/{taskId}
curl "https://api.youraiconnector.com/v1/tasks/tsk_abc123?apiKey=YOUR_API_KEY"
const res = await fetch("https://api.youraiconnector.com/v1/tasks/tsk_abc123", { headers: { "X-API-Key": "YOUR_API_KEY" } });
res = requests.get("https://api.youraiconnector.com/v1/tasks/tsk_abc123", headers={"X-API-Key": "YOUR_API_KEY"})
المهمة غير الموجودة في حسابك تُرجع 404.
تحديث مهمة
PUT /tasks/{taskId} — أرسل فقط الحقول التي تريد تغييرها (title، description، type، priority، stage، due_date، remind_before_minutes، contact_id، deal_id، assigned_to، tags، notes).
curl -X PUT "https://api.youraiconnector.com/v1/tasks/tsk_abc123?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "priority": "urgent", "notes": "Left a voicemail." }'
await fetch("https://api.youraiconnector.com/v1/tasks/tsk_abc123", {
method: "PUT",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ priority: "urgent", notes: "Left a voicemail." }),
});
requests.put(
"https://api.youraiconnector.com/v1/tasks/tsk_abc123",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"priority": "urgent", "notes": "Left a voicemail."},
)
إكمال مهمة
POST /tasks/{taskId}/complete — تنقل المهمة إلى مرحلة المهام المكتملة في لوحتك. حقل اختياري notes يسجل ملاحظة ختامية.
curl -X POST "https://api.youraiconnector.com/v1/tasks/tsk_abc123/complete?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "notes": "Closed — customer signed up." }'
await fetch("https://api.youraiconnector.com/v1/tasks/tsk_abc123/complete", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ notes: "Closed — customer signed up." }),
});
requests.post(
"https://api.youraiconnector.com/v1/tasks/tsk_abc123/complete",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"notes": "Closed — customer signed up."},
)
النقل وإعادة الترتيب (كانبان)
نقل مهمة إلى مرحلة أخرى — POST /tasks/{taskId}/move مع new_stage_id (المرحلة الوجهة) و new_position (الموضع المعتمد على الصفر داخل تلك المرحلة؛ مطلوب، يجب أن يكون عدداً صحيحاً غير سالب):
curl -X POST "https://api.youraiconnector.com/v1/tasks/tsk_abc123/move?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "new_stage_id": "stage-2", "new_position": 0 }'
إعادة ترتيب المهام داخل مرحلة — POST /tasks/reorder مع stage_id ومعرفات المهام بترتيبها الجديد:
curl -X POST "https://api.youraiconnector.com/v1/tasks/reorder?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "stage_id": "stage-1", "ordered_task_ids": ["tsk_3", "tsk_1", "tsk_2"] }'
await fetch("https://api.youraiconnector.com/v1/tasks/reorder", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ stage_id: "stage-1", ordered_task_ids: ["tsk_3", "tsk_1", "tsk_2"] }),
});
requests.post(
"https://api.youraiconnector.com/v1/tasks/reorder",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"stage_id": "stage-1", "ordered_task_ids": ["tsk_3", "tsk_1", "tsk_2"]},
)
مهام جهة اتصال
GET /tasks/contact/{contactId} — كل مهمة مرتبطة بجهة اتصال واحدة.
curl "https://api.youraiconnector.com/v1/tasks/contact/uid_whatsapp_15551234567?apiKey=YOUR_API_KEY"
const res = await fetch("https://api.youraiconnector.com/v1/tasks/contact/uid_whatsapp_15551234567", { headers: { "X-API-Key": "YOUR_API_KEY" } });
res = requests.get("https://api.youraiconnector.com/v1/tasks/contact/uid_whatsapp_15551234567", headers={"X-API-Key": "YOUR_API_KEY"})
إعداد لوحة المهام
سرد مراحل المهام
GET /tasks/stages — أعمدة لوحتك، بالترتيب. استخدم id المرحلة كحقل stage عند إنشاء المهام أو نقلها.
curl "https://api.youraiconnector.com/v1/tasks/stages?apiKey=YOUR_API_KEY"
{ "success": true, "stages": [{ "id": "stage-1", "name": "To Do", "is_completed_stage": false }, { "id": "stage-done", "name": "Done", "is_completed_stage": true }] }
تحديث مراحل المهمة
PUT /tasks/stages — استبدل إعدادات مراحل لوحتك. أرسل مصفوفة stages المرتبة بالكامل.
curl -X PUT "https://api.youraiconnector.com/v1/tasks/stages?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "stages": [
{ "id": "stage-1", "name": "To Do", "is_completed_stage": false },
{ "id": "stage-2", "name": "In Progress", "is_completed_stage": false },
{ "id": "stage-done", "name": "Done", "is_completed_stage": true }
] }'
سرد أنواع المهام
GET /tasks/types — أنواع المهام المكونة في حسابك (تُستخدم كحقل type).
curl "https://api.youraiconnector.com/v1/tasks/types?apiKey=YOUR_API_KEY"
الموافقة على اقتراح الأسئلة الشائعة
عندما يقترح روبوت الذكاء الاصطناعي سؤالاً شائعاً (FAQ) جديداً، فإنه ينشئ مهمة من النوع faq_update. تقوم POST /tasks/{taskId}/approve-faq بتحويل هذا الاقتراح إلى سؤال شائع حقيقي في قاعدة معارف وكيل الذكاء الاصطناعي الذي طرحه وتكمل المهمة. يمكنك تجاوز السؤال/الإجابة في النص الأساسي.
أضف "send_follow_up": true لجعل الذكاء الاصطناعي يرسل الإجابة أيضاً إلى جهة الاتصال المرتبطة بالمهمة على الفور، كرسالة طبيعية في تلك الدردشة (وهو نفس ما يفعله مفتاح التبديل إرسال الإجابة إلى جهة الاتصال الآن في التطبيق). يتم إرسال الرد من خلال وكيل الذكاء الاصطناعي الذي يتعامل مع جهة الاتصال تلك.
curl -X POST "https://api.youraiconnector.com/v1/tasks/tsk_faq99/approve-faq?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "question": "Do you offer refunds?", "answer": "Yes, within 30 days.", "send_follow_up": true }'
{ "success": true, "faq_id": "faq_xyz", "task_id": "tsk_faq99", "follow_up_status": "published" }
follow_up_status يخبرك بما حدث للرسالة: not_requested (العلامة غير محددة)، published (تم الإرسال)، queued (كان الروبوت في منتصف الرد على جهة الاتصال تلك، وسيتم إرسال الإجابة بمجرد انتهائه)، skipped_no_contact (المهمة ليس لديها جهة اتصال مرتبطة)، skipped_no_campaign (لا يمكن لأي وكيل أو حملة الرد على جهة الاتصال تلك) أو skipped_error. يتم إنشاء السؤال الشائع (FAQ) في كل حالة.
راجع واجهة برمجة تطبيقات الأسئلة الشائعة لإدارة الأسئلة الشائعة الناتجة.
حذف مهمة
DELETE /tasks/{taskId}
curl -X DELETE "https://api.youraiconnector.com/v1/tasks/tsk_abc123?apiKey=YOUR_API_KEY"
await fetch("https://api.youraiconnector.com/v1/tasks/tsk_abc123", { method: "DELETE", headers: { "X-API-Key": "YOUR_API_KEY" } });
requests.delete("https://api.youraiconnector.com/v1/tasks/tsk_abc123", headers={"X-API-Key": "YOUR_API_KEY"})
الخطوات التالية
- واجهة برمجة تطبيقات جهات الاتصال — ربط المهام بجهة الاتصال الصحيحة
- واجهة برمجة تطبيقات خطافات الويب — تلقي إشعارات حول
Task CreatedوTask UpdatedوTask Completed - مرجع واجهة برمجة التطبيقات — مستكشف نقاط النهاية التفاعلي الكامل