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

ukázka 1: Požadavek na zaslaní více SMS (implementace v PHP)
$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).

ukázka 2: Odpověď na požadavek v ukázce 1 (implementace v PHP)
{
  "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.

ukázka 3: Správný požadavek, ale neúspěšné zaslání 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.