Skicka SMS

Endpoint

Endpoint: POST /v2/batches

Skicka ett eller flera SMS

Anropsdata-typ

I sin kärna behöver enpointen för Skicka SMS följande värden:

{
    "sender": "iP1",
    "recipients":[
        "456189040623",
        "175368927054",
        "392094880589",
        "568798567631"
    ],
    "body": "A very nice message",
}

Dessa värden kommer att direkt att skicka ett meddelande till varje mottagare med meddelande-texten “A very nice message”. Avsändaren på meddelandet kommer att vara “Testnos”

sender

Ett Anrop kommer att avslås om Sender:

  • Består av ett nummer som är längre än 15 siffror
  • Består av en alfanumerisk avsändare med mindre än 3 tecken eller större än 11 tecken (Aa-Zz, 0 – 9, 3 – 11 tecken)
  • Inte matchar regex [0-9A-Za-z]{1,11} eller om den inte följer standarden E164

Ett meddelande kanske inte når mottagaren om:

  • Operatören där mottagare står registrerad inte stöder avsändaren.

recipients

Ett Anrop kommer att avslås om Recipients:

  • Är längre än 15 siffror
  • Innehåller andra tecken än siffror

Telefonnumer måste skrivas i formatet MSISDN. Varje telefonnummer analyseras och valideras där resultatet visas som en status för meddelandet. Om detta steg misslyckas skickas inte meddelandet.

body

Ett anrop kommer att misslyckas om Body:

  • Är null, tomt eller enbart består av blanksteg
  • Är längre än 2000 tecken

Extended

Vissa kan kräva ytterligare funktioner som mallar, schemalagd sändning, leveransrapporter och att ställa in sin egen referens.

{
    "sender": "iP1",
    "recipients":{
        "456189040623": {
            "sign": "sent by Bob"
        },
        "175368927054": {},
        "392094880589": {},
        "568798567631": {},
        "default":{
            "sign": " sent by iP.1"
        }
    },
    "body": "A very nice message{sign}",
    "type": "sms",
    "datacoding": "gsm",
    "priority": 1,
    "deliveryWindows": [
        {
            "opens": "ISO-8601 string",
            "closes": "ISO-8601 string"
        },
        {
            "opens": "ISO-8601 string",
            "closes": "ISO-8601 string"
        }
    ],
    "deliveryReportUrl": "https://api.example.com/sms/deliveryreport",
    "reference": "A client reference",
    "tags": ["marketing", "ux", "design"]
}

recipients – templating

För att använda vårt mallsystem måste du konvertera din tidigare mottagar-array till en dictionary av dictionaries. Övrenivå-nyckeln är mottagarens MSISDN (telefonnummer). Andranivå-nyckeln eftersöks sedan i texten och ersätts med andranivå-värdet.

type

Det finns två typer som ett SMS kan ha: sms och flashsms är ett vanligt SMS medan flash är ett meddelande som visas en gång på enheten och sedan raderas. Standard-typen är sms.

datacoding

Det finns två typer tillgängliga:

  • gsm är en 7-bitars teckenuppsättning som gör att ett SMS kan vara 160 tecken långt men med ett begränsat antal tecken att välja mellan.
  • ucs är en 2-byte teckenuppsättning som tillåter alla tecken (såsom emoji, kanji etc) men sänker teckenbeloppet till 70 tecken per SMS.

Om gsm är satt, kommer alla meddelanden som kräver den utökade teckenuppsättningen av ucs att nekas från att skickas. Standard är ucs.

priority

I fall det är ett viktigt att ditt meddelande levereas snabbt och ohindrat från andra i meddelande-kön kan du sätta en högre prioritet på ditt meddelande. Observera att om du sätter en högre prioritet så ökar priset per SMS med 10 öre om du använder ett svenskt konto, eller € 0.01 om du använder ett internationellt konto. Prioritet 1 är standard värdet och även det lägsta tillgängliga värdet, medan prioritet 2 är det högsta tillgänglia värdet. Om prioritet sätts så är 1 och 2 är de enda tillåtna värdena.

deliveryWindows

I de fall där det är nödvändigt att schemalägga ett utskick finns möjligheten att göra så genom våra leverans-tidsfönster.

Du kan ha så många fönster du vill. Detta tillåter dig att skicka meddelanden under specifika tider över flera dagar, exempelvis varje dag mellan 10:00 och 10:15 på arbetsdagar.

Parsing

  • null i fältet opens kommer att ersättas med aktuellt datum och tid
  • Om closes är null kommer fältet att sättas till 7 dagar (168 timmar) efter fältet opens

Anropet kommer att avslås om tidsfönster överlappar varandra.

Om inget fönster anges kommer det automatisk att skapas ett fönster med tillämpade regler som nämns ovan.

deliveryReportUrl

Om detta tillhandahålls kommer rapporter med statusuppdateringar att skickas till denna URL genom metoden POST. Dessa rapporter är separerade för varje mottagare i ett meddelande och för varje status-uppdatering. Om du vill läsa mer om dessa rapporter kan du göra det på avsnittet Leveransrapporter.

reference

Detta är en egenskap som tillåter användaren att sätta ett eget ID eller referens om lagring av standard-genererade ID´n ogillas.

Restriktioner

  • Får bestå av max 40 tecken
  • Får inte bestå av en tom string, eller blanksteg

null är standardvärde.

tags

En array av taggar som används för att kategorisera eller sortera bland dina bastcher. När du listar dina batcher kan du filtrera efter dessa.

Response

Om anropet blir accepterat kommer API:et att returnera en sammanfattning för batchen, som sedan går att hitta genom den specifierade platsen som anges i batchens location-header. Detta kan du läsa mer om i avsnitet Läs Batcher.

Vi returnerar våra API-svar innan vi har säkerställt att kontots finannsiella täckning har bekräftats, vilket betyder att en pris-sammanfattning kan utebli.

Kodexempel

Nedan hittar du ett enkelt kodexempel med autentisering och funktionalitet för att skicka ett SMS.

Skicka ett SMS i C#

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("https://api.ip1sms.com/v2/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "API Key");

    var sms = new OutgoingSMS()
    {
        Sender = "iP1",
        Recipients = new List<string>() { "46712345678" },
        Body = "Test message rest v2",
        Type = "sms",
        Datacoding = "gsm",
        Priority = 1,
        Reference = "Test",
        Tags = new List<string>() { "Test SMS" }
    };

    HttpResponseMessage response = await client.PostAsJsonAsync("batches", sms);

    if (response.IsSuccessStatusCode)
    {
        Console.WriteLine("Sent");
    }
    else
    {
        Console.WriteLine("Failed, " + response.StatusCode + ": " + await response.Content.ReadAsStringAsync());
    }
}
    
public class OutgoingSMS
{
    public string Sender { get; set; }
    public List<string> Recipients { get; set; }
    public string Body { get; set; }
    public string Type { get; set; }
    public string Datacoding { get; set; }
    public int Priority { get; set; }
    public string Reference { get; set; }
    public List<string> Tags { get; set; }
}

Skicka ett SMS i PHP

$conf = array(
    'password' => 'API key',
    'apiUrl' => 'api.ip1sms.com/v2/',
    'method' => 'POST',
    'endpoint' => 'batches',
);

$message = array(
    "sender" => "iP1",
    "recipients" => ["46712345678"],
    "body" => "Test message rest v2",
    "type" => "sms",
    "datacoding" => "gsm",
    "priority" => 1,
    "reference" => "Test",
    "tags" => ["Test SMS"],
);

$jsonEncodedMessage = json_encode($message);
// Set up request options
$options = array(
    'http' => array(
        'header'  => array(
            'Content-Type: application/json',
            'Authorization: Bearer '.$conf['password'],
            'Content-Length: ' . strlen($jsonEncodedMessage)
        ),
        'method'  => $conf['method'],
        'content' => $jsonEncodedMessage,
    )
);

$url = "https://" . $conf['apiUrl'] . $conf['endpoint'];
$context  = stream_context_create($options);
// Send the request
$response = file_get_contents($url, false, $context);
// Print the response
echo $response;

Skicka ett SMS i Visual Basic

Imports System.Net.Http
Imports System.Net.Http.Headers
Imports System.Net.Http.Json

Module Module1
    Sub Main()
        Dim client As New HttpClient()

        client.BaseAddress = New Uri("https://api.ip1sms.com/v2/")
        client.DefaultRequestHeaders.Accept.Clear()
        client.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json"))
        client.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Bearer", "API Key")

        Dim sms As New OutgoingSMS()
        sms.Sender = "iP1"
        sms.Recipients = New List(Of String)() From {"46712345678"}
        sms.Body = "Test message rest v2"
        sms.Type = "sms"
        sms.Datacoding = "gsm"
        sms.Priority = 1
        sms.Reference = "Test"
        sms.Tags = New List(Of String)() From {"Test SMS"}

        Dim response As HttpResponseMessage = client.PostAsJsonAsync("batches", sms).Result

        If response.IsSuccessStatusCode Then
            Console.WriteLine("Sent")
        Else
            Console.WriteLine("Failed, " & response.StatusCode.ToString() & ": " & response.Content.ReadAsStringAsync().Result)
        End If
    End Sub
End Module

Public Class OutgoingSMS
    Public Property Sender As String
    Public Property Recipients As List(Of String)
    Public Property Body As String
    Public Property Type As String
    Public Property Datacoding As String
    Public Property Priority As Integer
    Public Property Reference As String
    Public Property Tags As List(Of String)
End Class