Source: https://ailoot.ai/models/ar/viduq2/
Canonical: https://ailoot.ai/models/ar/viduq2/
Language: ar

# Vidu: Q2 Text-to-Video

[Markdown](https://ailoot.ai/models/ar/viduq2/index.md) · [JSON](https://ailoot.ai/models/ar/viduq2/facts.json)

## [Vidu: Q2 Text-to-Video](https://ailoot.ai/models/ar/viduq2/)

ينشئ Vidu Q2 فيديو من موجز نصي لمشهد، بمدة 1–10 ثوانٍ ومخرجات بدقة 540p أو 720p أو 1080p وخمس نسب أبعاد. يستخدم إصدار viduq2 المحدد هذا الموجّه لتحديد الأسلوب والحركة، ويُرجع نتيجته عبر مهمة غير متزامنة.

- [**Ailoot Ultra · فيديو** `POST /v1/videos` `viduq2`](https://ailoot.ai/models/ar/viduq2/#method-0)

عن النموذج

يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.

ينشئ Vidu Q2 فيديو من مشهد مكتوب عبر إصدار تحويل النص إلى فيديو المحدد بمعرّف viduq2. مدخلاته المطلوبة هي معرّف النموذج الدقيق وموجّه يصف المشهد. استخدمه لتصور منتج قصير، أو لقطة تأسيسية، أو فعل لشخصية يمكن تحديد مظهرها وحركتها بالكلمات. هذه الطريقة المهيأة لتحويل النص إلى فيديو؛ ولا ينسب وصفها إلى معرّف الاختيار نمطًا منفصلًا لمرجع صورة أو لتحرير الفيديو.

ابنِ الموجز حول تسلسل مرئي. حدّد الموضوع والموقع والفعل وحجم اللقطة وحركة الكاميرا والتكوين النهائي. لتصور منتج، صف شيئًا على سطح طاولة، وضوءًا يتحرك عبر مادته، واقترابًا بطيئًا للكاميرا ينتهي عند تفصيل يمكن تمييزه. ولمشهد موقع، أسّس البيئة قبل الاقتراب من النقطة المحورية. اجعل الفعل مناسبًا لطول المقطع المختار حتى يتسع المشهد للنهاية المقصودة.

حد الموجّه 2,000 محرف. ضع الموضوع والفعل الأساسيين أولًا، ثم أضف تفاصيل الإضاءة والمادة والبيئة والكاميرا التي تغيّر النتيجة المنشودة. حدّد الأسلوب البصري في الموجّه. يقول الدليل الخاص بـQ2 إن المعاملين المنفصلين style وmovement\_amplitude لا يسريان على هذا النموذج، لذا لا يشكل الإعداد المسبق general أو anime وخيارات شدة الحركة بديلًا عن وصف واضح للمشهد.

يقبل إعداد المدة الخاص بالنموذج أعدادًا صحيحة من الثواني من واحدة إلى عشر. خيارات الدقة الخاصة بـQ2 هي 540p و720p و1080p، مع 720p قيمة افتراضية موثّقة. اختر المدة والدقة معًا وفق الفعل والوجهة. يحتاج الكشف القصير عن شيء والحركة الأطول إلى توقيت مختلف؛ وينبغي لزيادة المدة المطلوبة أن تخدم التسلسل المرئي بدل مجرد إطالة موجز لم يتغير. افحص الأبعاد والطول الفعليين للمقطع المعاد عند تجهيز موضع عرضه النهائي.

خيارات aspect\_ratio الموثّقة هي 16:9 و9:16 و3:4 و4:3 و1:1، مع 16:9 قيمة افتراضية. يضم الدليل صراحةً 3:4 و4:3 لعائلة Q2. اختر الإطار قبل التوليد وصف تكوينًا يناسبه: أبقِ الموضوع الرئيسي واضحًا في منظر عمودي، أو استخدم عرض إطار أفقي لإظهار المحيط. اجعل المنظر الختامي واضحًا بما يكفي للصفحة أو العرض التقديمي المقصودين أو لإضافة نصوص لاحقًا.

يتحكم حقل seed في التنوع. يؤدي حذفه أو تقديم 0 إلى اختيار قيمة عشوائية؛ وتختار القيمة غير الصفرية خيار seed الثابت الموثّق لتوليد قابل للتكرار. احتفظ بقيمة seed المعادة مع الموجّه والإعدادات عند مقارنة النسخ. توثّق العملية المشتركة أيضًا عنصري التحكم audio وoff\_peak خصيصًا لنماذج Q3. خيارات Q3 هذه ليست قدرات منسوبة إلى إصدار Q2 هذا؛ خطّط الطلب حول مدخلاته النصية ومخرجات الفيديو الموثّقة له.

التوليد غير متزامن. يُرجع الإرسال task\_id وحالة أولية، مع استخدام created لمهمة أُنشئت حديثًا. احتفظ بهوية المهمة أثناء متابعة المعالجة. يستخدم الاستعلام الموثّق عن النتيجة state=success للنتيجة الناجحة ويُرجع مصفوفة creations. لكل عنصر رابط فيديو في creations\[\].url؛ احفظ كل فيديو معاد بدل افتراض أن المهمة تتضمن دائمًا مخرجًا واحدًا بالضبط.

يُبلغ توثيق النتيجة أيضًا عن مدة الفيديو الفعلية ومعدل fps وعرض الدقة وارتفاعها. احتفظ بهذه القيم المبلّغ عنها مع المقطع المكتمل بدل اعتبار معدل إطارات مثال أو أبعاده مواصفات ثابتة لـQ2. تتضمن استجابة إنشاء المهمة قيمة credits إلى جانب تكوين الطلب. احتفظ ببيانات المهمة الوصفية المبلّغ عنها ومعرّف المهمة المكتملة مع النتيجة، لكي يظل كل فيديو مرتبطًا بإعدادات توليده.

راجع التسلسل كاملًا بالرجوع إلى الموجز الأصلي: مظهر الموضوع وشكل الشيء واتجاه الحركة واستمرارية الكاميرا والمنظر النهائي المقصود. وللمراجعة، حدّد التفصيل الملموس الذي لم يطابق الموجز واحتفظ بأجزاء المشهد الناجحة. احفظ الموجّه ومعرّف الاختيار الدقيق والإعدادات وهوية المهمة ومقاطع الفيديو المكتملة معًا، لكي تستند المقارنة اللاحقة إلى المخرجات الفعلية.

**Ailoot Ultra · فيديو** `POST /v1/videos` `viduq2`

[`viduq2`](https://ailoot.ai/models/ar/#m=viduq2&route=Ultra&caller=viduq2&fmt=videos)

Vidu /`viduq2`

### البداية

ينشئ Vidu Q2 فيديو من موجز نصي لمشهد، بمدة 1–10 ثوانٍ ومخرجات بدقة 540p أو 720p أو 1080p وخمس نسب أبعاد. يستخدم إصدار viduq2 المحدد هذا الموجّه لتحديد الأسلوب والحركة، ويُرجع نتيجته عبر مهمة غير متزامنة.

المدخلات المقبولة

النص

النتائج

فيديو

### متاح في Ailoot · المدخلات والطرائق

**Ailoot Ultra · فيديو** `POST /v1/videos`

الإدخال

`text`

الإخراج

`video`

| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
| --- | --- | --- | --- | --- |
| الحقل`model` | النوع`string` | المتطلبمطلوب | القيم والحدود viduq2 | القيمة الافتراضية— |
| الحقل`prompt` | النوع`string` | المتطلبمطلوب | القيم والحدود الشروط: صِف المشهد المراد توليده. الحد الموثّق هو 2000 حرف؛ تتحقق Ailoot من أن السلسلة النصية غير فارغة وتحافظ على النص. | القيمة الافتراضية— |
| الحقل`duration` | النوع`integer` | المتطلباختياري | القيم والحدود الحد الأدنى: ⁦1⁩ الحد الأقصى: ⁦10⁩ الشروط: يحدد الوصف الخاص بالنموذج viduq2 مدة 1–10 ثوانٍ كاملة. لا توجد مدة افتراضية موثّقة خاصة بالنموذج. الوحدة: ثوانٍ | القيمة الافتراضية— |
| الحقل`seed` | النوع`string` | المتطلباختياري | القيم والحدود الشروط: احذف الحقل أو أرسل السلسلة النصية "0" لاستخدام العشوائية. إذا قُدِّمت قيمة seed غير صفرية، فإنها تختار سلوك seed الثابت الموثّق؛ ولا يوجد نطاق عددي محدد. | القيمة الافتراضية— |
| الحقل`aspect_ratio` | النوع`string` | المتطلباختياري | القيم والحدود 16:9, 9:16, 3:4, 4:3, 1:1 | القيمة الافتراضية16:9 |
| الحقل`resolution` | النوع`string` | المتطلباختياري | القيم والحدود 540p, 720p, 1080p الشروط: توثّق القائمة الخاصة بالنموذج viduq2 هذه الشرائح لمدة 1–10 ثوانٍ. ويذكر تعداد وجدول مشتركان دقة 360p أيضاً؛ لكن انطباقها يتعارض مع تلك القائمة، ولا يُؤكَّد هنا. | القيمة الافتراضية720p |
| الحقل`style` | النوع`string` | المتطلباختياري | القيم والحدود general, anime الشروط: يقبل الطلب المشترك هذا الحقل، لكن التوثيق يذكر صراحةً أنه لا يؤثر في viduq2. | القيمة الافتراضيةgeneral |
| الحقل`movement_amplitude` | النوع`string` | المتطلباختياري | القيم والحدود auto, small, medium, large الشروط: يقبل الطلب المشترك هذا الحقل، لكن التوثيق يذكر صراحةً أنه لا يؤثر في نماذج q2. | القيمة الافتراضيةauto |

تركيبات مواد الإدخال

معلمات الطريقة ودورة حياتها

| المعلمة | المواصفات |
| --- | --- |
| المعلمة`content_type` | المواصفاتapplication/json |
| المعلمة`required` | المواصفاتmodel, prompt |
| المعلمة`optional` | المواصفاتduration, seed, aspect\_ratio, resolution, style, movement\_amplitude |
| المعلمة`material_types` | المواصفاتtext |
| المعلمة`additional_properties` | المواصفاتtrue |
| المعلمة`validation_scope` | المواصفاتتتحقق Ailoot من أن سلسلتي model/prompt غير فارغتين. الأنواع والحدود الاختيارية أدناه هي عقد الطلب الموثّق؛ وتُحفظ حقول الطلب الأخرى للنموذج المختار. |

الأسماء البديلة للطريقة: `/v1/videos/generations`

دورة الحياة: `submit_once_poll_original`

`GET /v1/videos/{request_id}`

`GET /v1/videos/generations/{request_id}`

`GET /v1/videos/{request_id}/content`

`GET /v1/videos/generations/{request_id}/content`

أنشئ مرة واحدة واحتفظ بـid العام وpolling\_url المُعادين.

استعلم دورياً عن العملية الأصلية واقرأ state؛ تتحقق حدود الاكتمال عند success ووجود نتيجة creations\[\].url مملوكة لك.

نزّل كل عنوان URL مُعاد لفيديو مملوك لك؛ لا تستنتج من المثال عدداً ثابتاً للمخرجات أو مدة ثابتة أو معدل إطارات ثابتاً.

### الباقات

##### كيفية احتساب الرسوم النهائية

تقدّر التعرفات المعروضة التكلفة قبل التوليد. تُحسب الرسوم النهائية من التكلفة المسجّلة لعملية التوليد الأصلية. مدة المخرجات المقاسة والكميات المتوقعة ليست الكمية النهائية الخاضعة للفوترة.

مراجع التسعير لا تضيف خيارات للطلب. المعلمات المدعومة مذكورة للطريقة المحددة.

الوضع السريع

غير محدد عند اختيار الوضع السريع

الوضع المرن

غير محدد عند اختيار وضع flex

أقصى جهد للاستدلال

غير محدد عندما يُطبَّق الضبط الافتراضي default مع أقصى جهد للاستدلال

#### تعرفات تقديرية للمقارنة

#### الأسعار حسب الإعدادات

طابق كل رسم مع الشروط المعروضة. طبّق تعرفة واحدة لكل مجموعة من الإعدادات البديلة.

| الإعدادات | جدول التعرفة | الكمية المتوقعة | الرسوم |
| --- | --- | --- | --- |
| الإعداداتالتعرفات الأساسية للرموز | جدول التعرفةالتعرفة الأساسية | الكمية المتوقعة— | الرسوم الإدخال · رموز الإدخال · تقدير للمقارنة فقط **—** / 1K من الرموز الإخراج · رموز الإخراج · تقدير للمقارنة فقط **—** / 1K من الرموز الإدخال · قراءة ذاكرة التخزين المؤقت · تقدير للمقارنة فقط **—** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت · تقدير للمقارنة فقط **—** / 1K من الرموز الإدخال · الكتابة إلى ذاكرة التخزين المؤقت، 1 ساعة · تقدير للمقارنة فقط **—** / 1K من الرموز |
| الإعداداتتكلفة التوليد التقديرية | جدول التعرفة— | الكمية المتوقعةتقدير لتوليد واحد | الرسوم الإخراج · تكلفة التوليد التقديرية · تقدير للمقارنة فقط **$5.12** تقدير قبل الإنشاء هذا التقدير ليس رسومًا إضافية ولا تعرفة ثابتة لعملية التوليد المكتملة. |

تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. [كيفية عمل حجز المبلغ وتسوية الرسوم →](https://ailoot.ai/docs/ar/billing/reserve/)

### أمثلة للطلبات

#### Ailoot Ultra · فيديو

curl · أنشئ فيديوcurl · اقرأ المهمة الأصليةcurl · نزّل كل فيديو تملكه

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
cat > request.json <<'JSON_REQUEST'
{"model":"viduq2","prompt":"In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene."}
JSON_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_POLL'
import json
from pathlib import Path
from urllib.parse import quote,urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
i=r.get("id")
if not isinstance(i,str) or not i:raise SystemExit("Keep original response/headers/id; do not resubmit creation.")
u=urljoin("https://api.ailoot.ai",r.get("polling_url") or "/v1/videos/"+quote(i,safe=""))
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/videos/"):raise SystemExit("Use the actual Ailoot lookup path.")
Path("poll-url.txt").write_text(u)
PY_POLL
curl --fail-with-body --silent --show-error "$(cat poll-url.txt)" -H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
```

```bash
set -eu
python3 - <<'PY_ASSETS'
import json
from pathlib import Path
from urllib.parse import urlsplit
r=json.loads(Path("status.json").read_text())
if r.get("state")!="success":raise SystemExit("Poll the same original job until its owned result is returned.")
creations=r.get("creations")
if not isinstance(creations,list) or not creations:raise SystemExit("No completed video creations.")
urls=[]
for item in creations:
    value=item.get("url") if isinstance(item,dict) else None
    values=[value] if isinstance(value,str) else value
    if not isinstance(values,list) or not values:raise SystemExit("No completed video URL.")
    for u in values:
        if not isinstance(u,str):raise SystemExit("Invalid returned URL.")
        p=urlsplit(u)
        if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/media/assets/") or not p.path.endswith("/content") or not p.query:raise SystemExit("Wait for the actual Ailoot-owned signed result.")
        urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_ASSETS
index=0
while IFS= read -r asset_url; do
  curl --fail-with-body --silent --show-error "$asset_url" -o "video-${index}.bin"
  index=$((index + 1))
done < asset-urls.txt
```

### استلام النتائج وحفظها

#### Ailoot Ultra · فيديو

يحافظ JSON على الحالة الأصلية ومصفوفة creations، مع إضافة الحقول العامة id/provider\_task\_id/polling\_url. تكون عناوين URL المختارة للفيديو فارغة قبل النشر، وتصبح عناوين URL موقّعة تابعة لـAiloot بعد الاكتمال.

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### الاحتفاظ بكل النتائج المكتملة

احفظ كل فيديو مكتمل أو ملف مُرجع؛ ونزّل كل أصل من URL الخاص به الذي تم إرجاعه فعليًا.

نزّل كل عنوان URL فعلي مُعاد في creations\[\].url؛ ويحدد فهرس المحتوى مخرجاً فعلياً مُعاداً واحداً.

##### عند الحاجة إلى التحقق من الاستجابة الأصلية

لا يسرد التعريف المثبّت أي حالة فشل نهائية. احتفظ بالاستجابة والترويسات والمعرّف الأصلية، وتحقق من العملية نفسها عند ظهور حالة غير معروفة أو خطأ result\_pending\_check؛ ولا تعِد إرسال طلب إنشاء مجهول النتيجة مطلقاً.

حقول الاستجابة

| الحقل | النوع | المعنى |
| --- | --- | --- |
| الحقل`id` | النوعstring | المعنىالمعرّف العام المُعاد لمهمة أو عملية في Ailoot. |
| الحقل`provider_task_id` | النوعstring | المعنىمعرّف المهمة الأصلي، المنفصل عن id العام. |
| الحقل`polling_url` | النوعstring | المعنىمسار الاستعلام المُعاد في Ailoot للمهمة الأصلية. |
| الحقل`task_id` | النوعstring when supplied | المعنىالمعرّف الأصلي الموجود في استجابة الإنشاء. |
| الحقل`state` | النوعstring when supplied | المعنىحالة المهمة الأصلية: created للحالة المعلّقة المثبّتة، وsuccess للاكتمال. |
| الحقل`err_code` | النوعstring when supplied | المعنىتشخيص المهمة؛ لا تحدد المواصفات المحفوظة قائمة محصورة لرموز الخطأ. |
| الحقل`creations[].url` | النوعstring\|string\[\] | المعنىيُستبدَل كل عنوان URL مختار لفيديو مكتمل بعنوان URL موقّع تابع لـAiloot. |
| الحقل`creations[].video.duration` | النوعnumber when supplied | المعنىمدة الفيديو المُعادة؛ افحص النتيجة المكتملة الفعلية. |
| الحقل`creations[].video.fps` | النوعinteger when supplied | المعنىمعدل الإطارات المُعاد؛ ولا يُوعَد بمعدل إطارات ثابت. |
| الحقل`creations[].video.resolution.width` | النوعinteger when supplied | المعنىعرض المخرجات المُعاد بالبكسل. |
| الحقل`creations[].video.resolution.height` | النوعinteger when supplied | المعنىارتفاع المخرجات المُعاد بالبكسل. |

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

| الاستجابة | الشرط | الخطوة التالية |
| --- | --- | --- |
| الاستجابة⁦400⁩ · `invalid_request_error` | الشرطJSON أو النموذج غير صالح، أو سلاسل نصية مطلوبة مفقودة أو فارغة، أو فهرس محتوى غير صالح. | الخطوة التالية |
| الاستجابة⁦401⁩ · `authentication_error` | الشرطمفتاح API الخاص بـAiloot غير صالح. | الخطوة التالية |
| الاستجابة⁦403⁩ · `permission_error` | الشرطمجموعة مفتاح API غير مخوّلة لاستخدام مسار الوسائط هذا. | الخطوة التالية |
| الاستجابة⁦404⁩ · `not_found_error` | الشرطالمهمة الأصلية أو المخرج المطلوب غير موجود، أو غير مملوك للمستخدم ومفتاح API والمجموعة نفسها. | الخطوة التالية |
| الاستجابة⁦502⁩ · `result_pending_check` | الشرطالإرسال الأصلي أو حالته غير مكتملين، أو يتعذر التحقق من اتساقهما؛ احتفظ بالمعرّف الأصلي ولا تعِد الإرسال. | الخطوة التالية |
| الاستجابة⁦503⁩ · `result_pending_check` | الشرطلا يزال الربط الأصلي أو المسار أو الوسائط المملوكة لك قيد التحقق؛ تابع التحقق من تلك العملية الأصلية. | الخطوة التالية |
| الاستجابة⁦503⁩ · `server_error` | الشرطخدمة الوسائط أو مخزن المهمة الأصلية غير متاح. | الخطوة التالية |

### الأسماء البديلة

#### الأسماء البديلة للنموذج

**Ailoot Ultra** [`viduq2`](https://ailoot.ai/models/ar/#m=viduq2&route=Ultra&caller=viduq2&fmt=videos)

#### الأسماء البديلة لمسارات الطرائق

`/v1/videos/generations`

#### معرّفات النماذج ذات الصلة IDs

[`viduq2`](https://ailoot.ai/models/ar/#m=viduq2&route=Ultra&caller=viduq2&fmt=videos)

FAQ · Vidu: Q2 Text-to-Video

ما المدخلات والنتائج المتاحة؟

`POST /v1/videos` · `viduq2`: `text` → `video`

ما الحقول التي يستخدمها الطلب؟

`POST /v1/videos` · `viduq2`: `model`, `prompt`, `duration`, `seed`, `aspect_ratio`, `resolution`, `style`, `movement_amplitude`

ما الحدود المطبقة؟

`POST /v1/videos` · `viduq2`: `duration.minimum`: `1`; `duration.maximum`: `10`

اربط Ailoot بخدمة Claude Code أوOpenCode أوHermes أوتطبيقك.

## الشركة ومحفظة مشاريعها

الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.

## اشتر الرموز بخصم.

خصم اشتراك للعمل المنتظم. الرموز الترويجية حتى 50% على شراء الرموز.

الاشتراك

اختر خطة بخصم لطلباتك المنتظمة.

رمز خصم حتى 50%

أدخل الرمز عند الشراء. يعاد حساب السعر وفق العرض الساري.

المصروفات في السجل

يحفظ النموذج والرموز والمبلغ لكل طلب.

[اختر اشتراكا](https://ailoot.ai/docs/ar/billing/subscriptions/) · [اعرض أسعار النماذج](https://ailoot.ai/models/ar/)

## اربط API بالمنتج الذي تبيعه.

SaaS والتطبيقات والبوتات وفق العرض واتفاقية ترخيص Ailoot. لإعادة البيع، اطلب ترخيص موزع.

تطبيق تجاري

أضف توليد النص والصور والفيديو والصوت إلى ميزات خدمتك المدفوعة.

ترخيص إعادة البيع

أرسل وصف المشروع وطريقة توفير الوصول. اطلب شروط استخدام وإعادة بيع مكتوبة.

المستندات على الموقع

العرض واتفاقية الترخيص وسياسة معالجة البيانات متاحة قبل الربط.

[اطلب ترخيص إعادة بيع](mailto:support@ailoot.ai) · [العرض واتفاقية الترخيص](https://ailoot.ai/legal/offer?lang=ar)

## Ailoot · الشركة ومحفظة مشاريعها





تستند Ailoot إلى خبرة تشغيلية متراكمة وقاعدة عملاء واسعة وخدمة مستقرة ومراقبة مستمرة لمؤشرات الأداء KPI.





الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.





توظف Ailoot هذه الخبرة التشغيلية لإتاحة الوصول عبر API إلى قدرات الذكاء الاصطناعي في منتجات العملاء ووكلائهم وتطبيقاتهم وعمليات الأتمتة.
