Ta emot inkommande SMS

Förutsättningar

För att kunna ta emot inkommande till vårt system och sedan skicka dem vidare till din callback URL behövs ett virtuellt nummer. Du kan enkelt skaffa ett virtuellt nummer genom att beställa ett av våra abonnemang, eller beställa extratjänsten 11-siffrigt virtuellt nummer i vår webshop.


Beskrivning

Om en callback URL för inkommande SMS anges i kontoinställningarna skickas inkommande SMS-meddelanden till den webbadressen när de är tillgängliga. Innehållet i dessa SMS-meddelanden beskrivs nedan.

Vårt system skickar inkommande SMS med POST och förväntar sig ett svar på 200 OK om SMS:et levereras korrekt. Om någon annan status (dvs. en felstatus) tas emot kommer inkommande SMS att skickas igen vid ett senare tillfälle.

Du hanterar din callback-url i användarportalen: https://portal.ip1.net/ → SMS Inställningar för inkommande SMS


Callback Payload

{
    "id": "5c613848879973045cf39ac4",
    "batchId": "5c613848879973045cf39ac3",
    "owner": "ip1-XXXXX",
    "sender": "46712345678",
    "recipient": "456189040623",
    "body": "Hi my name is earl",
    "direction": "mo",
    "segments": 1,
    "type":"SMS",
    "datacoding": "GSM",
    "priority": 1,
    "statuses": [
        {
            "created": "2018-10-23T17:43:21Z",
            "code": 201,
            "duration": 1
        }
    ],
    "modified": "2018-10-23T17:43:19Z",
    "mcc": "431",
    "mnc": "20"
}

Fält för payload

Fältnamn Typ Beskrivning och Villkor Exempel
id String Det inkommande meddelandets ID.

"id": "5bcf4324ee47dee41a9dbb13"
      
batchId String ID för Det inkommande meddelandets överliggande batch (Meddelanden kan inte existera utan en överliggande batch).

"batchId": "5c613848879973045cf39ac3"
      
batchId String Konto-ID för SMS-kontot som äger meddelandet.

"owner": "ip1-XXXXX"
      
sender String Avsändar-ID för det inkommande meddelandets upphovsman.

"sender": "46712345678"
      
sender String Mottagaren av meddelandet (ditt virtuella nummer).

"recipient": "467612345678"
      
body String Det inkommande meddelandets innehåll.

"body": "Hi my name is earl"
      
direction String Talar om ifall meddelandet skickades eller togs emot av vårt system.
  • MT En akronym för Mobile Terminated, ett meddelande som skickades till en mobil enhet.
  • MO En akronym för Mobile Originated, ett meddelande som skickades från en mobil enhet.

"direction": "mt"
      
segments Integer I de fall meddelandet består av fler tecken än teckengränsen för ett SMS kommer meddelandet att delas upp i flera SMS, även kallat konkatenerade SMS. Den här egenskapen indikerar om hur många SMS som behövs för att kunna skicka meddelandet

    "segments": 1,
      
type String Det finns två typer: sms och flash.
  • sms är ett vanligt SMS.
  • flash är ett meddelande som visas en gång på enheten och sedan raderas.
Standard-typen är sms.

  "type":"SMS"
      
datacoding String Det finns två typer tillgängliga:.
  • gsm: 7-bitars teckenuppsättning (160 tecken/SMS), begränsat antal tecken.
  • flash: 2-byte teckenuppsättning (70 tecken/SMS), tillåter alla tecken (t.ex. emoji).
Om gsm är satt, kommer meddelanden som kräver ucs (utökade tecken) att nekas. Standard är ucs.

"datacoding": "GSM",
      
priority Integer

Används för meddelanden som behöver levereras snabbt. Tillåtna värden är 1 (standard, lägsta) och 2 (högsta).

Att sätta prioritet 2 ökar priset per SMS (10 öre för svenskt konto, € 0.01 för internationellt konto).


"priority": 1
      
statuses Array

En lista bestående av statusuppdateringar.

  • statuses[].created
    • När statusen lades till
  • statuses[].code
    • Den specifika statuskoden. Fler kan läggas till i framtiden
  • statuses[].duration
    • Berättar om detta är den senaste statusuppdateringen eller om det kan komma fler statusuppdateringar

  "statuses": [
      {
          "created": "2018-10-23T17:43:21Z",
          "code": 201,
          "duration": 1
      }
  ],
      
modified String När det inkommande SMS:et senast uppdaterades.

"modified": "2018-10-23T17:43:19Z",
      
mcc String Lands-delen av bladoperatören kan specificeras här om den tillhandahålls av operatören. MCC är en akronym för Mobile Country Code

    "mcc": "431",
      
mnc String Nätverksdelen av bladoperatören kan specificeras här om den tillhandahålls av operatören. MNC är en akronym för Mobile Network Code

    "mcc": "431",
      

Kodexempel

Nedan hittar du ett kodexempel för en callback för inkommande SMS-trafik.

Callback för inkommande SMS C#

[Route("callback")]
[ApiController]
public class CallbackController : ControllerBase
{
    private readonly SqlConnection Connection;

    public CallbackController()
    {
        Connection = new SqlConnection("Connection String");
        Connection.Open();
    }

    [HttpPost("")]
    public ActionResult HandleCallback(IncommingSms request)
    {
        using (SqlCommand cmd = new SqlCommand("INSERT INTO [Messaging].[SmsMessage] ([Sender],[Body]) VALUES (@sender, @body)", Connection))
        {
            cmd.Parameters.AddWithValue("@sender", request.Sender);
            cmd.Parameters.AddWithValue("@body", request.Body);

            int result = cmd.ExecuteNonQuery();
        }

        return Ok();
    }
}

public class IncommingSms
{
    public string Id { get; set; }
    public string BatchId { get; set; }
    public string Owner { get; set; }
    public string Sender { get; set; }
    public string Recipient { get; set; }
    public string Body { get; set; }
    public string Direction { get; set; }
    public int Segments { get; set; }
    public string Type { get; set; }
    public string Datacoding { get; set; }
    public int Priority { get; set; }
    public List Statuses { get; set; }
    public DateTime Modified { get; set; }
    public string Mcc { get; set; }
    public string Mnc { get; set; }
}

public class Status
{
    public DateTime Created { get; set; }
    public int Code { get; set; }
    public int Duration { get; set; }
}