Добро пожаловать в Infobip инструкцию по созданию вашего собственного SMS веб-приложения для начинающих. Мы поможем вам шаг за шагом пройти через сложности установки SMS API от Infobip и SMS-сервисов. Инструкция включает 3 примера важнейших опций для отправки SMS-сообщений и проверки их статуса:
Мы начнем с примеров и презентаций, чтобы вы могли выбрать то, что вам наиболее интересно.
Чтобы следовать данной инструкции, писать и тестировать все самостоятельно, вам необходимо подготовиться (и мы не имеем в виду налить чашку кофе и погасить свет). Чтобы отправлять сообщения, получать логи и отчеты по доставке сообщений, вам необходимо установить сURL php расширение для вашего веб-сервера.
Для работы с этой инструкцией вы можете использовать решение из стека AMP (wamp, xampp или др.). Этот стек для ПО по различным ОС состоит из веб-сервера Apache, базы данных MySQL и поддержки языка программирования PHP. В любом случае вы должны установить расширение phpcurl.
Примечание: для безопасной отправки SMS сообщений, эти примеры при запуске должны быть размещены на HTTPS (используя TLS). Для упрощения инструкции, мы использовали HTTP.
Страница текстовых сообщений (advancedSms.php) содержит форму для отправки сообщений. Кнопка подтверждения отправит запрос в атрибут действия формы. В данном примере она отправит его себе.
Прежде чем начать изменять значения, вы должны проверить, правильно ли вы их установили. В этом примере мы проверили только поле “toInput” Вам не нужно проверять их все, потому что метод POST HTTP будет устанавливать все автоматически (если какое-либо из полей ввода пустое, его значение будет пустой строкой). Если вы загружаете страницу в первый раз, имейте в виду, что ни одно из этих полей не будет присутствовать. Мы находимся всего в двух шагах от создания всей страницы. После проверки полей необходимо определить URL для отправки запроса, а также тело запроса которое будет отправлено. Тело запроса POST будет представлено в виде строки JSON. Формирование тела запроса будет выглядеть следующим образом:
В примере сообщение отправляется только одному реципиенту. Если вы хотите отправить это сообщение по нескольким адресам, все что вам нужно сделать — это создать другой объект назначения и добавить его в список получателей.
Поскольку «to» является единственным обязательным полем, вам необходимо проверить заполнено ли оно перед отправкой запроса. Если его заполнение будет пропущено, то пользователь получит сообщение о незаполненном поле.
Для отправки запроса мы выбираем cURL.
В приведенном коде мы использовали много вариантов для создания запроса, которые инициализируются curl_init():
Когда вы установите все параметры, необходимо выполнить запрос curl_exec($ch). Этот метод даст вам ответ, который вы можете получить в JSON и который сможете использовать в будущем анализе. После выполнения запроса, вы получите информацию о коде ответа HTTP, которую мы будем использовать позже в этой инструкции -curl_getinfo($ch, CURLINFO_HTTP_CODE).
Если все прошло правильно, и вы получили код ответа HTTP (200 ОК 201 CREATED, и т.д.), вы можете извлечь необходимую информацию из тела ответа и представить ее пользователю. В нашем примере мы решили представить: Message ID, To, SMS Count, Status Group, Status Group Name, Status ID, Status Name и Status Description, но вы можете выбрать то, что вам необходимо.
В цикле foreach представленном ниже, будет показан ответ в одну строку для каждого сообщения:
При выборе этой опции, открывается страница logs.php с формой ввода для получения логов отправленных сообщений. Кнопка подтверждения опубликует эти поля к себе.
logs.php это страница, где будут представлены логи отправленных сообщений. Вы должны определить URL для отправки запроса with sent message logs endpoint, and send a request to it with GET HTTP method this time (CURLOPT_HTTPGET option set to TRUE):
После выполнения запроса — culr_exec($curl), и получения кода ответа HTTP, вы можете начать анализ тела в зависимости от необходимого поля кода отклика, аналогично тому, что мы делали в главе о полнофункциональных текстовых сообщениях.
Если все прошло правильно, и вы получили код ответа HTTP (200 ОК 201 CREATED, и т.д.), вы можете извлечь необходимую информацию из тела ответа и представить ее пользователю. В нашем примере мы выбрали: Message ID, To, From, Text, Status Group Name, Status Description и Sent At, но вы можете выбрать то, что вам необходимо, точно также, как и до этого:
Следующий цикл foreach будет составлен по каждому полю массива логов отправленных сообщений и вписан в одну строку с соответствующими столбцами в ней. В этом случае цикл foreach по каждому полю необходим, потому что мы запросили его для всех логов сообщений.
В исключительных случаях вы можете проанализировать тело запроса точно так же, как мы делали в методе отправки сообщений:
Эта функция немного отличается от предыдущих двух — страница dlrPush.php не используется для запроса данных, она ждет его. Когда данные «выталкивается» на эту страницу, они могут быть проанализированы и показаны пользователю соответствующим образом.
Примечание: отчеты о доставке «проталкиваются» со страницы полнофункциональных текстовых сообщений, вводя URL этой страницы в поле Notify URL. Кроме того, заполняется поле Notify ContentType, с помощью которого страница определяет, какой тип тела необходимо получить.
Код выше показывает, что file_get_contents('php://input') используется для получения необработанных данных POST в виде строки. Дальше строки показывают вам как проверить данные, предоставляемые в XML или JSON, и как извлечь отчеты о доставке. Для XML мы анализируем начинается ли строка тела ответа с, и если нет, то попробуйте расшифровать его без ошибок — функция — isJson() Если все условия равны FALSE, переменная $result остается неустановленной. Это означает, что мы должны сказать пользователю, что отчет о доставке не был опубликован на сервере обратного вызова.
Анализ отчетов о доставке очень похож на анализ ответа полнофункциональных текстовых сообщений и логов отправленных сообщений, за исключением того, что мы не проверяем код ответа HTTP (потому что ответа нет вовсе). Все, что мы должны сделать — это выбрать, какую информацию из отчета о доставке мы хотим показать, и записать ее на странице.
- Полнофункциональные текстовые сообщения
- Логи отправленных сообщений
- Отчеты по доставке в Notify URL
Мы начнем с примеров и презентаций, чтобы вы могли выбрать то, что вам наиболее интересно.
Чтобы следовать данной инструкции, писать и тестировать все самостоятельно, вам необходимо подготовиться (и мы не имеем в виду налить чашку кофе и погасить свет). Чтобы отправлять сообщения, получать логи и отчеты по доставке сообщений, вам необходимо установить сURL php расширение для вашего веб-сервера.
Для работы с этой инструкцией вы можете использовать решение из стека AMP (wamp, xampp или др.). Этот стек для ПО по различным ОС состоит из веб-сервера Apache, базы данных MySQL и поддержки языка программирования PHP. В любом случае вы должны установить расширение phpcurl.
Примечание: для безопасной отправки SMS сообщений, эти примеры при запуске должны быть размещены на HTTPS (используя TLS). Для упрощения инструкции, мы использовали HTTP.
Полнофункциональные текстовые сообщения
Страница текстовых сообщений (advancedSms.php) содержит форму для отправки сообщений. Кнопка подтверждения отправит запрос в атрибут действия формы. В данном примере она отправит его себе.
Построение запроса
Прежде чем начать изменять значения, вы должны проверить, правильно ли вы их установили. В этом примере мы проверили только поле “toInput” Вам не нужно проверять их все, потому что метод POST HTTP будет устанавливать все автоматически (если какое-либо из полей ввода пустое, его значение будет пустой строкой). Если вы загружаете страницу в первый раз, имейте в виду, что ни одно из этих полей не будет присутствовать. Мы находимся всего в двух шагах от создания всей страницы. После проверки полей необходимо определить URL для отправки запроса, а также тело запроса которое будет отправлено. Тело запроса POST будет представлено в виде строки JSON. Формирование тела запроса будет выглядеть следующим образом:
В примере сообщение отправляется только одному реципиенту. Если вы хотите отправить это сообщение по нескольким адресам, все что вам нужно сделать — это создать другой объект назначения и добавить его в список получателей.
Поскольку «to» является единственным обязательным полем, вам необходимо проверить заполнено ли оно перед отправкой запроса. Если его заполнение будет пропущено, то пользователь получит сообщение о незаполненном поле.
Для отправки запроса мы выбираем cURL.
В приведенном коде мы использовали много вариантов для создания запроса, которые инициализируются curl_init():
- CURLOPT_URL — установка URL с помощью метода конечной точки в нем
- CURLOPT_HTTPHEADER — установка типа контента и заголовка запроса
- CURLOPT_HTTPAUTH, CURLOPT_USERPWD — тип авторизации, имя пользователя и пароль
- CURLOPT_POST — используемый HTTP метод — POST
- CURLOPT_POSTFIELDS — заранее созданная XML или JSON структурированная строкаt
- Здесь вы можете ознакомиться с другими cURL опциями отправки.
Когда вы установите все параметры, необходимо выполнить запрос curl_exec($ch). Этот метод даст вам ответ, который вы можете получить в JSON и который сможете использовать в будущем анализе. После выполнения запроса, вы получите информацию о коде ответа HTTP, которую мы будем использовать позже в этой инструкции -curl_getinfo($ch, CURLINFO_HTTP_CODE).
Анализ ответа
Если все прошло правильно, и вы получили код ответа HTTP (200 ОК 201 CREATED, и т.д.), вы можете извлечь необходимую информацию из тела ответа и представить ее пользователю. В нашем примере мы решили представить: Message ID, To, SMS Count, Status Group, Status Group Name, Status ID, Status Name и Status Description, но вы можете выбрать то, что вам необходимо.
В цикле foreach представленном ниже, будет показан ответ в одну строку для каждого сообщения:
Логи отправленных сообщений
При выборе этой опции, открывается страница logs.php с формой ввода для получения логов отправленных сообщений. Кнопка подтверждения опубликует эти поля к себе.
Построение запроса
logs.php это страница, где будут представлены логи отправленных сообщений. Вы должны определить URL для отправки запроса with sent message logs endpoint, and send a request to it with GET HTTP method this time (CURLOPT_HTTPGET option set to TRUE):
После выполнения запроса — culr_exec($curl), и получения кода ответа HTTP, вы можете начать анализ тела в зависимости от необходимого поля кода отклика, аналогично тому, что мы делали в главе о полнофункциональных текстовых сообщениях.
Анализ ответа
Если все прошло правильно, и вы получили код ответа HTTP (200 ОК 201 CREATED, и т.д.), вы можете извлечь необходимую информацию из тела ответа и представить ее пользователю. В нашем примере мы выбрали: Message ID, To, From, Text, Status Group Name, Status Description и Sent At, но вы можете выбрать то, что вам необходимо, точно также, как и до этого:
Следующий цикл foreach будет составлен по каждому полю массива логов отправленных сообщений и вписан в одну строку с соответствующими столбцами в ней. В этом случае цикл foreach по каждому полю необходим, потому что мы запросили его для всех логов сообщений.
В исключительных случаях вы можете проанализировать тело запроса точно так же, как мы делали в методе отправки сообщений:
Отчеты о доставке в Notify URL
Эта функция немного отличается от предыдущих двух — страница dlrPush.php не используется для запроса данных, она ждет его. Когда данные «выталкивается» на эту страницу, они могут быть проанализированы и показаны пользователю соответствующим образом.
Примечание: отчеты о доставке «проталкиваются» со страницы полнофункциональных текстовых сообщений, вводя URL этой страницы в поле Notify URL. Кроме того, заполняется поле Notify ContentType, с помощью которого страница определяет, какой тип тела необходимо получить.
Получение отчетов по доставке
Код выше показывает, что file_get_contents('php://input') используется для получения необработанных данных POST в виде строки. Дальше строки показывают вам как проверить данные, предоставляемые в XML или JSON, и как извлечь отчеты о доставке. Для XML мы анализируем начинается ли строка тела ответа с, и если нет, то попробуйте расшифровать его без ошибок — функция — isJson() Если все условия равны FALSE, переменная $result остается неустановленной. Это означает, что мы должны сказать пользователю, что отчет о доставке не был опубликован на сервере обратного вызова.
Анализ результатов
Анализ отчетов о доставке очень похож на анализ ответа полнофункциональных текстовых сообщений и логов отправленных сообщений, за исключением того, что мы не проверяем код ответа HTTP (потому что ответа нет вовсе). Все, что мы должны сделать — это выбрать, какую информацию из отчета о доставке мы хотим показать, и записать ее на странице.
Комментарии (4)
Akuma
10.10.2017 17:21+1Вставьте код кодом. Не издевайтесь над глзами читающих, картинка же еще и ужимается.
Rastishka
Эта статья какого
годавека?Invision70
Кажется 2004