Настройка Callback под агентом и под конкретным клиентом

Callback - это HTTP(S)-уведомление, которое отправляется по факту возникновения события "Изменение состояния заказа".

Часто возникает вопрос "Почему необходимо использовать Callbacks, а нельзя просто выгружать список заказов?".

Дело в том, что Callbacks представляют оптимальный вариант взаимодействия в плане нагрузки на базу данных системы, так как события отправляются только по факту их возникновения и не создается фоновой нагрузки, когда по таймеру идут тяжелые запросы на выгрузку больших порций заказов.

 

Для тестирования Callbacks есть специальный удобный веб-сервис listener.corteos.ru, который умеет отображать отправленные коллбэки и может быть полезен для диагностики и эмуляции реальных событий.

 

  • Разберем настройку этого функционала на стороне агента.

 

Для этого нам нужен пользователь с административной ролью.

После авторизации переходим в пункт меню "Настройки > Настройки Callbacks":

Далее активизируем чекбокс "Callback по заказам":


 Заполняем поле "Url адрес" следующим образом:

https://listener.corteos.ru/home/listen/?action=@ReserveState&order=@id_Reserve&desc=@EventDescription

При желании мы можем провести тестирование нашего Callback при помощи кнопки "Протестировать" в правом верхнем углу портлета:

В открывшемся окне вставляем этот URL и нажимаем кнопку "Тестировать":


 

В случае успешной отправки мы увидим сообщение "Коллбэк протестирован успешно" в верхнем правом углу окна, а в противном случае будет показано сообщение об ошибке.



После тестирования мы можем увидеть следы наших запросов на listener.corteos.ru:



  • Проверим, как это работает на реальном заказе. Для этого сохраним наши настройки Callbacks при помощи кнопки "Сохранить" в нижнем правом углу окна.

Далее под агентом заходим в список заказов:

и в любом тестовом заказе меняем статус. Для этого нам нужно в списке заказов перейти в детали этого заказа:



В правом верхнем углу нажимаем на ссылку с названием статуса и меняем его, например, на "Выполнен":

После этого обновляем страницу listener.corteos.ru (или дожидаемся автоматического обновления), и видим, что нам пришло уведомление об изменении статуса нашего заказа:


Получено url-encoded сообщение такого вида:

action=finished&order=1756996&desc=Состояние заказа изменено на finished

 

Список переменных для отправки Callback можно увидеть на странице с настройками: /Admin/AgentCallbackEditor.

  • @id_Reserve - уникальный системный номер заказа, по которому произошло событие;

  • @id_ComplexReserve - идентификатор командировки;

  • @EventType - тип события (в настоящее время используется только orderstatechanged);

  • @ReserveState - текущее состояние заказа, значение из набора:

    • Creating - создается;

    • Draft - черновик;

    • ReadyForIssuance - готов к оформлению;

    • InProcess - в обработке;

    • Finished - выполнен;

    • Canceled - отменен;

    • Queued - ожидает реакции агента;

    • OnConfirmation - у поставщика;

    • NeedsWork - ожидает реакции клиента;

    • Error - ошибка обработки заказа.

  • @ComplexState - текущее состояние командировки, значение из набора:

    • Draft - черновик;

    • Authorizing - идет авторизация;

    • Cleancopy - чистовик;

    • Forexecution - на исполнении;

    • Canceled - отменена;

    • Finished - завершена.

  • @EventDescription - текстовое описание события;

  • @CallbackId - timestamp сервера, сформированный на момент отправки сообщения.

Скорее всего, в любом Callback нам нужен будет номер заказа (переменная @id_Reserve), при помощи которого мы сможем выгрузить детали заказа по его номеру.



____