# Як налаштувати відправку SMS через Alpha SMS

Alpha SMS дозволяє відправляти SMS повідомлення, зокрема OTP (one-time-password) для верифікації клієнтів. Це корисно для надання доступу до широкого набору послуг (знижки, особистий кабінет, можливість онлайн-оплати та інше).

> 📖 **Документація:** Детальніше про Alpha SMS API читайте на [офіційному сайті](https://alphasms.ua/api/).

## Передумови

- Активний обліковий запис Alpha SMS
- API-ключ від Alpha SMS
- Зареєстроване alpha ім'я для розсилок

## Отримання API ключа

1. Увійдіть у [панель управління Alpha SMS](https://alphasms.ua/)
2. Перейдіть до розділу API
3. Створіть або скопіюйте API-ключ

## Отримання alpha імені

1. У панелі Alpha SMS перейдіть до розділу налаштувань
2. Зареєструйте alpha ім'я для розсилок
3. Очікуйте на схвалення

## Налаштування action sms_alphasms_send

Для відправки SMS використовується action **sms_alphasms_send**.

### Конфігурація

Заповніть JSON-конфіг:

```json
{
  "auth": "635f14be894033beded246d3adf9b199fdd51e06",
  "url": "https://alphasms.ua/api/http.php",
  "sms_signature": "Alpha"
}
```

**Параметри:**
- `auth` — ваш API-ключ до сервісу Alphasms
- `url` — API-url для запитів до сервісу Alphasms
- `sms_signature` — alpha ім'я для розсилок (отримується за допомогою сервісу Alphasms)

## Необхідні змінні

Для коректної роботи action потрібно мати 3 змінні в state:

- `otp` — згенерований на боці ConnectiveOne OTP
- `phone` — номер користувача, на який буде відправлене SMS повідомлення
- `id` — порядковий номер повідомлення (повинен бути унікальним)

> ⚠️ **Важливо:** Змінні повинні бути встановлені в state перед викликом action.

## Приклад налаштування сценарію для відправки OTP

### Крок 1: Генерація OTP та ID

Використовуйте action для генерації:

```json
{
  "id": "roundTo(random(1)*1000000,0)",
  "otp": "roundTo(random(1)*10000,0)"
}
```

**Пояснення:**
- `id` — 6-значний номер повідомлення (генерується випадкове число від 0 до 1, множиться на 1000000, округлюється)
- `otp` — 4-значний OTP для надсилання користувачу (генерується випадкове число від 0 до 1, множиться на 10000, округлюється)

### Крок 2: Отримання номера телефону

Отримайте номер телефону користувача через блок "Очікування відповіді користувача" з налаштуванням валідації на номер телефону.

### Крок 3: Використання sms_alphasms_send

Після генерації OTP та отримання номера телефону використовуйте action **sms_alphasms_send**.

**Результат:** В разі успіху на вказаний номер користувача прийде згенерований раніше OTP-код.

### Крок 4: Перевірка введеного коду

Після успішної відправки додайте блок перевірки введеного користувачем коду.

**Налаштування json-конфігу для дії if_else:**

```json
{
  "if": {
    "{{sended_otp}}=={{otp}}": "ok",
    "event": "ok"
  }
}
```

**Логіка:**
- Якщо `sended_otp` дорівнює `otp` — перехід по події `ok`
- В разі успіху користувач отримує доступ до інформації
- А якщо верифікацію не пройдено — йому буде запропоновано повторити спробу чи зв'язатися з оператором

## Обробка помилок

Якщо відправка SMS завершилася помилкою, action повертає `"error"`. В сценарії можна обробити цю подію для:

- Повторної спроби
- Відправки повідомлення користувачу
- Передачі до оператора

## Обмеження

- Налаштування action потребує доступу до API стороннього сервісу відправки SMS та базове знання JSON
- Номер телефону повинен бути в правильному форматі (залежить від вимог Alphasms)
- OTP код має бути числовим
- ID повідомлення повинен бути унікальним

## Пов'язані статті

- [AlphaSMS API Documentation](https://alphasms.ua/api/) — офіційна документація AlphaSMS
- [Створити кастомний action](/uk/actionjail/how-to/admin-manage-actions.md) — створення кастомних actions через ActionJail
