-
Fortumo Premium SMS-свързаност - техническа спецификация
Premium SMS-свързаност е най-гъвкавия вид услуга на Fortumo. На практика ви позволява да създадете всяка SMS услуга, за която се сетите, но изисква някои знания по програмиране и сървър, където можете да хоствате вашата програма (например под формата на PHP-скрипт).
Когато се получи съобщение към услугата ви, Fortumo ще направи HTTP GET request към URL адреса, който сте указали в настройките на услугата (например http://yourdomain.com/sms.php). Съдържанието, което Fortumo получава от вашето URL (или, по-точно, първите 120 символа от него) се изпраща на клиента като отговор. Параметрите на този HTTP GET request указват телефонния номер на подателя, съдържанието на съобщението и т.н. Можете да използвате тази информация, за да генерирате съобщението за отговор.



-
Параметри
message- Съдържание на съобщението без ключови думи. Ако съобщението е било TXT KEY 123, то този параметър е 123. Параметърът е празен, ако е имало само ключовата дума и никакъв друг допълнителен текст.
sender- Телефонният номер на подателя на съобщението в международен формат, без знака плюс. Например 359888123456 или 40123456700.
country- Държавният код на оператора на подателя. Използват се дву-символни кодове, съгласно стандарта ISO 3166-1 (BG за България, RO за Румъния, SE за Швеция, FI - Финландия, NO - Норвегия, LT - Литва, LV - Латвия, EE - Естония и т.н). Моля, имайте предвид, че това НЕ задължително е истинското местонахождение на изпращача. Например, подателят с шведски телефон може да изпрати съобщение, докато е на роуминг в Норвегия, а вие пак ще имате SE в полето за държава.
price- Крайната клиентска цена на съобщението в местната валута с включен ДДС.
currency- Местният паричен символ, съгласно ISO 4217 (BGN, RON, EUR, SEK, NOK, DKK, LTL, LVL, EEK, USD, GBP и т.н).
service_id- Серия от символи(низ), която разпознава тази услуга на Fortumo. Например f7fa12b381d290e268f99e382578d64a. Ако имате много услуги с един и същи URL адрес, можете да използвате това поле, за да определите, за коя услуга е това съобщение.
message_id- Серия от символи(низ), която е уникална за всяко съобщение, което услугата ви получава.
keyword- Частта от съобщението, наречена ключова дума. Ако съобщението е TXT KEY 123, тогава параметърът е TXT KEY.
shortcode- Краткият номер, до който бе изпратено съобщението
operator- Име на мобилният оператор, с който работи клиента
billing_type- Може да е MO или MT. Научете повече за различните видове таксуване от ЧЗВ секцията наFortumo.
status- Платежен статус, който е
pending,okилиfailed. test- Този параметър е наличен само когато съобщението се изпраща чрез тест интерфейса на Fortumo и стойността му винаги е 'true'.
sig- Поискайте подпис, който можете да проверите, за да сте сигурни, че заявката е произлязла от Fortumo. Погледнете по-долу в частта "Сигурност", за да разберете как.
Обикновено, хората се нуждаят само от
messageи може биsenderпараметри, но за по-специални нужди сме добавили и други.


-
Security
Важно е да се уверите, че скрипта на услугата е извикан от Fortumo, а не някой друг. Има няколко мерки за сигурност, които задоволяват повечето доставчици на услуги:
-
Проверете дали IP адресът на сървърът за заявки, принадлежи към някои от сървърите на Fortumo. Текущите ни IP адреси са 81.20.151.38, 81.20.148.122 и 209.20.83.207. Ще ви уведомим по e-mail когато се променят. В PHP можете да проверите това чрез$_SERVER["REMOTE_ADDR"]променливата. -
Изберете не толкова очевидно име за диркеторията на скрипта. Например http://yourdomain.com/sms.php не е толкова добро като http://yourdomain.com/go850g3oigjrtog/sms.php. -
Проверете дали прикаченият подпис съвпада. Всички заявки са подписват със споделен ключ, известна само на вас и Fortumo. Може да видите ключа на страницата с настройки на услугите. Подписът се добавя катоsigпараметър и се изчислява като md5 резултата от избраните параметри и ключа, слети заедно. Може да направите същата сметка и да проверите дали параметърътsig, който отговаря на зададените критерии съвпада с този, който изчислихте. Вижте PHP примера долу, за да разберете как точно се прави изчислението.
-


-
Sample sms.php
<?php // check that the request comes from Fortumo server if(!in_array($_SERVER['REMOTE_ADDR'], array('81.20.151.38', '81.20.148.122', '209.20.83.207'))) { die("Error: Unknown IP"); } // check the signature $secret = ''; // insert your secret between '' if(!empty($secret) && !check_signature($_GET, $secret)) { die("Error: Invalid signature"); } $sender = $_GET['sender']; $message = $_GET['message']; // do something with $sender and $message $reply = "Thank you $sender for sending $message"; // print out the reply echo($reply); function check_signature($params_array, $secret) { ksort($params_array); $str = ''; foreach ($params_array as $k=>$v) { if($k != 'sig') { $str .= "$k=$v"; } } $str .= $secret; $signature = md5($str); return ($params_array['sig'] == $signature); } ?>
Копирай в клипборда





