in progress
This commit is contained in:
112
README.md
112
README.md
@@ -1,3 +1,111 @@
|
||||
# smsc
|
||||
# SMSc - Отправка SMS через smsc.ru
|
||||
|
||||
Отправка смс при помощи сервиса 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
|
||||
|
||||
Reference in New Issue
Block a user