Ta emot inkommande SMS

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/accounts/ → Inställningar för inkommande SMS (Se bild nedan)

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"
}

id

Ett unikt ID för det specifika meddelandet.

batchId

Ett ID för alla meddelanden som tagits emot i samma begäran som detta meddelande. Detta är vanligtvis bara ett meddelande.

owner

Konto-ID för SMS-kontot som äger meddelandet.

sender

Avsändar-ID för det inkommande meddelandets upphovsman.

recipient

Mottagaren av meddelandet (t.ex. ditt virtuella nummer).

body

Det inkommande meddelandets innehåll.

direction

Avgör om meddelandet skickades eller mottogs av våra system. Bör alltid vara mo här.

mt  en akronym för mobile terminated.
mo en akronym för mobile originated.

segments

Om det inkommande meddelandet innehåller fler tecken än ett enda sms kan innehålla kommer meddelandet att delas upp i flera sms, även känt som sammanhängande sms. Den här egenskapen anger hur många sms meddelandet behöver skickas.

datacoding

Anger datakodningsschemat som används för att skicka meddelandet i fråga.

priority

Den prioritet som meddelandet skickades i. Prioritet 1 är standard och är den lägsta prioritet som är tillgänglig. Prioritet 2 är högre prioritet.

statuses

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

Inkommande meddelanden har bara en angiven status då den gick in i våra system utifrån. För mer information om våra statuskoder för meddelanden, se avsnittet om statuskoder.

modified

När det inkommande SMS:et senast uppdaterades.

mcc

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

mnc

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

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; }
}