Your AI Connector Docs

واجهة برمجة تطبيقات المهام (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"
}
  • typeto_do، faq_update، أو أنواع المهام التي قمت بتكوينها (راجع قائمة أنواع المهام).
  • prioritynone، أو 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"})

الخطوات التالية