# How to Configure Sending Viber/SMS via Infobip

Infobip allows sending text messages through Viber and SMS. This is useful for automating communications with clients, for example, for order confirmations, promotional notifications, or other important information.

> 📖 **Documentation:** For more details about Infobip API, read on the [official website](https://www.infobip.com/docs/api).

---

## Prerequisites

- Active Infobip account
- API key from Infobip
- Registered Sender Name for Viber (if using Viber)

---

## Obtaining API Key

1. Sign in to [Infobip management panel](https://www.infobip.com/)
2. Go to the **API Keys** section
3. Create a new API key
4. Copy the received key

---

## Configuring Sender Name for Viber

1. In the Infobip panel, go to the **Viber Sender Names** section
2. Register a unique sender name (usually your company name)
3. Wait for approval (may take some time)

---

## Creating Action for Infobip

To send messages through Infobip, you need to create a custom action through Action Jail.

### Action Code Example

```javascript
const axios = require('axios');

// Constants for API configuration
const API_KEY = 'YOUR_API_KEY'; // Your Infobip API key
const SENDER_NAME = 'DemoCompany'; // Sender name for Viber
const BASE_URL = 'https://api.infobip.com'; // Base URL for Infobip
const API_PATH = '/viber/2/messages'; // Path for sending messages

const action_infobip_send_message = async function() {
    const j = this.getCurrentStateJSON();
    if (!j || typeof j !== 'object') {
        console.error("Error: JSON data is invalid or not an object.");
        return "error";
    }

    const message = (j.message || '').trim();
    const to = (j.to || '').trim();

    if (!message || !to) {
        console.error("Error: 'message' or 'to' is missing in the JSON data.");
        return "error";
    }

    const options = {
        method: 'POST',
        url: `${BASE_URL}${API_PATH}`,
        headers: {
            'Authorization': `App ${API_KEY}`,
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        },
        data: {
            messages: [
                {
                    sender: SENDER_NAME,
                    destinations: [{ to }],
                    content: {
                        text: message,
                        type: "TEXT"
                    }
                }
            ]
        }
    };

    try {
        const response = await axios(options);
        console.log("Response from Infobip:", response.data);
        return "success";
    } catch (error) {
        console.error("Error sending message:", error.response?.data || error.message);
        return "error";
    }
};

module.exports = action_infobip_send_message;
```

---

## Usage in Scenario

### Data Preparation

Before calling the action, set variables in state:

```json
{
  "message": "Your order #123 has been shipped!",
  "to": "380971234567"
}
```

**Parameters:**
- `message` — message text to send
- `to` — recipient phone number in international format (without `+` sign)

### Result Handling

**Success (`success`):**
- If the message is successfully sent, the action returns `"success"`
- In the scenario, you can add subsequent actions (logging, status update, etc.)

**Error (`error`):**
- If an error occurred, the action returns `"error"`
- In the scenario, you should provide error handling (notify administrator, retry, etc.)

---

## Sending SMS via Infobip

For sending SMS, a different endpoint is used:

```javascript
const smsOptions = {
    method: 'POST',
    url: `${BASE_URL}/sms/2/text/single`,
    headers: {
        'Authorization': `App ${API_KEY}`,
        'Content-Type': 'application/json'
    },
    data: {
        from: SENDER_NAME,
        to: to,
        text: message
    }
};
```

---

## Limitations

- Viber messages have text length limitations
- Phone number must be in international format
- Sender Name must be registered in Infobip
- Rate limiting may apply depending on Infobip tariff plan

---

## Related Articles

- [Infobip API Documentation](https://www.infobip.com/docs/api) — official Infobip documentation
- [Create custom action](/en/actionjail/how-to/admin-manage-actions.md) — creating custom actions through ActionJail

