сервер обмена — php -ews — Push-уведомления

Я подписываюсь на push-уведомления EWS для событий календаря и для регистрации уведомлений.

Я использую PHP-EWS: jamesiarmes / php-ews и Symfony 4.1

Для подписки я использую этот код:

    $ews = new Client($this->host, $this->username, $this->password, $this->version);
$ews->setCurlOptions($this->curlOptions);

$eventTypes = new NonEmptyArrayOfNotificationEventTypesType();
$eventTypes->EventType[] = NotificationEventTypeType::CREATED_EVENT;
$eventTypes->EventType[] = NotificationEventTypeType::MODIFIED_EVENT;
$eventTypes->EventType[] = NotificationEventTypeType::DELETED_EVENT;

$eventTypes->EventType[] = NotificationEventTypeType::COPIED_EVENT;
$eventTypes->EventType[] = NotificationEventTypeType::MOVED_EVENT;


$folderIDs = new NonEmptyArrayOfBaseFolderIdsType();
$folderIDs->DistinguishedFolderId = new DistinguishedFolderIdType();
$folderIDs->DistinguishedFolderId->Id = DistinguishedFolderIdNameType::CALENDAR;


$pushSubscription = new PushSubscriptionRequestType();
$pushSubscription->FolderIds = $folderIDs;
$pushSubscription->EventTypes = $eventTypes;


$pushSubscription->StatusFrequency = 1;
$pushSubscription->URL = $url;

$subscribe_request = new SubscribeType();
$subscribe_request->PushSubscriptionRequest = $pushSubscription;

$response = $ews->Subscribe($subscribe_request);

return $response;

Мой WSDL выглядит следующим образом, я использую функцию автообнаружения zend soap для автоматического генерирования этого:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:tns="http://192.168.11.7/app_dev.php/api/soap/server"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" name="ExchangeSoapService"targetNamespace="http://192.168.11.7/app_dev.php/api/soap/server">
<types>
<xsd:schema targetNamespace="http://192.168.11.7/app_dev.php/api/soap/server"/>
</types>
<portType name="ExchangeSoapServicePort">
<operation name="SendNotification">
<documentation>Check soap service, display name when called</documentation>
<input message="tns:SendNotificationIn"/>
<output message="tns:SendNotificationOut"/>
</operation>
</portType>
<binding name="ExchangeSoapServiceBinding" type="tns:ExchangeSoapServicePort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="SendNotification">
<soap:operation soapAction="http://192.168.11.7/app_dev.php/api/soap/server#SendNotification"/>
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="http://192.168.11.7/app_dev.php/api/soap/server"/>
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="http://192.168.11.7/app_dev.php/api/soap/server"/>
</output>
</operation>
</binding>
<service name="ExchangeSoapServiceService">
<port name="ExchangeSoapServicePort" binding="tns:ExchangeSoapServiceBinding">
<soap:address location="http://192.168.11.7/app_dev.php/api/soap/server"/>
</port>
</service>
<message name="SendNotificationIn">
<part name="arg" type="xsd:anyType"/>
</message>
<message name="SendNotificationOut">
<part name="return" type="xsd:anyType"/>
</message>

После некоторого выяснения я получаю код успеха, который включает SubscriptionId и Watermark, но он не получает уведомление!

Может ли кто-нибудь помочь с этим? Что я делаю неправильно?
Как я могу проверить, отправляет ли биржа уведомления?
Возможно ли, что в моем обмене отключены уведомления?

1

Решение

Обычно уведомления, которые не приходят после успешной подписки, являются либо проблемой брандмауэра, либо проблемой маршрутизации / DNS. Я не думаю, что вы поделились тем, что вы установили в $url но если в URL есть порт, его нужно открыть на брандмауэре, а если в нем есть имя хоста, это имя должно быть PINGable от сервер Exchange.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector