# 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