{"_id":"5788fe9d915718170054c759","category":{"_id":"56669e857cc81e0d00253f8e","project":"54eb50e5615ffc1900305a16","__v":8,"pages":["568ceacb8a7ca5190039643a","5693a7995f1c951900644b25","5698e793d36db20d00ddba45","56a0ce7441766e0d00b28cf8","56a0d36544f3d80d00a2c242","56a0d3e0aca0730d003e3475","56a5ecf7b91d8d0d008349cc","56d595dba0b5600b000b1e75"],"version":"54eb63b859b1172100334fae","sync":{"url":"","isSync":false},"reference":true,"createdAt":"2015-12-08T09:10:29.254Z","from_sync":false,"order":6,"slug":"omni-channel-messaging","title":"OMNI channel messaging"},"user":"54eb4fdedf7add210007b29b","__v":14,"project":"54eb50e5615ffc1900305a16","parentDoc":null,"version":{"_id":"54eb63b859b1172100334fae","project":"54eb50e5615ffc1900305a16","forked_from":"54eb63a1867e1917009b711d","__v":27,"createdAt":"2015-02-23T17:30:32.501Z","releaseDate":"2015-02-23T17:30:32.501Z","categories":["54eb63b959b1172100334faf","54eb63b959b1172100334fb0","54eb63b959b1172100334fb1","54eb63b959b1172100334fb2","54ed8dd4ab373e2300f50eae","54ed99b2ab373e2300f50ede","55153a6de68daa2f00cff838","551546edbc466623002afe72","5515472ac28d6125001b8884","55154749c28d6125001b8885","555d9b4106dfec0d00d38ea7","5613e06e433e5735007c7708","5624bbb785a31117001c5403","56669e857cc81e0d00253f8e","568b8d837a42220d00498311","56a632277ef6620d00e2f18a","56d8147c3eb4dd0b00201aac","57a9ce2fac6db30e000d7efd","57a9cf4e944ea60e00dc3f74","58172386715dce0f00da4aa0","582dc59ee1b8692300c0dd03","589b19b4fec2730f0082e040","58b04a023529383900a759b5","58b92d1598157a0f004869bf","592e7685c58275000f20174f","59392839e376d4002f8a0474","59393064e376d4002f8a05a1","5947ae0d4005e2000f3a4fec","594a74df1d1de5001ab3517a","5954bc387a147f001b918915"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-07-15T15:17:49.920Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":8,"body":"In the following examples, we'll show you how to configure the PUSH-SMS failover scenario, send your first messages and retrieve message reports. The are three easy steps to follow: \n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"PUSH - SMS OMNI process\",\n  \"body\": \"1. Create an OMNI Scenario\\n2. Send message using an OMNI scenario\\n3. Get Delivery Reports\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"1. Create OMNI scenario\"\n}\n[/block]\nThe first step is to create an  **OMNI scenario**. In the OMNI scenario configuration, you need to define the OMNI steps which will be sequentially executed. The key parameters are the **`channel`** and **`from`**, respectively identifying the communication channels and senders for each communication channel.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Prerequisites\",\n  \"body\": \"To be able to send PUSH messages using Infobip platform please configure your PUSH application and your mobile application using Infobip PUSH SDK as described in the [PUSH documentation](https://dev.infobip.com/v1/docs/push-introduction)\"\n}\n[/block]\nFor PUSH sender (**\"channel\": \"PUSH\"** flow) you should use the **Application Code** created during the setup of the PUSH application, as described in [Create PUSH application](doc:push-introduction-create-app).\n\nBelow is an example showing how to create a scenario with PUSH and SMS steps and the order of those steps in the scenario flow. In the example shown the PUSH **applicationCode** is 233623e3c860b49ec69a464834343481-8bj4el4a-256d-23fd-56ad-b5bc3d568b53.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /omni/1/scenarios HTTP/1.1\\nHost: api.infobip.com\\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\\nContent-Type: application/json\\n\\n{\\n  \\\"name\\\":\\\"My PUSH-SMS scenario\\\",\\n  \\\"flow\\\": [\\n    {\\n      \\\"from\\\": \\\"233623e3c860b49ec69a464834343481-8bj4el4a-256d-23fd-56ad-b5bc3d568b53\\\",\\n      \\\"channel\\\": \\\"PUSH\\\"\\n    },\\n    {\\n      \\\"from\\\": \\\"InfoSMS\\\",\\n      \\\"channel\\\": \\\"SMS\\\"\\n    }    \\n  ],\\n  \\\"default\\\": true\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nResponse:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"key\\\": \\\"AD9E01A5DC7BEE2C2B828D208182A611\\\",\\n  \\\"name\\\":\\\"My PUSH-SMS scenario\\\",\\n  \\\"flow\\\": [\\n    {\\n      \\\"from\\\": \\\"233623e3c860b49ec69a464834343481-8bj4el4a-256d-23fd-56ad-b5bc3d568b53\\\",\\n      \\\"channel\\\": \\\"PUSH\\\"\\n    },\\n    {\\n      \\\"from\\\": \\\"InfoSMS\\\",\\n      \\\"channel\\\": \\\"SMS\\\"\\n    }    \\n  ],\\n  \\\"default\\\": true\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nIf successful, the response header HTTP status code will be `200 OK` and the scenario will be created, as shown in the example bellow. If you try to create the scenario without authorization, you will receive a `401 Unauthorized` error.\n\nThe **`key`** parameter needs to be stored as it will be used when sending the message.\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Info\",\n  \"body\": \"More information about creating an OMNI scenario can be found at the following page: [Scenario: Create](doc:omni-create-scenario) .\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"post\",\n  \"title\": \"2. Send OMNI message\"\n}\n[/block]\nOnce You've created an OMNI scenario (identified by the **`key`** parameter) as described in the previous chapter, you are ready to send your OMNI messages through defined PUSH and SMS communication channels. Firstly, the PUSH message will be sent on the defined phoneNumber. If for some reason the message is rejected on the PUSH application, the message will be sent using the SMS communication channel.\n\nFor having sent OMNI messages, you can use the **advanced** API method. Detailed descriptions about the **advanced** API method can be found here: [OMNI: Send the advanced message](doc:omni-send-advanced-message). \n\nThe parameters that should be set are the scenario key, phoneNumber and specific text for each communication channels, as shown in the below.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /omni/1/advanced HTTP/1.1\\nHost: api.infobip.com\\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\\nContent-Type: application/json\\n\\n{ \\n\\t\\\"scenarioKey\\\":\\\"AD9E01A5DC7BEE2C2B828D208182A611\\\",  \\n  \\\"destinations\\\":[ \\n  \\t{ \\n    \\t\\\"to\\\":{\\n        \\\"phoneNumber\\\": \\\"41793026727\\\"\\n      }\\n    }\\n  ],\\n  \\\"push\\\": {\\n  \\t\\\"text\\\": \\\"This PUSH message will pop up on your mobile device.\\\"\\n  },\\n  \\\"sms\\\": {\\n  \\t\\\"text\\\": \\\"This is the SMS failover message\\\"\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nResponse:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nContent-Type: application/json\\n\\n{   \\n    \\\"messages\\\":[   \\n       {   \\n            \\\"to\\\":{\\n              \\\"phoneNumber\\\": \\\"41793026731\\\"\\n            },\\n            \\\"status\\\":{   \\n                \\\"groupId\\\":0,\\n                \\\"groupName\\\":\\\"ACCEPTED\\\",\\n                \\\"id\\\":0,\\n                \\\"name\\\":\\\"MESSAGE_ACCEPTED\\\",\\n                \\\"description\\\":\\\"Message accepted\\\"\\n            },\\n            \\\"messageId\\\":\\\"9304a5a3ab19-1ca1-be74-76ad87651ed25f35\\\"\\n        }\\n    ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200 OK\"\n    }\n  ]\n}\n[/block]\nIf successful, the response header HTTP status code will be `200 OK` and the message will be sent. If you try to send the message without authorization, you will receive a `401 Unauthorized` error.\n\n##OMNI PUSH message with custom payload\n\nOMNI also supports PUSH custom payload object. Custom payload is additional custom data included in the request and delivered with the PUSH message.\n\nCustom payload request example:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /omni/1/advanced HTTP/1.1\\nHost: api.infobip.com\\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\\nContent-Type: application/json\\n\\n{ \\n\\t\\\"scenarioKey\\\":\\\"AD9E01A5DC7BEE2C2B828D208182A611\\\",  \\n  \\\"destinations\\\":[ \\n  \\t{ \\n    \\t\\\"to\\\":{\\n        \\\"phoneNumber\\\": \\\"41793026727\\\"\\n      }\\n    }\\n  ],\\n  \\\"push\\\": {\\n  \\t\\\"text\\\": \\\"This PUSH message will pop up on your mobile device.\\\",\\n    \\\"customPayload\\\": {\\n    \\t\\\"contentUrl\\\": \\\"https://someurl.com/content\\\",\\n\\t\\t\\t\\\"deepLink\\\": \\\"myApp://some/link\\\"\\n    }\\n  },\\n  \\\"sms\\\": {\\n  \\t\\\"text\\\": \\\"This is the SMS failover message\\\"\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"get\",\n  \"title\": \"3. Get Delivery Reports\"\n}\n[/block]\nOnce You've successfully sent your message using the **advanced** API method you can check the status of sent messages using the [OMNI reports](doc:omni-reports) method. \n\nThe simplest way is to use the method without any query parameters. In that case, the response will contain all the messages sent to a specific account.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"GET /omni/1/reports HTTP/1.1\\nHost: api.infobip.com\\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\\nAccept: application/json\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nThe response will contain all messages, rejected and delivered, as shown in the example below.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nContent-Type: application/json\\n\\n{  \\n   \\\"results\\\":[  \\n      {  \\n         \\\"messageId\\\":\\\"07e03aae-fabc-44ad-b1ce-222e14094d70\\\",\\n         \\\"to\\\":\\\"41793026731\\\",\\n         \\\"messageCount\\\": 1,\\n         \\\"sentAt\\\":\\\"2016-02-23T17:41:11.833+0100\\\",\\n         \\\"doneAt\\\":\\\"2016-02-23T17:41:11.843+0100\\\",\\n         \\\"mccMnc\\\":\\\"22801\\\",\\n         \\\"price\\\":{  \\n            \\\"pricePerMessage\\\":0.0104,\\n            \\\"currency\\\":\\\"EUR\\\"\\n         },\\n         \\\"status\\\":{  \\n            \\\"groupId\\\":2,\\n            \\\"groupName\\\":\\\"UNDELIVERABLE\\\",\\n            \\\"id\\\":9,\\n            \\\"name\\\":\\\"UNDELIVERABLE_NOT_DELIVERED\\\",\\n            \\\"description\\\":\\\"Message sent not delivered\\\"\\n         },\\n         \\\"error\\\":{  \\n            \\\"groupId\\\":1,\\n            \\\"groupName\\\":\\\"HANDSET_ERRORS\\\",\\n            \\\"id\\\":6,\\n            \\\"name\\\":\\\"EC_ABSENT_SUBSCRIBER_SM\\\",\\n            \\\"description\\\":\\\"Absent Subscriber\\\",\\n            \\\"permanent\\\":false\\n         },\\n        \\\"channel\\\": \\\"PUSH\\\"\\n      },\\n      {  \\n         \\\"messageId\\\":\\\"1f21d8d7-f306-4f53-9f6e-eddfce9849ea\\\",\\n         \\\"to\\\":\\\"41793026731\\\",\\n         \\\"sentAt\\\":\\\"2016-06-23T17:40:31.773+0100\\\",\\n         \\\"doneAt\\\":\\\"2016-06-23T17:40:31.787+0100\\\",\\n         \\\"messageCount\\\":1,\\n         \\\"mccMnc\\\":\\\"22801\\\",\\n         \\\"price\\\":{  \\n            \\\"pricePerMessage\\\":0.01,\\n            \\\"currency\\\":\\\"EUR\\\"\\n         },\\n         \\\"status\\\":{  \\n            \\\"groupId\\\":3,\\n            \\\"groupName\\\":\\\"DELIVERED\\\",\\n            \\\"id\\\":5,\\n            \\\"name\\\":\\\"DELIVERED_TO_HANDSET\\\",\\n            \\\"description\\\":\\\"Message delivered to handset\\\"\\n         },\\n         \\\"error\\\":{  \\n            \\\"groupId\\\":0,\\n            \\\"groupName\\\":\\\"OK\\\",\\n            \\\"id\\\":0,\\n            \\\"name\\\":\\\"NO_ERROR\\\",\\n            \\\"description\\\":\\\"No Error\\\",\\n            \\\"permanent\\\":false\\n         },\\n        \\\"channel\\\": \\\"SMS\\\"\\n      }\\n   ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","excerpt":"This page will describe simple methods which will allow you to send messages and retrieve message reports using the PUSH and SMS communication channels.","slug":"omni-channel-push-example","type":"basic","title":"OMNI channel: PUSH example"}

OMNI channel: PUSH example

This page will describe simple methods which will allow you to send messages and retrieve message reports using the PUSH and SMS communication channels.

In the following examples, we'll show you how to configure the PUSH-SMS failover scenario, send your first messages and retrieve message reports. The are three easy steps to follow: [block:callout] { "type": "warning", "title": "PUSH - SMS OMNI process", "body": "1. Create an OMNI Scenario\n2. Send message using an OMNI scenario\n3. Get Delivery Reports" } [/block] [block:api-header] { "type": "basic", "title": "1. Create OMNI scenario" } [/block] The first step is to create an **OMNI scenario**. In the OMNI scenario configuration, you need to define the OMNI steps which will be sequentially executed. The key parameters are the **`channel`** and **`from`**, respectively identifying the communication channels and senders for each communication channel. [block:callout] { "type": "info", "title": "Prerequisites", "body": "To be able to send PUSH messages using Infobip platform please configure your PUSH application and your mobile application using Infobip PUSH SDK as described in the [PUSH documentation](https://dev.infobip.com/v1/docs/push-introduction)" } [/block] For PUSH sender (**"channel": "PUSH"** flow) you should use the **Application Code** created during the setup of the PUSH application, as described in [Create PUSH application](doc:push-introduction-create-app). Below is an example showing how to create a scenario with PUSH and SMS steps and the order of those steps in the scenario flow. In the example shown the PUSH **applicationCode** is 233623e3c860b49ec69a464834343481-8bj4el4a-256d-23fd-56ad-b5bc3d568b53. [block:code] { "codes": [ { "code": "POST /omni/1/scenarios HTTP/1.1\nHost: api.infobip.com\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\nContent-Type: application/json\n\n{\n \"name\":\"My PUSH-SMS scenario\",\n \"flow\": [\n {\n \"from\": \"233623e3c860b49ec69a464834343481-8bj4el4a-256d-23fd-56ad-b5bc3d568b53\",\n \"channel\": \"PUSH\"\n },\n {\n \"from\": \"InfoSMS\",\n \"channel\": \"SMS\"\n } \n ],\n \"default\": true\n}", "language": "json" } ] } [/block] Response: [block:code] { "codes": [ { "code": "{\n \"key\": \"AD9E01A5DC7BEE2C2B828D208182A611\",\n \"name\":\"My PUSH-SMS scenario\",\n \"flow\": [\n {\n \"from\": \"233623e3c860b49ec69a464834343481-8bj4el4a-256d-23fd-56ad-b5bc3d568b53\",\n \"channel\": \"PUSH\"\n },\n {\n \"from\": \"InfoSMS\",\n \"channel\": \"SMS\"\n } \n ],\n \"default\": true\n}", "language": "json" } ] } [/block] If successful, the response header HTTP status code will be `200 OK` and the scenario will be created, as shown in the example bellow. If you try to create the scenario without authorization, you will receive a `401 Unauthorized` error. The **`key`** parameter needs to be stored as it will be used when sending the message. [block:callout] { "type": "info", "title": "Info", "body": "More information about creating an OMNI scenario can be found at the following page: [Scenario: Create](doc:omni-create-scenario) ." } [/block] [block:api-header] { "type": "post", "title": "2. Send OMNI message" } [/block] Once You've created an OMNI scenario (identified by the **`key`** parameter) as described in the previous chapter, you are ready to send your OMNI messages through defined PUSH and SMS communication channels. Firstly, the PUSH message will be sent on the defined phoneNumber. If for some reason the message is rejected on the PUSH application, the message will be sent using the SMS communication channel. For having sent OMNI messages, you can use the **advanced** API method. Detailed descriptions about the **advanced** API method can be found here: [OMNI: Send the advanced message](doc:omni-send-advanced-message). The parameters that should be set are the scenario key, phoneNumber and specific text for each communication channels, as shown in the below. [block:code] { "codes": [ { "code": "POST /omni/1/advanced HTTP/1.1\nHost: api.infobip.com\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\nContent-Type: application/json\n\n{ \n\t\"scenarioKey\":\"AD9E01A5DC7BEE2C2B828D208182A611\", \n \"destinations\":[ \n \t{ \n \t\"to\":{\n \"phoneNumber\": \"41793026727\"\n }\n }\n ],\n \"push\": {\n \t\"text\": \"This PUSH message will pop up on your mobile device.\"\n },\n \"sms\": {\n \t\"text\": \"This is the SMS failover message\"\n }\n}", "language": "json" } ] } [/block] Response: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nContent-Type: application/json\n\n{ \n \"messages\":[ \n { \n \"to\":{\n \"phoneNumber\": \"41793026731\"\n },\n \"status\":{ \n \"groupId\":0,\n \"groupName\":\"ACCEPTED\",\n \"id\":0,\n \"name\":\"MESSAGE_ACCEPTED\",\n \"description\":\"Message accepted\"\n },\n \"messageId\":\"9304a5a3ab19-1ca1-be74-76ad87651ed25f35\"\n }\n ]\n}", "language": "json", "name": "200 OK" } ] } [/block] If successful, the response header HTTP status code will be `200 OK` and the message will be sent. If you try to send the message without authorization, you will receive a `401 Unauthorized` error. ##OMNI PUSH message with custom payload OMNI also supports PUSH custom payload object. Custom payload is additional custom data included in the request and delivered with the PUSH message. Custom payload request example: [block:code] { "codes": [ { "code": "POST /omni/1/advanced HTTP/1.1\nHost: api.infobip.com\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\nContent-Type: application/json\n\n{ \n\t\"scenarioKey\":\"AD9E01A5DC7BEE2C2B828D208182A611\", \n \"destinations\":[ \n \t{ \n \t\"to\":{\n \"phoneNumber\": \"41793026727\"\n }\n }\n ],\n \"push\": {\n \t\"text\": \"This PUSH message will pop up on your mobile device.\",\n \"customPayload\": {\n \t\"contentUrl\": \"https://someurl.com/content\",\n\t\t\t\"deepLink\": \"myApp://some/link\"\n }\n },\n \"sms\": {\n \t\"text\": \"This is the SMS failover message\"\n }\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "get", "title": "3. Get Delivery Reports" } [/block] Once You've successfully sent your message using the **advanced** API method you can check the status of sent messages using the [OMNI reports](doc:omni-reports) method. The simplest way is to use the method without any query parameters. In that case, the response will contain all the messages sent to a specific account. [block:code] { "codes": [ { "code": "GET /omni/1/reports HTTP/1.1\nHost: api.infobip.com\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\nAccept: application/json", "language": "json" } ] } [/block] The response will contain all messages, rejected and delivered, as shown in the example below. [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nContent-Type: application/json\n\n{ \n \"results\":[ \n { \n \"messageId\":\"07e03aae-fabc-44ad-b1ce-222e14094d70\",\n \"to\":\"41793026731\",\n \"messageCount\": 1,\n \"sentAt\":\"2016-02-23T17:41:11.833+0100\",\n \"doneAt\":\"2016-02-23T17:41:11.843+0100\",\n \"mccMnc\":\"22801\",\n \"price\":{ \n \"pricePerMessage\":0.0104,\n \"currency\":\"EUR\"\n },\n \"status\":{ \n \"groupId\":2,\n \"groupName\":\"UNDELIVERABLE\",\n \"id\":9,\n \"name\":\"UNDELIVERABLE_NOT_DELIVERED\",\n \"description\":\"Message sent not delivered\"\n },\n \"error\":{ \n \"groupId\":1,\n \"groupName\":\"HANDSET_ERRORS\",\n \"id\":6,\n \"name\":\"EC_ABSENT_SUBSCRIBER_SM\",\n \"description\":\"Absent Subscriber\",\n \"permanent\":false\n },\n \"channel\": \"PUSH\"\n },\n { \n \"messageId\":\"1f21d8d7-f306-4f53-9f6e-eddfce9849ea\",\n \"to\":\"41793026731\",\n \"sentAt\":\"2016-06-23T17:40:31.773+0100\",\n \"doneAt\":\"2016-06-23T17:40:31.787+0100\",\n \"messageCount\":1,\n \"mccMnc\":\"22801\",\n \"price\":{ \n \"pricePerMessage\":0.01,\n \"currency\":\"EUR\"\n },\n \"status\":{ \n \"groupId\":3,\n \"groupName\":\"DELIVERED\",\n \"id\":5,\n \"name\":\"DELIVERED_TO_HANDSET\",\n \"description\":\"Message delivered to handset\"\n },\n \"error\":{ \n \"groupId\":0,\n \"groupName\":\"OK\",\n \"id\":0,\n \"name\":\"NO_ERROR\",\n \"description\":\"No Error\",\n \"permanent\":false\n },\n \"channel\": \"SMS\"\n }\n ]\n}", "language": "json" } ] } [/block]