SaFi Bank Space : Service: output-delivery-status-manager

Overview

This service exposes callback REST endpoints for Infobip and Macrokiosk to feed their SMS and Viber delivery statuses, and publishes internal messages to related Kafka topics for output-manager to handle SMS failover. It also exposes metrics to Prometheus for delivery reliability analysis.

API

HTTP

https://output-delivery-status-manager.apps.brave.safibank.online/swagger/views/swagger-ui/#

POST /callback/infobip/sms

POST /callback/infobip/viber

GET /callback/macrokiosk/sms

GET /infobip/sms

GET /infobip/sms/{id}

GET /infobip/viber

GET /infobip/viber/{id}

GET /macrokiosk/sms

GET /macrokiosk/sms/{id}

Usage

  • Infobip send delivery statuses of SMS and Viber to /callback/infobip/sms and /callback/infobip/viber respectively

  • Prometheus can retrieve metrics from endpoint /prometheus. The following delivery-specific metrics are available there

# HELP infobip_total_sms_delivered_to_handset_total total number of SMS requests Infobip delivered to customers
# TYPE infobip_total_sms_delivered_to_handset_total counter
infobip_total_sms_delivered_to_handset_total 8.0
# HELP infobip_total_viber_fail_to_deliver_to_handset_total total Viber requests Infobip failed to deliver to customers
# TYPE infobip_total_viber_fail_to_deliver_to_handset_total counter
infobip_total_viber_fail_to_deliver_to_handset_total 0.0
# HELP infobip_total_viber_delivered_to_handset_total total Viber requests Infobip delivered to customers
# TYPE infobip_total_viber_delivered_to_handset_total counter
infobip_total_viber_delivered_to_handset_total 0.0
# HELP kafka_producer_bufferpool_wait_time_ns_total  
# TYPE kafka_producer_bufferpool_wait_time_ns_total gauge
kafka_producer_bufferpool_wait_time_ns_total{client_id="delivery-status-producer",} 0.0
# HELP infobip_per_sms_delivery_time_seconds average time Infobip takes to deliver SMS requests to customers
# TYPE infobip_per_sms_delivery_time_seconds summary
infobip_per_sms_delivery_time_seconds{quantile="0.25",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.5",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.6",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.75",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.8",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.85",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.9",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.95",} 0.0
infobip_per_sms_delivery_time_seconds{quantile="0.99",} 0.0
infobip_per_sms_delivery_time_seconds_count 18.0
infobip_per_sms_delivery_time_seconds_sum 84.993
# HELP infobip_per_sms_delivery_time_seconds_max average time Infobip takes to deliver SMS requests to customers
# TYPE infobip_per_sms_delivery_time_seconds_max gauge
infobip_per_sms_delivery_time_seconds_max 0.0
# HELP infobip_per_viber_delivery_time_seconds_max average time Infobip takes to deliver Viber requests to customers
# TYPE infobip_per_viber_delivery_time_seconds_max gauge
infobip_per_viber_delivery_time_seconds_max 0.0
# HELP infobip_per_viber_delivery_time_seconds average time Infobip takes to deliver Viber requests to customers
# TYPE infobip_per_viber_delivery_time_seconds summary
infobip_per_viber_delivery_time_seconds{quantile="0.25",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.5",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.6",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.75",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.8",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.85",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.9",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.95",} 0.0
infobip_per_viber_delivery_time_seconds{quantile="0.99",} 0.0
infobip_per_viber_delivery_time_seconds_count 0.0
infobip_per_viber_delivery_time_seconds_sum 0.0

# HELP macrokiosk_per_sms_delivery_time_seconds average time Macrokiosk takes to deliver SMS requests to customers
# TYPE macrokiosk_per_sms_delivery_time_seconds summary
macrokiosk_per_sms_delivery_time_seconds{quantile="0.25",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.5",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.6",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.75",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.8",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.85",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.9",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.95",} 0.0
macrokiosk_per_sms_delivery_time_seconds{quantile="0.99",} 0.0
macrokiosk_per_sms_delivery_time_seconds_count 0.0
macrokiosk_per_sms_delivery_time_seconds_sum 0.0
# HELP macrokiosk_per_sms_delivery_time_seconds_max average time Macrokiosk takes to deliver SMS requests to customers
# TYPE macrokiosk_per_sms_delivery_time_seconds_max gauge
macrokiosk_per_sms_delivery_time_seconds_max 0.0
  • other users/callers can use REST endpoints to query delivery status details; e.g: time cost in milliseconds, money or failure reason and so on.