Для добавления своей реализации взаимодействия с сторонним API по отправке сообщений, необходимо:
1. Добавить в список "Службы отправки сообщений"(MessageProvider) новую запись. В поле Дополнительное значение укажите название будущего класса.
2. Унаследуйте класс от nc_messaging_service(базовый, родительский класс по взаимодействию с сторонним API) и переопределите необходимые для ваших потребностей методы.
Если данный сервисный класс поддерживает функционал входящих звонков, реализуйте интерфейс nc_messaging_api_flash_call
Методы, которые необходимо переопределить:
get_settings_mapping(возвращает структуру данных с полями, отображаемую на странице создания службы)
send_message()
send_multi_messages(если API поддерживает отправку сообщений множеству адресатов)
validate_recipient(если требуется отличная от реализации родительского класса валидации номера телефона)
Базовый пример класса:
class awesome_sms_provider extends nc_messaging_sms_service implements nc_messaging_api_flash_call {
/**
* @return array[]
*/
public static function get_settings_mapping() {
return array(
"api_key" => array(
"type" => "string",
"caption" => NETCAT_MODULE_MESSAGING_SERVICE_API_TOKEN,
"required" => true,
),
"sender_id" => array(
"type" => "string",
"caption" => NETCAT_MODULE_MESSAGING_SERVICE_SENDER_ID,
"required" => true,
),
);
}
/**
* @inheritDoc
*/
public function send_message($recipient_id, $message, array $parameters = array()) {
// Определите свою реализацию метода отправки сообщения
return null;
}
/**
* @inheritDoc
*/
public function send_multi_messages(array $recipient_ids, $message, array $parameters = array()) {
// Определите свою реализацию метода по отправке на нескольких адресатов
return null;
}
/**
* @inheritDoc
*/
public function get_balance(array $parameters = array()) {
// Определите свою реализацию метода по получению баланса
return null;
}
/**
* @inheritDoc
*/
protected function validate_recipient($phone) {
// Определите свою реализацию метода по валидации телефона, при необходимости
return null;
}
/**
* @inheritDoc
*/
public function get_status_info($message_id, array $parameters = array()) {
// Определите свою реализацию метода получения информации об отправленном сообщении
return null;
}
/**
* @inheritDoc
*/
public function push_flash_call($phone, $confirmation_code) {
// Определите свою реализацию метода отправки входящего звонка
return null;
}
}
3. Перейдите в раздел "Службы" модуля и сконфигурируйте службу на основе созданного класса
4. В настройках модуля выберите для каких типов событий будет использоваться созданная служба