Расширение списка SMS-сервисов
Механизм подключения
Плагин предоставляет два фильтра для интеграции:
1. Добавление сервиса в список доступных
php
add_filter('iiko_sms_services', function ($sms_services) {
$sms_services['my_service'] = "Название вашего сервиса";
return $sms_services;
}, 10, 1);Параметры:
my_service- уникальный ключ сервиса (латиница, без пробелов)- «Название вашего сервиса» - отображаемое имя в интерфейсе
2. Реализация обработчика отправки
php
add_filter('iiko_sms_methods', 'sendSmsByMyService', 10, 3);
function sendSmsByMyService($service, $phone, $sms) {
// Проверяем наш ли это сервис
if ($service !== 'my_service') {
return $service;
}
// Формируем параметры запроса
$params = [
'user' => 'your_login',
'from' => 'sender_name',
'password' => 'your_password',
'to' => $phone,
'text' => $sms,
// Дополнительные параметры API
];
// Отправка HTTP-запроса
$response = wp_remote_post('https://your-sms-gateway.com/api', [
'body' => $params
]);
// Обработка ответа
if (!is_wp_error($response) && $response['response']['code'] == 200) {
return true; // Успешная отправка
}
return false; // Ошибка отправки
}Рекомендации по реализации
Безопасность:
- Храните учетные данные в
wp-config.php - Используйте
wp_remote_*функции для HTTP-запросов
- Храните учетные данные в
Обработка ошибок:
- Логируйте неудачные попытки отправки
- Реализуйте повторные попытки при временных ошибках
Тестирование:
- Проверяйте работу с разными номерами телефонов
- Убедитесь в корректной обработке спецсимволов
Пример полной реализации
php
// Добавляем сервис в список
add_filter('iiko_sms_services', function ($services) {
$services['my_sms_provider'] = "Мой SMS Провайдер";
return $services;
});
// Регистрируем обработчик
add_filter('iiko_sms_methods', 'handle_my_sms_provider', 10, 3);
function handle_my_sms_provider($service, $phone, $message) {
if ($service !== 'my_sms_provider') {
return $service;
}
$api_key = defined('MY_SMS_API_KEY') ? MY_SMS_API_KEY : '';
$response = wp_remote_post('https://api.my-sms-provider.com/v1/send', [
'headers' => [
'Authorization' => 'Bearer ' . $api_key,
'Content-Type' => 'application/json',
],
'body' => json_encode([
'phone' => sanitize_phone($phone),
'text' => sanitize_text_field($message),
'sender' => 'iikoShop'
]),
'timeout' => 15
]);
if (is_wp_error($response)) {
error_log('SMS sending error: ' . $response->get_error_message());
return false;
}
$body = json_decode(wp_remote_retrieve_body($response), true);
return isset($body['success']) && $body['success'] === true;
}
// или
apply_filters('iiko_sms_methods', 'sendSmsByMyService', 10, 3);
function sendSmsByMyService($service, $phone, $sms)
{
if($service !== 'my_service'){
return $service;
}
// Enter get params for your sms service
$get_params = http_build_query(
/*[
'user' => $login,
'sadr' => $sign,
'pwd' => $pass,
'dadr' => $phone,
'text' => $sms,
]*/
);
// send http request, for example:
$response = wp_remote_get('https://your-service.ru/sendsms.php?' . $get_params);
if (!is_wp_error($response)) {
return true;
}
return false;
}Для интеграции:
- Создайте файл
custom-sms-integration.phpв папкеmu-pluginsилиmu-pluginsили в вашей теме - Добавьте туда свой код, после хука
init - Убедитесь, что ваш сервис появился в настройках плагина
::: Подсказка: Для сложных интеграций рекомендуется создать отдельный плагин :::