После долгих мучений и копаний я все-таки докопался до истины. Может кому пригодится.
[CODE]/**
* ID нашего типа контакта
* Не может быть равен 1, так как 1 уже забронирована
* в \bitrix\modules\catalog\lib\subscribe.php для CONTACT_TYPE_EMAIL (Т.е. для электронной почты)
*/
define(CONTACT_TYPE_PHONE, 2); // ...а лучше наверное взять побольше, мало ли, в следующих версиях Торгового каталога добавят еще свои...
// Сначала регистрируем событие для добавления нового типа контакта
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'catalog',
\Bitrix\Catalog\SubscribeTable::EVENT_ADD_CONTACT_TYPE, // Событие onAddContactType
'onAddContactTypeHandler' // здесь ваш обработчик события
);
/**
* Обработчик события onAddContactType
*
* @param СEvent $contactTypes
*/
function onAddContactTypeHandler(&$contactTypes) {
/**
*
*/
$contactTypes->setParameter(
'0',
[CONTACT_TYPE_PHONE => [
'ID' => CONTACT_TYPE_PHONE,
'NAME' => 'Телефон',
'RULE' => '/[\d]{10}/',
'HANDLER' => function(Event $event)
{
$eventData = $event->getParameters();
foreach($eventData as $userContact => $dataList)
{
foreach($dataList as $data)
{
/*
$data имеет следующие поля
(
[ID] => 2
[USER_CONTACT] => контактные данные
[CONTACT_TYPE] => 2
[DATE_TO] =>
[PRODUCT_NAME] => название товара
[DETAIL_PAGE_URL] => ссылка на товар
[IBLOCK_ID] => id инфоблока
[TYPE] => тип товара
[ITEM_ID] => id товара
[SITE_ID] => id сайта
[USER_NAME] => имя пользователя
[USER_LAST_NAME] => фамилия пользователя
[EVENT_NAME] => CATALOG_PRODUCT_SUBSCRIBE_NOTIFY
[EMAIL_TO] => контактные данные
[NAME] => название товара
[PAGE_URL] => ссылка на товар
[PRODUCT_ID] => id товара
[CHECKOUT_URL] => ссылка на добавление товара в корзину
[CHECKOUT_URL_PARAMETERS] => параметры ссылки товара на добавление в корзину
[UNSUBSCRIBE_URL] => ссылка на отписку
[UNSUBSCRIBE_URL_PARAMETERS] => параметры ссылки на отписку
)
*/
if ($data['CONTACT_TYPE'] == CONTACT_TYPE_PHONE) {
// Здесь ваша функция отправки СМС
};
}
}
return true;
}
]
]
);
}
[/CODE]
Как-то так.... Если кто увидел ошибки - поправьте...
Сама подписка на товар на D7
[CODE]$subscribeManager = new \Bitrix\Catalog\Product\SubscribeManager;
$contactTypes = $subscribeManager->contactTypes;
$subscribeData = array(
'USER_CONTACT' => $USER->getEmail() ? $USER->getEmail() : false,
'ITEM_ID' => 17715, //ID товара
'SITE_ID' => 's1',
'CONTACT_TYPE' => \Bitrix\Catalog\SubscribeTable::CONTACT_TYPE_EMAIL, //Здесь уже можете вписать свой
'USER_ID' => $userId ? $userId : false,
);
$subscribeId = $subscribeManager->addSubscribe($subscribeData);
if($subscribeId){
}else{
$errorObject = current($subscribeManager->getErrors());
$errors = array('error' => true);
if($errorObject)
{
$errors['message'] = $errorObject->getMessage();
if($errorObject->getCode() == $subscribeManager::ERROR_ADD_SUBSCRIBE_ALREADY_EXISTS)
{
$errors['setButton'] = true;
}
}
}
[/CODE]