# واجهة JavaScript

> لصفحات الطلب التي ترسل الطلب بـ fetch أو AJAX بدل إرسال نموذج.

هذه صفحة واحدة من توثيق Antiro (https://docs.antiro.io/ar/sdk/javascript). كل الصفحات في ملف واحد: https://docs.antiro.io/ar/llms-full.txt

> **قد لا تحتاج إليها**
>
> إن كان زر الطلب زر إرسال في نموذج الطلب، فالسكربت يغطيه تلقائياً، حتى لو كان كودك هو الذي يرسل الطلب.

## افحص الطلب قبل إرساله

استدعِ `Antiro.decide()` عند ضغط الزبون على زر الطلب، وأرسل `token` مع الطلب. قد لا يكون السكربت قد حُمِّل، فتأكد من وجوده أولاً، وأرسل الطلب في كل الأحوال، ففحص الخادم يبقى قائماً.

**صفحة طلب ترسل بـ JavaScript**

```js
async function placeOrder(order) {
  const check = window.Antiro
    ? await window.Antiro.decide({
        phone: order.phone,
        name: order.name,
        address: order.address,
      })
    : { act: 'allow', token: '' };

  // notice or block: the shopper saw a message
  if (check.act !== 'allow') return;

  await fetch('/api/orders', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      ...order,
      session_token: check.token,
    }),
  });
}
```

## ما تعيده decide

تعيد `Antiro.decide()` القيمة `{ act, token }`:

| `act` | معناها | ما تفعله |
| --- | --- | --- |
| `allow` | يمكن إرسال الطلب، وتعود أيضاً عند أي فشل. | أرسل الطلب، و`token` في `session_token`. |
| `notice` | طُلب من الزبون تغيير شيء من جهته. | لا ترسل، واستدعِ `decide()` عند الضغطة التالية. |
| `block` | رأى الزبون رسالة الرفض. | لا ترسل. |

## المرجع

- `Antiro.decide(contact)` (Promise): يفحص الطلب. يحمل `contact` الحقول `phone` و`name` و`address`، وكلها اختيارية. كل استدعاء يشغّل فحصاً واحداً، والاستدعاء أثناء فحص جارٍ يتشارك جوابه.
- `Antiro.token()` (string): مرجع الطلب الحالي، لإرساله في `session_token`.
- `Antiro.ready()` (Promise): يكتمل بعد محاولة السكربت فتح جلسته.
- `Antiro.verdict()` (string): `bot` إن حكم Antiro بأن التبويب آلي، و`ok` إن أجاب، وإلا `unknown`.
- `Antiro.version` (string): إصدار السكربت.
