Freigeben über


Senden der Kurz-URL

SMS-Nachrichten sind auf 160 Zeichen beschränkt, was ihre Fähigkeit zum Senden von URLs an Kunden beeinträchtigen kann. URLs können den Grenzwert von 160 Zeichen überschreiten, da sie Abfrageparameter, verschlüsselte Informationen usw. enthalten. Sie können den Azure URL-Verkürzunger verwenden, um kurze URLs zu generieren, die für das Senden über SMS geeignet sind, da sie deutlich unter dem Grenzwert von 160 Zeichen bleiben. 

Dieses Dokument beschreibt den Prozess der Integration von Azure Communication Services in die Azure URL Shortener. Der URL Shortener ist ein Open Source-Dienst, mit dem Sie verkürzte Links ganz einfach erstellen, verwalten und überwachen können.

Beispielcode

Den vollständigen Code für dieses Lernprogramm finden Sie unter Azure Samples GitHub SMS URL Shortener für C#.

Voraussetzungen

Übersicht über die Architektur

In diesem Artikel wird beschrieben, wie Sie Middleware einrichten, um Anforderungen zum Senden von SMS zu koordinieren und URLs über den Azure URL Shortener-Dienst zu kürzen. Sie interagiert mit Azure Communication Services, um den Versand der SMS abzuschließen.

Diagramm zur Architekturübersicht.

Einrichten der Azure-Funktion

Für den Einstieg müssen Sie eine neue Azure-Funktion erstellen. Sie können die Azure-Funktion erstellen, indem Sie die Schritte unter Azure Functions ausführen. Wenn Sie keine Azure-Funktion sondern stattdessen ein anderes Framework verwenden, überspringen Sie diesen Schritt, und fahren Sie mit dem nächsten Abschnitt fort.

Nachdem die Azure-Funktion eingerichtet ist, gehen Sie zur local.settings.json Datei und fügen Sie drei weitere Werte hinzu, die Sie speichern müssen: die Verbindungszeichenfolge für Azure Communication Services, die Telefonnummer wie +15555555555 und einen URL Shortener-Endpunkt, wie etwa https://<Azure_Function_URL>/api/UrlCreate. Diese Variablen sind alle Werte, die Sie am Anfang des Artikels aus den Voraussetzungen generiert haben.


{
    "IsEncrypted": false,
    "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "ACS_CONNECTIONSTRING": "<AZURE COMMUNICATION SERVICES CONNECTION STRING>",
    "ACS_PHONE_NUMBER": "<AZURE COMMUNICATION SERVICES PHONE NUMBER>",
    "URL_SHORTENER": "<URL SHORTENER ENDPOINT>" 
    }
}

Konfigurieren der Abfrageparameter

Nachdem Sie die Azure-Funktion erstellt haben, müssen Sie die Abfrageparameter konfigurieren, die zum Auslösen erforderlich sind. Die Funktion erwartet eine Telefonnummer und eine URL. Die Telefonnummer ist der Empfänger der SMS-Nachricht. Die URL ist der Link, der gekürzt und an den Empfänger gesendet wird.


namespace Company.Function
{
    public static class SendSMSUrlShortener
    {
        [FunctionName("SendSMSUrlShortener")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string phoneNumberTo = req.Query["phoneNumber"]; // get phone number query parameter
            string urlToShorten = req.Query["url"]; // get url to shorten query parameter

            return new OkObjectResult(null);
        }
    }
}

Kürzen der URL

Nachdem Sie nun über die Telefonnummer und die URL verfügen, können Sie den Azure-URL-Verkürzungsdienst verwenden, um die URL zu kürzen. Stellen Sie sicher, dass Sie den Azure URL Shortener-Dienst bereitgestellt haben . Der Dienst enthält mehrere Endpunkte, aber in diesem Tutorial liegt der Fokus auf dem Endpunkt „UrlCreate“. Verwenden Sie die Methode „PostAsync“, um eine POST-Anforderung an den Azure-URL-Verkürzungsdienst mit der URL zu stellen, die Sie kürzen möchten.

Der Dienst gibt ein JSON-Objekt mit der verkürzten URL zurück. Speichern Sie die verkürzte URL in einer Variablen namens „shortUrl“. Fügen Sie im Ausschnitt den Endpunkt Ihres bereitgestellten Azure-URL-Verkürzungsdiensts ein. Informationen zum Abrufen des Endpunkts finden Sie unter Überprüfen der Bereitstellung.

...
using System.Net.Http;
using System.Text.Json;
using System.Text;

namespace Company.Function
{
    public class ShortenedUrl
    {
        public string ShortUrl { get; set; }
    }

    public static class SendSMSUrlShortener
    {
        static string urlShortener = Environment.GetEnvironmentVariable("URL_SHORTENER", EnvironmentVariableTarget.Process);

        [FunctionName("SendSMSUrlShortener")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            //Parse Query Parameters
            string phoneNumberTo = req.Query["phoneNumber"]; // get phone number query parameter
            string urlToShorten = req.Query["url"]; // get url to shorten query parameter
            
            //Get short URL from Azure URL Shortener
            using var client = new HttpClient();
            var requestData = new
            {
                Url = urlToShorten //Body request for the POST call
            };
            var requestBody = JsonSerializer.Serialize(requestData);
            var httpContent = new StringContent(requestBody, Encoding.UTF8, "application/json");
            var response = await client.PostAsync(urlShortener, httpContent); // POST call to the Azure URL Shortener
            var content = await response.Content.ReadAsStringAsync();
            var data = System.Text.Json.JsonSerializer.Deserialize<ShortenedUrl>(content); // Parse content to ShortenedUrl object
            var url = data.ShortUrl;
            log.LogInformation("Shortened URL " + url);

            return new OkObjectResult(null);
        }
    }
}

Senden einer SMS

Nachdem die URL gekürzt wurde, können Sie Azure Communication Services verwenden, um die SMS zu senden. Verwenden Sie die Methode „send“ aus der Klasse „SmsClient“ des Pakets „Azure.Communication.Sms“.


dotnet add package Azure.Communication.Sms

Diese Methode sendet die SMS an die Telefonnummer, die in den Abfrageparametern angegeben ist. Die SMS enthält die verkürzte URL. Weitere Informationen zum Senden von SMS finden Sie unter Senden von SMS.

...
using Azure;
using Azure.Communication;
using Azure.Communication.Sms;

namespace Company.Function
{
    // Class to deserialize URL Shortener response
    public class ShortenedUrl
    {
        public string ShortUrl { get; set; }
    }

    public static class SendSMSUrlShortener
    {
        [FunctionName("SendSMSUrlShortener")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            
            //Parse Query Parameters
            string phoneNumberTo = req.Query["phoneNumber"]; // get phone number query parameter
            string urlToShorten = req.Query["url"]; // get url to shorten query parameter
            
            //Get short URL from Azure URL Shortener
            using var client = new HttpClient();
            var requestData = new
            {
                Url = urlToShorten //Body request for the POST call
            };
            var requestBody = JsonSerializer.Serialize(requestData);
            var httpContent = new StringContent(requestBody, Encoding.UTF8, "application/json");
            string urlShortener = Environment.GetEnvironmentVariable("URL_SHORTENER", EnvironmentVariableTarget.Process); // Ex. https://<Azure Function URL>/api/UrlCreate
            var response = await client.PostAsync(urlShortener, httpContent); // POST call to the Azure URL Shortener
            var content = await response.Content.ReadAsStringAsync();
            var data = System.Text.Json.JsonSerializer.Deserialize<ShortenedUrl>(content); // Parse content to ShortenedUrl object
            var url = data.ShortUrl;
            log.LogInformation("Shortened URL " + url);
            
            //Send SMS with Azure Communication Services
            string connectionString = Environment.GetEnvironmentVariable("ACS_CONNECTIONSTRING", EnvironmentVariableTarget.Process);
            string phoneNumberFrom = Environment.GetEnvironmentVariable("ACS_PHONE_NUMBER", EnvironmentVariableTarget.Process); // Ex. +15555555555
            SmsClient smsClient = new SmsClient(connectionString);            
            SmsSendResult sendResult = smsClient.Send(
                from: phoneNumberFrom,
                to: phoneNumberTo,
                message: "Here is your shortened URL: " + url
            ); // Send SMS message with shortened URL
            
            return new OkObjectResult(sendResult);
        }
    }
}

Lokales Testen

Hinweis

Sie müssen Ihre Telefonnummer überprüfen, damit SMS-Nachrichten mit URLs gesendet werden können. Sobald Ihre Überprüfungsanwendung auf den Status „Ausstehend (ein bis zwei Tage)“ festgelegt ist, muss die Telefonnummer zum Senden von URLs aktiviert werden. Die vollständige Überprüfung dauert fünf bis sechs Wochen. Weitere Informationen zur Überprüfung gebührenfreier Nummern finden Sie unter Häufig gestellte Fragen zur gebührenfreien Überprüfung.

Führen Sie Ihre Azure-Funktion lokal aus, indem Sie in Visual Studio Code F5 drücken oder den folgenden Befehl im Terminal ausführen:

func host start

Verwenden Sie dann ein Tool wie Postman , um Ihre Funktion zu testen, indem Sie eine POST Anforderung an den Endpunkt Ihrer Azure-Funktion senden. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise lokal ausgeführt wird, können Sie eine Anforderung an http://localhost:7071/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success erhalten.

In Azure bereitstellen

Um Ihre Azure-Funktion bereitzustellen, befolgen Sie schritt-für-Schritt-Anweisungen.

Nach der Bereitstellung können Sie über eine ähnliche Methode wie beim lokalen Testen auf die Funktion zugreifen. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise in Azure bereitgestellt wurde, können Sie eine Anforderung an https://<YOUR AZURE FUNCTION NAME>.azurewebsites.net/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success erhalten.

Beispielcode

Den vollständigen Code für dieses Lernprogramm finden Sie unter Azure Samples GitHub SMS URL Shortener für JavaScript.

Voraussetzungen

Übersicht über die Architektur

In diesem Artikel wird beschrieben, wie Sie eine Middleware einrichten, die Anforderungen zum Senden von SMS und die Verkürzung von URLs über den Azure URL Shortener-Dienst koordiniert. Sie interagiert mit Azure Communication Services, um den Versand der SMS abzuschließen.

Diagramm zur Architekturübersicht.

Einrichten der Azure-Funktion

Für den Einstieg müssen Sie eine neue Azure-Funktion erstellen. Sie können die Azure-Funktion erstellen, indem Sie die Schritte in der Azure Functions-Dokumentation ausführen. Wenn Sie keine Azure-Funktion sondern stattdessen ein anderes Framework verwenden, überspringen Sie diesen Schritt, und fahren Sie mit dem nächsten Abschnitt fort.

Nachdem die Azure-Funktion eingerichtet ist, wechseln Sie zu der local.settings.json Datei und fügen Sie drei weitere Werte hinzu, die Sie speichern müssen: die Azure Communication Services-Verbindungszeichenfolge, eine Telefonnummer, wie z.B. +15555555555, und den URL Shortener-Endpunkt, wie z.B. https://<Azure_Function_URL>/api/UrlCreate. Diese Variablen sind alle Werte, die Sie am Anfang dieses Artikels aus den Voraussetzungen generiert haben.


{
    "IsEncrypted": false,
    "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "ACS_CONNECTIONSTRING": "<AZURE COMMUNICATION SERVICES CONNECTION STRING>",
    "ACS_PHONE_NUMBER": "<AZURE COMMUNICATION SERVICES PHONE NUMBER>",
    "URL_SHORTENER": "<URL SHORTENER ENDPOINT>" 
    }
}

Konfigurieren der Abfrageparameter

Nachdem Sie die Azure-Funktion erstellt haben, müssen Sie die Abfrageparameter konfigurieren, die zum Auslösen erforderlich sind. Die Funktion erwartet eine Telefonnummer und eine URL. Die Telefonnummer wird als Empfänger der SMS-Nachricht verwendet. Die URL ist der Link, der gekürzt und an den Empfänger gesendet wird.


const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    //Parse Query Parameters
    let phoneNumber = req.query.phoneNumber; // get phone number query parameter
    let url =  req.query.url; // get url to shorten query parameter

    context.res = {
      // status: 200, /* Defaults to 200 */
      body: null
    };
};

export default httpTrigger;

Kürzen der URL

Nachdem Sie nun über die Telefonnummer und die URL verfügen, können Sie den Azure-URL-Verkürzungsdienst verwenden, um die URL zu kürzen. Stellen Sie sicher, dass Sie den Azure URL Shortener-Dienst bereits bereitgestellt haben. Der Dienst enthält mehrere Endpunkte, aber in diesem Tutorial liegt der Fokus auf dem Endpunkt „UrlCreate“. Verwenden Sie die Methode „fetch“, um eine POST-Anforderung an den Azure-URL-Verkürzungsdienst mit der URL zu stellen, die Sie kürzen möchten.

Der Dienst gibt ein JSON-Objekt mit der verkürzten URL zurück. Speichern Sie die verkürzte URL in einer Variablen namens „shortUrl“. Fügen Sie im Ausschnitt den Endpunkt Ihres bereitgestellten Azure-URL-Verkürzungsdiensts ein. Informationen zum Abrufen des Endpunkts finden Sie unter Überprüfen der Bereitstellung.


const urlShortener = process.env.URL_SHORTENER

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    //Parse Query Parameters    
    let phoneNumberTo = req.query.phoneNumber; // get phone number query parameter
    let urlToShorten =  req.query.url; // get url to shorten query parameter
    
    //Get short URL from Azure URL Shortener
    const body =  JSON.stringify({ "Url": url})
    await fetch(urlShortener, {
      method: 'POST',
      body: body
    })
    .then(res => res.json())
    .then(async data => {
      const shortUrl = data["ShortUrl"]
      context.log(shortUrl)
      }
    })

    context.res = {
      // status: 200, /* Defaults to 200 */
      body: null
    };
};

export default httpTrigger;

Senden einer SMS

Da Sie nun eine kurze URL haben, verwenden Sie Azure Communication Services, um die SMS zu senden. Beginnen Sie mit der Methode „send“ aus der Klasse „SmsClient“ des Pakets „@azure/communication-sms“.


npm i @azure/communication-sms --save

Diese Methode sendet die SMS an die Telefonnummer, die in den Abfrageparametern angegeben ist. Die SMS enthält die kurze URL. Weitere Informationen zum Senden von SMS finden Sie unter Senden von SMS.


import { AzureFunction, Context, HttpRequest } from "@azure/functions"
import { SmsClient }  from "@azure/communication-sms"

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    //Parse Query Parameters
    let to = req.query.phoneNumber; // Get phone number to send SMS to
    let urlToShorten =  req.query.url; // Get URL to shorten

    //Get short URL from Azure URL Shortener
    const body =  JSON.stringify({ "Url": urlToShorten})
    const urlShortener = process.env.URL_SHORTENER
    await fetch(urlShortener, {
      method: 'POST',
      body: body
    })
    .then(res => res.json())
    .then(async data => {
      const url = data["ShortUrl"]
      const connectionString =  process.env.ACS_CONNECTIONSTRING
      const phoneNumberFrom = process.env.ACS_PHONE_NUMBER
      const smsClient = new SmsClient(connectionString);
      // Send the SMS message
      const sendResults = await smsClient.send({
        from: phoneNumberFrom,
        to: [to],
        message: "Join your scheduled appointment here: " + url
      }, {
        enableDeliveryReport: true
      });
      // Use the "successful" property to verify the status.
      for (const sendResult of sendResults) {
        if (sendResult.successful) {
          console.log("Success: ", sendResult);
        } else {
          console.error("Something went wrong when trying to send this message: ", sendResult);
        }
      }
      context.res = {
        // status: 200, /* Defaults to 200 */
        body: url
      };
    })

};

Lokales Testen

Hinweis

Sie müssen Ihre Telefonnummer überprüfen, damit SMS-Nachrichten mit URLs gesendet werden können. Sobald Ihre Überprüfungsanwendung auf den Status „Ausstehend (ein bis zwei Tage)“ festgelegt ist, muss die Telefonnummer zum Senden von URLs aktiviert werden. Die vollständige Überprüfung dauert fünf bis sechs Wochen. Weitere Informationen zur Überprüfung gebührenfreier Nummern finden Sie in den häufig gestellten Fragen zur gebührenfreien Überprüfung.

Wenn Sie Ihre Azure-Funktion lokal ausführen möchten, drücken Sie F5 Visual Studio Code, oder führen Sie den folgenden Befehl im Terminal aus:

func host start

Testen Sie dann mithilfe eines Tools wie Postman Ihre Funktion, indem Sie eine POST Anforderung an den Endpunkt Ihrer Azure-Funktion senden. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise lokal ausgeführt wird, können Sie eine Anforderung an http://localhost:7071/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success erhalten.

In Azure bereitstellen

Informationen zum Bereitstellen Ihrer Azure-Funktion finden Sie in schritt-für-Schritt-Anleitungen.

Nach der Bereitstellung können Sie über eine ähnliche Methode wie beim lokalen Testen auf die Funktion zugreifen. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise in Azure bereitgestellt wurde, können Sie eine Anforderung an https://<YOUR AZURE FUNCTION NAME>.azurewebsites.net/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success erhalten.

Nächste Schritte