Vícenásobné zaslání SMS
Toto API slouží k zaslání více SMS pomocí ProfiSMS (jejich naúčtování je součástí zaslání). Pokud chcete zaslat SMS na více telefonních čísel (všechna nastavení SMS stejná, včetně textu, ale zaslání na více čísel). můžete použít jednodušší API pro zaslání SMS.
Základní popis a tvar API volání a odpovědi najdete popsané samostatně.
Služba
SMS API patří do služby SMS (sms).
Parametry volání API
Volání musí obsahovat všechny základní parametry.
- CTRL
-
Pevná hodnota: sms_multi
- data
-
JSON definující jednotlivé SMS. Jedná se o pole objektů (asociativních polí), kde každý objekt reprezentuje jednu SMS (zasílanou na jedno, či více čísel). Vlastnosti objektu (klíče pole) odpovídají parametrům, které se zadávají při odesílání jedné SMS.
V případě PHP se jak objekt, tak asociativní pole při zakódování do JSON zapíše jako objekt.
Příklady volání API
$login = 'user'; $upassword = md5("passwd"); $call = microtime(true); $password = md5($upassword.$call); // DEFINICE JEDNOTLIVÝCH SMS // pro každou SMS je definován parametr pid, není povinný, ale umožňuje určit, // která odpověď odpovídá které definované SMS $data = array( array( "text" => "http://seznam.cz/", "msisdn" => '605582922', "address" => 'http://test.company.cz/receive.php', "currency" => 'CZK', "type" => 'wappush', "name" => "SEZNAM", "pid" => "f4d505b9e1", ), array( "text" => "příliš žluťoučký kůň úpěl ďábelské ódy, PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY", "msisdn" => '603110000, 531123456,+421905123456,999999999', "split" => 'concat', "source" => 'Company', "currency" => 'CZK', "validity" => 1440, "pid" => "860310b4dd", ), ); // ODESÍLANÉ POST PARAMETRY $post = array( "CTRL" => "sms_multi", "_login" => $login, "_password" => $password, "_service" => "sms", "_call" => $call, "data" => json_encode($data), ); // PRO ODESLÁNÍ POUŽÍJEME CURL, DATA JSOU ZASÍLÁNA POMOCÍ METODY POST // BYLO BY MOŽNÉ ZASÍLAT DATA POMOCÍ METODY GET, ALE DLE DEFINICE // NESMÍ BÝT URL DELŠÍ, NEŽ 2048 ZNAKŮ, COŽ BY V PŘÍPADĚ ODESLÁNÍ // VÍCE SMS MOHLO NASTAT $options = array( CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_URL => "https://api.profisms.cz/index.php?", CURLOPT_FRESH_CONNECT => 1, CURLOPT_RETURNTRANSFER => 1, CURLOPT_FORBID_REUSE => 1, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_POSTFIELDS => $post, ); $ch = curl_init(); curl_setopt_array($ch, $options); $json = curl_exec($ch); curl_close($ch); /* parametr data v poli post, které bude odeslané, vypadá v tomto případě takto: [ { "text":"http:\/\/seznam.cz\/", "msisdn":"605582922", "address":"http:\/\/test.company.cz\/receive.php", "currency":"CZK", "type":"wappush", "name":"SEZNAM", "pid":"f4d505b9e1" } , { "text":"p\u0159\u00edli\u0161 \u017elu\u0165ou\u010dk\u00fd k\u016f\u0148 \u00fap\u011bl \u010f\u00e1belsk\u00e9 \u00f3dy, P\u0158\u00cdLI\u0160 \u017dLU\u0164OU\u010cK\u00dd K\u016e\u0147 \u00daP\u011aL \u010e\u00c1BELSK\u00c9 \u00d3DY", "msisdn":"603110000, 531123456,+421905123456,999999999", "split":"concat", "source":"Company", "currency":"CZK", "validity":1440, "pid":"860310b4dd" } ] */
Z důvodů výkonu není vhodné zasílat více, než 20 SMS najednou.
Odpověď na úspěšný požadavek na API
Základní formát odpovědi naleznete v obecném popisu API.
Popis pole data
Pole data obsahuje objekty odpovídající výsledku volání zaslání jedné SMS, a to celý výsledek.
Parametr key v jednotlivých odpovědích nevalidujte (není proti čemu).
{ "error": { "code":0, "message":"OK" } , "data": [ { "error": { "code":0, "message":"OK" }, "data": { "invalid":[], "sms": [ { "price":2, "pricevat":2.4, "msisdn":"+420605582922", "id":3217649, "state":"queued", "delivery":"nostate", "queued":"2011-01-17 02:41:23", "delivered":"", "part":[45783715] } ], "credit":-150.588, "price":2, "pricevat":2.4, "address":"http:\/\/test.company.cz\/receive.php", "partsCount":1, "pid":"f4d505b9e1" }, "_key":"a79178c9211678df62f2781edf5321f5", "_time":2.5399770736694 }, { "error": { "code":0, "message":"OK" }, "data": { "invalid":["999999999"], "sms": [ { "price":3.4, "pricevat":4.08, "msisdn":"+420603110000", "id":3217653, "state":"queued", "delivery":"nostate", "queued":"2011-01-17 02:41:26", "delivered":"", "part":[45783719, 45783720] }, { "price":4, "pricevat":4.8, "msisdn":"+420531123456", "id":3217654, "state":"queued", "delivery":"nostate", "queued":"2011-01-17 02:41:27", "delivered":"", "part":[45783722, 45783723] }, { "price":5, "pricevat":6, "msisdn":"+421905123456", "id":3217656, "state":"queued", "delivery":"nostate", "queued":"2011-01-17 02:41:27", "delivered":"", "part":[45783724, 45783725] } ], "credit":-165.468, "price":12.4, "pricevat":14.88, "address":"", "partsCount":2, "pid":"860310b4dd" }, "_key":"9fbd13da2f3c88386cd27e8dbdad0925", "_time":3.7670719623566 } ], "_key":"11ac0e94474ad968de664026b0dd8982", "_time":7.2745580673218 }
Odpověď na neúspěšný požadavek na API
Základní formát odpovědi naleznete v obecném popisu API.
Objekt error základní odpovědi definuje platnost požadavku jako takového, nikoliv zda nastala chyba v jedné (či ve všech SMS). V případě, že je požadavek v pořádku, ale k chybě dojde při odesílání jedné ze SMS (či všech), je tato chyba uvedena u konkrétní SMS.
// následný výsledek ukazuje správně provedený požadavek, // odeslání 1. SMS, ale chybu při odesílání 2. (došel kredit na účtu) { "error": { "code":0, "message":"OK" }, "data": [ { "error": { "code":0, "message":"OK" }, "data": { "invalid":[], "sms": [ { "price":2, "pricevat":2.4, "msisdn":"+420605582922", "id":3217649, "state":"queued", "delivery":"nostate", "queued":"2011-01-17 02:41:23", "delivered":"", "part":[45783715] } ], "credit":-150.588, "price":2, "pricevat":2.4, "address":"http:\/\/test.company.cz\/receive.php", "partsCount":1, "pid":"f4d505b9e1" }, "_key":"a79178c9211678df62f2781edf5321f5", "_time":2.5399770736694 }, { "error": { "code":20, "message":"BA_LOW_CREDIT" }, "data": { "invalid":["999999999"], "sms":[], "credit":-182.748, "price":0, "pricevat":0, "address":"", "partsCount":0, "pid":"cb43f72f0c" }, "_time":2.3327369689941 } ], "_key":"302943b04d40d7a8581646c7c149183b", "_time":5.4903519153595 }
Doručenky
Zasílání doručenek respektuje nastavení pro každou SMS, tak, jak je v požadavku. Funguje stejně, jako v případě jedné SMS.