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. |
|
| batchId | String |
ID för Det inkommande meddelandets överliggande batch (Meddelanden kan inte existera utan en överliggande batch). |
|
| batchId | String |
Konto-ID för SMS-kontot som äger meddelandet. |
|
| sender | String |
Avsändar-ID för det inkommande meddelandets upphovsman. |
|
| sender | String |
Mottagaren av meddelandet (ditt virtuella nummer). |
|
| body | String |
Det inkommande meddelandets innehåll. |
|
| direction | String |
Talar om ifall meddelandet skickades eller togs emot av vårt system.
|
|
| 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 |
|
| type | String |
Det finns två typer: sms och flash.
sms.
|
|
| datacoding | String |
Det finns två typer tillgängliga:.
gsm är satt, kommer meddelanden som kräver ucs (utökade tecken) att nekas.
Standard är ucs.
|
|
| priority | Integer |
Används för meddelanden som behöver levereras snabbt. Tillåtna värden är Att sätta prioritet |
|
| statuses | Array |
En lista bestående av statusuppdateringar.
|
|
| modified | String |
När det inkommande SMS:et senast uppdaterades. |
|
| 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
|
|
| 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
|
|
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; }
}