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

3.5 KiB
Raw Permalink Blame History

SMSc - Отправка SMS через smsc.ru

Пакет smsc предоставляет простой способ отправки SMS через сервис smsc.ru на языке Go.

Установка

go get git.gm6.ru/icewind/smsc

Использование

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 будет содержать описание ошибки.

resp := smsc.SendSMS(req)
if resp.Error != "" {
	log.Printf("Ошибка: %s (код: %d)\n", resp.Error, resp.ErrorCode)
}

Тестирование

Для тестирования функции SendSMS можно использовать реальные вызовы (интеграционные тесты). Пример теста:

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