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 flash. sms ä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