Files
smsc/README.md
2026-01-31 19:30:41 +03:00

112 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SMSc - Отправка SMS через smsc.ru
Пакет `smsc` предоставляет простой способ отправки SMS через сервис [smsc.ru](https://smsc.ru) на языке Go.
## Установка
```bash
go get git.gm6.ru/icewind/smsc
```
## Использование
```go
package main
import (
"git.gm6.ru/icewind/smsc"
)
func main() {
// Создание запроса на отправку SMS
req := smsc.RequestSMS{
ApiKey: аш_api_ключ", // Замените на ваш реальный API-ключ
Phone: "+79991234567", // Номер получателя
Message: "Привет от Go!", // Текст сообщения
}
// Отправка SMS
resp := smsc.SendSMS(req)
// Проверка результата
if resp.Error != "" {
// Обработка ошибки
panic(resp.Error)
}
// Успешная отправка
fmt.Printf("SMS отправлена. ID: %d, Количество сообщений: %d\n", resp.ID, resp.Cnt)
}
```
## Функции
### `SendSMS(req RequestSMS) ResponseSMS`
Отправляет SMS через сервис smsc.ru.
**Параметры:**
- `req` — структура `RequestSMS` с данными для отправки.
**Возвращает:**
- `ResponseSMS` — ответ от сервера, включая `ID` и `Cnt`, или ошибку.
## Структуры
### `RequestSMS`
| Поле | Тип | Описание | JSON-тег |
|-----------|--------|------------------------------|--------------|
| `ApiKey` | string | API-ключ от smsc.ru | `apikey` |
| `Phone` | string | Номер телефона получателя | `phones` |
| `Message` | string | Текст сообщения | `mes` |
### `ResponseSMS`
| Поле | Тип | Описание | JSON-тег |
|-----------|-----|---------------------------------|----------|
| `ID` | int | Уникальный идентификатор SMS | `id` |
| `Cnt` | int | Количество отправленных SMS | `cnt` |
| `Error` | string | Описание ошибки (если есть) | `error` |
| `ErrorCode`| int | Код ошибки | `error_code` |
## Обработка ошибок
Если произошла ошибка при отправке, поле `Error` в `ResponseSMS` будет содержать описание ошибки.
```go
resp := smsc.SendSMS(req)
if resp.Error != "" {
log.Printf("Ошибка: %s (код: %d)\n", resp.Error, resp.ErrorCode)
}
```
## Тестирование
Для тестирования функции `SendSMS` можно использовать реальные вызовы (интеграционные тесты). Пример теста:
```go
func TestSendSMS(t *testing.T) {
req := RequestSMS{
ApiKey: аш_api_ключ",
Phone: "+79991234567",
Message: "Тестовое сообщение",
}
resp := SendSMS(req)
if resp.Error != "" {
t.Errorf("Ошибка при отправке SMS: %s", resp.Error)
}
if resp.ID == 0 {
t.Error("Ожидался ненулевой ID")
}
}
```
> **Внимание:** Не забудьте заменить `ваш_api_ключ` на реальный ключ и убедитесь, что номер телефона корректен.
## Лицензия
MIT