Ingen treff

Leveringsbekreftelser og innkommende SMS

Hva som kommer til adressen din

BulkGate rapporterer to ting tilbake til deg: hvordan det gikk med meldingene du har sendt, og hva folk svarte. Begge deler kommer som en HTTP-forespørsel til adressen du har angitt.

Hva som kommer Slik kjenner du det igjen
Leveringsrapport Parameteren status med en statuskode og smsID for den sendte meldingen
Innkommende SMS eller svar Parameteren status med verdien 10, avsenderen i from og teksten i message

Forespørselen kommer via HTTP GET, så du finner verdiene i query-strengen.

Tips

Ved store volumer lønner massevarianten seg: i stedet for én forespørsel per melding kommer én enkelt POST-forespørsel med en matrise av poster i JSON. Den er beskrevet på Leveringsbekreftelser for masseutsendinger.

Hvor adressen angis

Du angir adressen selv i detaljene for applikasjonen din — på fanen Innstillinger, i delen Web hooks, på kortet Leveringsrapporter. Feltet URL-leveringsrapporter i vinduet som åpnes, tar imot en adresse som begynner med http:// eller https://.

Innstillingsvinduet for leveringsrapporter med massesending slått av

Viktig

La avmerkingsboksen Bulk DLRs - bulk forespørsel være av — med den går leveringen over til grupper sendt via POST, og da gjelder Leveringsbekreftelser for masseutsendinger i stedet.

Hele fremgangsmåten med de øvrige alternativene er beskrevet på siden Webhooks.

Parametere i leveringsrapporten

Parameter Verdi
status Statuskoden for meldingen — se leveringsstatuser
smsID Den unike ID-en til meldingen
price Prisen på meldingen i kreditter
channel Kanalen meldingen gikk gjennom (sms, viber, whatsapp, rcs og andre)
date Tidspunktet for sending og levering atskilt med semikolon, i tidssonen CET

Verdien date har formen YYMMDDHHMM;YYMMDDHHMM — for eksempel betyr 1812141317;1812141318 sendt 14. desember 2018 kl. 13.17 og levert ett minutt senere.

Parametere for innkommende meldinger

Når status har verdien 10, er dette ikke en leveringsrapport, men en melding fra mottakeren. Den kommer med et annet sett parametere:

Parameter Verdi
status Alltid 10
from Avsenderens telefonnummer
to Mottakerens telefonnummer, altså ditt nummer
message Teksten i meldingen i UTF-8
channel Kanalen meldingen kom gjennom
smsdetails Detaljer, blant annet protokollen som ble brukt og tidspunktet for mottak

Leveringsstatuser

Kode Betydning
1 Meldingen ble levert
2 Meldingen står i kø hos operatøren — mottakeren er utilgjengelig for øyeblikket, og leveringen vil bli forsøkt på nytt
3 Meldingen kunne ikke leveres — mottakeren er ukjent eller permanent utilgjengelig
10 En innkommende melding eller et svar, ikke en leveringsrapport
13 Meldingen ble lest (bare Viber)
Merk

Status 2 er ikke endelig — senere kommer en ny forespørsel med den endelige statusen for den samme meldingen. Regn med å se den samme smsID mer enn én gang.

Et eksempel på behandling

Skriptet skiller en leveringsrapport fra en innkommende melding etter status og skriver hver av dem til sin egen logg:

<?php declare(strict_types=1); const STATUS = [ 1 => 'levert', 2 => 'i kø hos operatøren', 3 => 'ikke levert', 13 => 'lest', ]; $status = filter_input(INPUT_GET, 'status', FILTER_VALIDATE_INT); function log_line(string $file, string $message): void { file_put_contents( __DIR__ . "/$file.log", '[' . date('Y-m-d H:i:s') . '] ' . $message . PHP_EOL, FILE_APPEND ); } if ($status === 10) // en innkommende melding { $from = filter_input(INPUT_GET, 'from') ?? ''; $message = filter_input(INPUT_GET, 'message') ?? ''; log_line('inbox', sprintf('Fra: [%s] Melding: [%s]', $from, $message)); } else if (isset(STATUS[$status])) // en leveringsrapport { $sms_id = filter_input(INPUT_GET, 'smsID') ?? ''; $price = filter_input(INPUT_GET, 'price', FILTER_VALIDATE_FLOAT) ?: 0.0; log_line('delivery', sprintf('Melding [%s]: %s, pris %.4f', $sms_id, STATUS[$status], $price)); } else { http_response_code(400); exit; }
Advarsel

Adressen må svare raskt og med statuskoden 200. Treg eller feilende behandling forsinker leveringen av flere rapporter — legg derfor tungt arbeid i en kø og bekreft forespørselen med en gang.

Var denne siden nyttig?