Проблема с отправкой push уведомлений

 

Здравствуйте!

Сегодня ночью советник неоднократно пытался отправить мне push уведомление о критической ситуации на счёте, но потерпел фиаско. Ранее уведомления отправлялись без проблем.

Наутро в журнале я обнаружил множество таких записей:

Notifications: failed send request [0] send request failed [12007]
Notifications: 'SOME_TEXT' not sent to '5A1A7830,EDD4A391'

Если прямо сейчас зайти в настройки терминала, убедиться в том, что галочка "Enable Push Notifications" установлена, поле MetaQuotes ID заполнено и нажать кнопку "Test", то через некоторое время в журнале появляется новая запись:

2020.10.09 09:16:57.542 Notifications: 'SOME_TEXT' not sent to '5A1A7830,EDD4A391'

Тот же результат достигается вызовом функции SendNotification() из скрипта. При этом функция возвращает true, GetLastError() возвращает 0, а на месте SOME_TEXT в журнале печатается текст самого первого уведомления, которое не было отправлено ранее.

Пожалуйста, подскажите, как решить данную проблему? Что может означать [12007] в самой первой записи? Эти цифры остаются постоянными во всех записях. 

 
Janis Ozols:

Пожалуйста, подскажите, как решить данную проблему? Что может означать [12007] в самой первой записи? Эти цифры остаются постоянными во всех записях. 

Это ошибка определения имени сервера. См. msdn.

Программа никак не может повлиять на эту ситуацию. Это проблема либо с каким-то соединением на стороне сервера платформы, либо с DNS.

Error Messages (Wininet.h) - Win32 apps
Error Messages (Wininet.h) - Win32 apps
  • 2018.05.31
  • stevewhims
  • docs.microsoft.com
The WinINet functions return error codes where appropriate. The following errors are specific to the WinINet functions.
 
Ihor Herasko:

Это ошибка определения имени сервера. См. msdn.

Программа никак не может повлиять на эту ситуацию. Это проблема либо с каким-то соединением на стороне сервера платформы, либо с DNS.

Посмотрел и понял, что я, очевидно, неверно сформулировал вопрос.

Дело в том, что я не вызываю функции из внешних DLL. Ни из wininet.dll, ни откуда-либо ещё. Я также не использую функцию WebRequest, которая потенциально могла бы вызвать какие-то проблемы с DNS.

Я просто пытаюсь отправить push уведомление и использую для этого встроенную функцию MQL SendNotification. Согласно документации, она может вернуть true, если сообщение отправлено и false в противном случае. У меня она возвращает true, но уведомление не отправляется и в журнале появляются такие сообщения:

Notifications: failed send request [0] send request failed [12007]
Notifications: 'SOME_TEXT' not sent to '5A1A7830,EDD4A391'
 
Janis Ozols:

Посмотрел и понял, что я, очевидно, неверно сформулировал вопрос.

Дело в том, что я не вызываю функции из внешних DLL. Ни из wininet.dll, ни откуда-либо ещё. Я также не использую функцию WebRequest, которая потенциально могла бы вызвать какие-то проблемы с DNS.

Я просто пытаюсь отправить push уведомление и использую для этого встроенную функцию MQL SendNotification. Согласно документации, она может вернуть true, если сообщение отправлено и false в противном случае. У меня она возвращает true, но уведомление не отправляется и в журнале появляются такие сообщения:

С вопросом все нормально. Вовсе не обязательно использовать WinAPI - функции непосредственно, чтобы быть застрахованным от ошибок, связанных с ними. В описанном случае проблема не на стороне MQL-программы, а на стороне терминала. Причем это не ошибка терминала. Это именно проблема связи где-то далее. Ведь SendNotification использует какой-то Web-сервис для отправки уведомлений. При обращении к этому сервису и произошла ошибка.

 
 
Janis Ozols:

Здравствуйте!

Сегодня ночью советник неоднократно пытался отправить мне push уведомление о критической ситуации на счёте, но потерпел фиаско. Ранее уведомления отправлялись без проблем.

Наутро в журнале я обнаружил множество таких записей:

Если прямо сейчас зайти в настройки терминала, убедиться в том, что галочка "Enable Push Notifications" установлена, поле MetaQuotes ID заполнено и нажать кнопку "Test", то через некоторое время в журнале появляется новая запись:

Тот же результат достигается вызовом функции SendNotification() из скрипта. При этом функция возвращает true, GetLastError() возвращает 0, а на месте SOME_TEXT в журнале печатается текст самого первого уведомления, которое не было отправлено ранее.

Пожалуйста, подскажите, как решить данную проблему? Что может означать [12007] в самой первой записи? Эти цифры остаются постоянными во всех записях. 

Какая у вас версия терминала?

Скорее всего очень старая и мы их давно не поддерживаем. Пуш-сервис развивается и переезжает на новые адреса, про которые древние терминалы не знают.

 
Renat Fatkhullin:

Какая у вас версия терминала?

1170

 
Janis Ozols:

1170

Обновитесь на 1280, пожалуйста.

Это уже не поддерживаемая версия.

 
Renat Fatkhullin:

Обновитесь на 1280, пожалуйста.

Ясно. Спасибо!

UPD: После обновления терминала всё заработало.